aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2020-06-14 22:11:23 +0200
committerShauren <shauren.trinity@gmail.com>2020-06-16 09:29:31 +0200
commitf387673aa328f3ff5941437149ba369d3c9a2806 (patch)
tree1aaa3e0e4f1bb6854bb916165cdc4b8c3347e2eb
parent18ad76722663c6e8cd462645b995080c67b5bff2 (diff)
CMake: Use target_precompile_headers instead of cotire with CMake >= 3.16.0
-rw-r--r--CMakeLists.txt14
-rw-r--r--cmake/macros/FindPCHSupport.cmake52
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