mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-12 11:11:16 +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
|
||||
cmake_policy(SET CMP0091 NEW)
|
||||
|
||||
# MSVC debug information format flags are selected by an abstraction
|
||||
cmake_policy(SET CMP0141 NEW)
|
||||
|
||||
project(isle CXX)
|
||||
|
||||
include(CheckCXXSourceCompiles)
|
||||
@ -445,6 +448,9 @@ function(add_lego_libraries NAME)
|
||||
target_link_libraries(${tgt} PRIVATE ${ARG_LINK_LIBRARIES})
|
||||
target_link_libraries(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
|
||||
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()
|
||||
|
||||
# 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 SUFFIX ".EXE")
|
||||
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()
|
||||
|
||||
if (MSVC)
|
||||
@ -587,6 +596,9 @@ if (MSVC_FOR_DECOMP)
|
||||
if (ISLE_BUILD_APP)
|
||||
target_link_options(isle PRIVATE "/OPT:REF")
|
||||
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()
|
||||
|
||||
if (ISLE_BUILD_CONFIG)
|
||||
@ -615,11 +627,14 @@ if (MSVC_FOR_DECOMP)
|
||||
target_link_options(lego1 PRIVATE "/OPT:REF")
|
||||
set_property(TARGET lego1 PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
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_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_RELWITHDEBINFO "/Zi /O2 /D \"NDEBUG\"")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/Z7 /O2 /D \"NDEBUG\"")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL "/Os /D \"NDEBUG\"")
|
||||
|
||||
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_RELWITHDEBINFO "/incremental:no /debug")
|
||||
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()
|
||||
|
||||
find_program(CLANGFORMAT_BIN NAMES clang-format)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user