mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-16 21:11:15 +00:00
cmake: support parallel MSVC420 builds by embedding debug information in the objects
Only disadvantage is that the object files will be bigger. It remains possible to create a PDB file with all debug information
This commit is contained in:
parent
dfffb873ed
commit
1f39dabc12
@ -3,6 +3,9 @@ cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
|
|||||||
# MSVC runtime library flags are selected by an abstraction
|
# MSVC runtime library flags are selected by an abstraction
|
||||||
cmake_policy(SET CMP0091 NEW)
|
cmake_policy(SET CMP0091 NEW)
|
||||||
|
|
||||||
|
# MSVC debug information format flags are selected by an abstraction
|
||||||
|
cmake_policy(SET CMP0141 NEW)
|
||||||
|
|
||||||
project(isle CXX)
|
project(isle CXX)
|
||||||
|
|
||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
@ -445,6 +448,9 @@ function(add_lego_libraries NAME)
|
|||||||
target_link_libraries(${tgt} PRIVATE ${ARG_LINK_LIBRARIES})
|
target_link_libraries(${tgt} PRIVATE ${ARG_LINK_LIBRARIES})
|
||||||
target_link_libraries(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
|
target_link_libraries(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
|
||||||
target_compile_definitions(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DIRECTX5_SDK>)
|
target_compile_definitions(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DIRECTX5_SDK>)
|
||||||
|
if(MSVC_FOR_DECOMP)
|
||||||
|
set_property(TARGET ${tgt} PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "")
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# Make sure filenames are ALL CAPS
|
# Make sure filenames are ALL CAPS
|
||||||
@ -540,6 +546,9 @@ if (ISLE_BUILD_CONFIG)
|
|||||||
set_property(TARGET config PROPERTY OUTPUT_NAME "CONFIG")
|
set_property(TARGET config PROPERTY OUTPUT_NAME "CONFIG")
|
||||||
set_property(TARGET config PROPERTY SUFFIX ".EXE")
|
set_property(TARGET config PROPERTY SUFFIX ".EXE")
|
||||||
set_property(TARGET config PROPERTY MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>DLL)
|
set_property(TARGET config PROPERTY MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>DLL)
|
||||||
|
if(MSVC_FOR_DECOMP)
|
||||||
|
set_property(TARGET config PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
@ -587,6 +596,9 @@ if (MSVC_FOR_DECOMP)
|
|||||||
if (ISLE_BUILD_APP)
|
if (ISLE_BUILD_APP)
|
||||||
target_link_options(isle PRIVATE "/OPT:REF")
|
target_link_options(isle PRIVATE "/OPT:REF")
|
||||||
set_property(TARGET isle ${lego1_targets} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
set_property(TARGET isle ${lego1_targets} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
|
if(MSVC_FOR_DECOMP)
|
||||||
|
set_property(TARGET isle PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ISLE_BUILD_CONFIG)
|
if (ISLE_BUILD_CONFIG)
|
||||||
@ -615,11 +627,14 @@ if (MSVC_FOR_DECOMP)
|
|||||||
target_link_options(lego1 PRIVATE "/OPT:REF")
|
target_link_options(lego1 PRIVATE "/OPT:REF")
|
||||||
set_property(TARGET lego1 PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
set_property(TARGET lego1 PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
endif()
|
endif()
|
||||||
|
if(MSVC_FOR_DECOMP)
|
||||||
|
set_property(TARGET lego1 PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"")
|
set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Zi /Od /D \"_DEBUG\"")
|
set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Z7 /Od /D \"_DEBUG\"")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /D \"NDEBUG\"")
|
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /D \"NDEBUG\"")
|
||||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/Zi /O2 /D \"NDEBUG\"")
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/Z7 /O2 /D \"NDEBUG\"")
|
||||||
set(CMAKE_CXX_FLAGS_MINSIZEREL "/Os /D \"NDEBUG\"")
|
set(CMAKE_CXX_FLAGS_MINSIZEREL "/Os /D \"NDEBUG\"")
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "/machine:I386")
|
set(CMAKE_EXE_LINKER_FLAGS "/machine:I386")
|
||||||
@ -635,26 +650,6 @@ if (MSVC_FOR_DECOMP)
|
|||||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
|
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "/incremental:no")
|
set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "/incremental:no")
|
||||||
|
|
||||||
# Older MSVC versions don't support building in parallel.
|
|
||||||
# Force non-parallel builds of isle and lego1 by putting them in a pool with 1 available job.
|
|
||||||
if (CMAKE_CXX_COMPILER_ID VERSION_LESS 12)
|
|
||||||
foreach(tgt IN LISTS lego1_targets beta10_targets)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_${tgt}=1")
|
|
||||||
set_property(TARGET ${tgt} PROPERTY JOB_POOL_COMPILE "msvc_${tgt}")
|
|
||||||
set_property(TARGET ${tgt} PROPERTY JOB_POOL_LINK "msvc_${tgt}")
|
|
||||||
endforeach()
|
|
||||||
if (TARGET isle)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_isle=1")
|
|
||||||
set_property(TARGET isle PROPERTY JOB_POOL_COMPILE "msvc_isle")
|
|
||||||
set_property(TARGET isle PROPERTY JOB_POOL_LINK "msvc_isle")
|
|
||||||
endif()
|
|
||||||
if (TARGET config)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_config=1")
|
|
||||||
set_property(TARGET config PROPERTY JOB_POOL_COMPILE "msvc_config")
|
|
||||||
set_property(TARGET config PROPERTY JOB_POOL_LINK "msvc_config")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_program(CLANGFORMAT_BIN NAMES clang-format)
|
find_program(CLANGFORMAT_BIN NAMES clang-format)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user