Skip to content

Commit cfd3b71

Browse files
authored
Fix FastDbg builds (#6770)
* Actually pr-test fastdbg * Set embedfile msvc runtime * Restructure toolchain files so that embedfile is also built accordingly * Conditional AFXDLL * Set iterator level globally
1 parent d76f383 commit cfd3b71

7 files changed

Lines changed: 12 additions & 22 deletions

File tree

.github/workflows/test-pull_request.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
build_windows:
7777
strategy:
7878
matrix:
79-
configuration: [Debug, Release]
79+
configuration: [Debug, FastDebug, Release]
8080
compiler: [MSVC]
8181
arch: [Win32, x64]
8282
name: Windows

CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
88
endif()
99

1010
include(cmake/util.cmake)
11-
include(cmake/embed_file.cmake)
1211

1312
# Set a few policies
1413
set_policy(CMP0051 NEW)
1514
set_policy(CMP0053 NEW)
1615
set_policy(CMP0054 NEW)
16+
set_policy(CMP0091 NEW) # Enable use of CMAKE_MSVC_RUNTIME_LIBRARY
1717

1818
SET(FSO_PROJECT_DESCRIPTION "Open source project based on the original FreeSpace 2 source code.")
1919

@@ -57,6 +57,9 @@ LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/finder")
5757
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/rpavlik-cmake-modules")
5858
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/cotire")
5959

60+
INCLUDE(toolchain)
61+
include(embed_file)
62+
6063
IF(RESET_INSTALL_PREFIX)
6164
IF(NOT $ENV{FS2PATH} STREQUAL "")
6265
IF(NOT IS_DIRECTORY $ENV{FS2PATH})
@@ -157,7 +160,6 @@ mark_as_advanced(FORCE FSO_BUILD_WITH_OPENXR)
157160
mark_as_advanced(FORCE FSO_BUILD_WITH_OPENXR_DEBUG)
158161

159162
INCLUDE(globals)
160-
INCLUDE(toolchain)
161163
INCLUDE(platforms)
162164
include(version)
163165

cmake/toolchain-msvc.cmake

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,26 +72,17 @@ if (MSVC_RELEASE_DEBUGGING)
7272
endif()
7373

7474
IF(MSVC_USE_RUNTIME_DLL)
75-
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD")
76-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
75+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<NOT:$<CONFIG:Release>>:Debug>DLL")
76+
add_compile_definitions(_AFXDLL)
7777
ELSE(MSVC_USE_RUNTIME_DLL)
78-
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
79-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
78+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<NOT:$<CONFIG:Release>>:Debug>")
8079
ENDIF(MSVC_USE_RUNTIME_DLL)
8180

8281
# Debug
8382
set(CMAKE_C_FLAGS_DEBUG "/W4 /Gy /Zi /Od /RTC1 /Gd /Oy-")
8483
set(CMAKE_CXX_FLAGS_DEBUG "/W4 /Gy /Zi /Od /RTC1 /Gd /Oy-")
8584
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG /INCREMENTAL:NO /MAPINFO:EXPORTS /NODEFAULTLIB:libcmt.lib")
8685

87-
IF(MSVC_USE_RUNTIME_DLL)
88-
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd")
89-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
90-
ELSE(MSVC_USE_RUNTIME_DLL)
91-
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
92-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
93-
ENDIF(MSVC_USE_RUNTIME_DLL)
94-
9586
INCLUDE(MSVCMultipleProcessCompile)
9687

9788
# Visual Studio supports compiling for multiple vector instruction sets
@@ -122,8 +113,8 @@ if(IS_X86)
122113

123114
endif()
124115

125-
target_compile_definitions(compiler INTERFACE _CRT_SECURE_NO_DEPRECATE _CRT_SECURE_NO_WARNINGS _SECURE_SCL=0 NOMINMAX
126-
"$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>" _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
116+
add_compile_definitions("$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>")
117+
target_compile_definitions(compiler INTERFACE _CRT_SECURE_NO_DEPRECATE _CRT_SECURE_NO_WARNINGS _SECURE_SCL=0 NOMINMAX _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
127118

128119
if (FSO_FATAL_WARNINGS)
129120
# Make warnings fatal if the right variable is set

fred2/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,6 @@ target_link_libraries(FRED2 PUBLIC glad_wgl)
204204

205205
enable_clang_tidy(FRED2)
206206

207-
target_compile_definitions(FRED2 PUBLIC _AFXDLL)
208-
209207
INSTALL(
210208
TARGETS FRED2
211209
RUNTIME DESTINATION ${BINARY_DESTINATION}

lib/openxr/src/loader/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ if(BUILD_WITH_WAYLAND_HEADERS)
9292
target_include_directories(openxr_loader PRIVATE ${WAYLAND_CLIENT_INCLUDE_DIRS})
9393
endif()
9494

95-
target_compile_definitions(openxr_loader PUBLIC "$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>")
95+
# target_compile_definitions(openxr_loader PUBLIC "$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>")
9696

9797
# set_target_properties(openxr_loader PROPERTIES FOLDER ${LOADER_FOLDER})
9898

test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set(gtest_force_shared_crt "${MSVC_USE_RUNTIME_DLL}" CACHE BOOL "Always use msvc
44
set(GOOGLETEST_VERSION 1.10.0)
55
add_subdirectory(gtest)
66

7-
target_compile_definitions(gtest PUBLIC "$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>")
7+
# target_compile_definitions(gtest PUBLIC "$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>")
88

99
set_target_properties(gtest PROPERTIES FOLDER "3rdparty")
1010

tools/embedfile/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
IF(NOT CMAKE_CROSSCOMPILING)
32
SET(EMBEDFILE_SOURCES embedfile.cpp)
43

0 commit comments

Comments
 (0)