diff options
author | Carbenium <carbenium@outlook.com> | 2020-06-14 22:11:23 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-06-16 09:29:31 +0200 |
commit | f387673aa328f3ff5941437149ba369d3c9a2806 (patch) | |
tree | 1aaa3e0e4f1bb6854bb916165cdc4b8c3347e2eb | |
parent | 18ad76722663c6e8cd462645b995080c67b5bff2 (diff) |
CMake: Use target_precompile_headers instead of cotire with CMake >= 3.16.0
-rw-r--r-- | CMakeLists.txt | 14 | ||||
-rw-r--r-- | cmake/macros/FindPCHSupport.cmake | 52 |
2 files changed, 41 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e09ffecb382..6a94e1adbb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,11 @@ project(TrinityCore) # CMake policies (can not be handled elsewhere) cmake_policy(SET CMP0005 NEW) -cmake_policy(SET CMP0043 OLD) # Disable 'Ignore COMPILE_DEFINITIONS_<Config> properties' +if (CMAKE_VERSION VERSION_LESS "3.16.0") + cmake_policy(SET CMP0043 OLD) # Disable 'Ignore COMPILE_DEFINITIONS_<Config> properties' +else() + cmake_policy(SET CMP0043 NEW) # Cotire isn't used so set to NEW +endif() cmake_policy(SET CMP0054 NEW) # Only interpret if() arguments as variables or keywords when unquoted - prevents intepreting if (SOME_STRING_VARIABLE MATCHES "MSVC") as if (SOME_STRING_VARIABLE MATCHES "1") if(POLICY CMP0074) @@ -35,8 +39,12 @@ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) # set macro-directory list(APPEND CMAKE_MODULE_PATH - "${CMAKE_SOURCE_DIR}/cmake/macros" - "${CMAKE_SOURCE_DIR}/dep/cotire/CMake") + "${CMAKE_SOURCE_DIR}/cmake/macros") + +if (CMAKE_VERSION VERSION_LESS "3.16.0") + list(APPEND CMAKE_MODULE_PATH + "${CMAKE_SOURCE_DIR}/dep/cotire/CMake") +endif() # build in Release-mode by default if not explicitly set if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config") diff --git a/cmake/macros/FindPCHSupport.cmake b/cmake/macros/FindPCHSupport.cmake index 9c77605616b..3e553d09a35 100644 --- a/cmake/macros/FindPCHSupport.cmake +++ b/cmake/macros/FindPCHSupport.cmake @@ -1,27 +1,35 @@ -if (MSVC) - # Specify the maximum PreCompiled Header memory allocation limit - # Fixes a compiler-problem when using PCH - the /Ym flag is adjusted by the compiler in MSVC2012, - # hence we need to set an upper limit with /Zm to avoid discrepancies) - # (And yes, this is a verified, unresolved bug with MSVC... *sigh*) - # - # Note: This workaround was verified to be required on MSVC 2017 as well - set(COTIRE_PCH_MEMORY_SCALING_FACTOR 500) -endif() +if (CMAKE_VERSION VERSION_LESS "3.16.0") + if (MSVC) + # Specify the maximum PreCompiled Header memory allocation limit + # Fixes a compiler-problem when using PCH - the /Ym flag is adjusted by the compiler in MSVC2012, + # hence we need to set an upper limit with /Zm to avoid discrepancies) + # (And yes, this is a verified, unresolved bug with MSVC... *sigh*) + # + # Note: This workaround was verified to be required on MSVC 2017 as well + set(COTIRE_PCH_MEMORY_SCALING_FACTOR 500) + endif () -include(cotire) + include(cotire) -function(ADD_CXX_PCH TARGET_NAME_LIST PCH_HEADER) - # Use the header for every target - foreach(TARGET_NAME ${TARGET_NAME_LIST}) - # Disable unity builds - set_target_properties(${TARGET_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD OFF) + function(ADD_CXX_PCH TARGET_NAME_LIST PCH_HEADER) + # Use the header for every target + foreach (TARGET_NAME ${TARGET_NAME_LIST}) + # Disable unity builds + set_target_properties(${TARGET_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD OFF) - # Set the prefix header - set_target_properties(${TARGET_NAME} PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT ${PCH_HEADER}) + # Set the prefix header + set_target_properties(${TARGET_NAME} PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT ${PCH_HEADER}) - # Workaround for cotire bug: https://github.com/sakra/cotire/issues/138 - set_property(TARGET ${TARGET_NAME} PROPERTY CXX_STANDARD 14) - endforeach() + # Workaround for cotire bug: https://github.com/sakra/cotire/issues/138 + set_property(TARGET ${TARGET_NAME} PROPERTY CXX_STANDARD 14) + endforeach () - cotire(${TARGET_NAME_LIST}) -endfunction(ADD_CXX_PCH) + cotire(${TARGET_NAME_LIST}) + endfunction(ADD_CXX_PCH) +else() + function(ADD_CXX_PCH TARGET_NAME_LIST PCH_HEADER) + foreach(TARGET_NAME ${TARGET_NAME_LIST}) + target_precompile_headers(${TARGET_NAME} PRIVATE ${PCH_HEADER}) + endforeach() + endfunction(ADD_CXX_PCH) +endif()
\ No newline at end of file |