summaryrefslogtreecommitdiffstats
path: root/Source/CMakeLists.txt
diff options
context:
space:
mode:
authorClemens Wasser <clemens.wasser@gmail.com>2023-06-17 11:10:50 (GMT)
committerClemens Wasser <clemens.wasser@gmail.com>2023-06-22 16:11:45 (GMT)
commit30c882827ec6f7b26fe07e5fba42f1a7400e9b36 (patch)
treee0093c98912337a2b0478b9b7867dba37db85655 /Source/CMakeLists.txt
parent17b16696d4c5cc26ed956848f7d5e9fe59a09c0a (diff)
downloadCMake-30c882827ec6f7b26fe07e5fba42f1a7400e9b36.zip
CMake-30c882827ec6f7b26fe07e5fba42f1a7400e9b36.tar.gz
CMake-30c882827ec6f7b26fe07e5fba42f1a7400e9b36.tar.bz2
C{Make,Test}Lib: Precompile common expensive headers
Diffstat (limited to 'Source/CMakeLists.txt')
-rw-r--r--Source/CMakeLists.txt56
1 files changed, 56 insertions, 0 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index a79366e..708aec7 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -929,6 +929,44 @@ if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
)
endif()
+if(CMake_BUILD_PCH)
+ target_precompile_headers(CMakeLib PRIVATE
+ "$<$<COMPILE_LANGUAGE:CXX>:<string$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:<iostream$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:<sstream$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:<iomanip$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:<cm/memory$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:<cm3p/cppdap/protocol.h$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmMakefile.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmGlobalGenerator.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmLocalGenerator.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmGeneratorTarget.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmGeneratorExpression.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmArgumentParser.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmake.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmCMakePath.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmDebuggerPipeConnection.h>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmCurl.h>")
+
+ set_source_files_properties(
+ "LexerParser/cmFortranLexer.cxx"
+ PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
+
+ if(WIN32)
+ target_precompile_headers(CMakeLib PRIVATE
+ "$<$<COMPILE_LANGUAGE:CXX>:<cm3p/uv.h$<ANGLE-R>>"
+ "$<$<COMPILE_LANGUAGE:CXX>:cmVSSetupHelper.h>")
+ set_source_files_properties("LexerParser/cmFortranParser.cxx" PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
+ else()
+ set_source_files_properties(
+ "LexerParser/cmCommandArgumentLexer.cxx"
+ "LexerParser/cmGccDepfileLexer.cxx"
+ "LexerParser/cmExprLexer.cxx"
+ "LexerParser/cmDependsJavaLexer.cxx"
+ PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
+ endif()
+endif()
+
# Temporary variable for tools targets
set(_tools)
@@ -1041,6 +1079,24 @@ target_include_directories(
)
target_link_libraries(CTestLib PUBLIC CMakeLib)
+if(CMake_BUILD_PCH)
+ target_precompile_headers(CTestLib PRIVATE
+ "cmDuration.h"
+ "cmMakefile.h"
+ "cmSystemTools.h"
+ "cmGlobalGenerator.h"
+ "cmake.h"
+ "CTest/cmCTestGenericHandler.h"
+ "<sstream>"
+ "<cm3p/uv.h>")
+
+ if(WIN32)
+ target_precompile_headers(CTestLib PRIVATE "cmCurl.h" "CTest/cmCTestMultiProcessHandler.h")
+ else()
+ set_source_files_properties("LexerParser/cmCTestResourceGroupsLexer.cxx" PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
+ endif()
+endif()
+
#
# Build CPackLib
#