diff --git a/flang/lib/Evaluate/CMakeLists.txt b/flang/lib/Evaluate/CMakeLists.txt index 7eb8ff934af4..24a1c9004bc3 100644 --- a/flang/lib/Evaluate/CMakeLists.txt +++ b/flang/lib/Evaluate/CMakeLists.txt @@ -73,3 +73,17 @@ add_flang_library(FortranEvaluate acc_gen omp_gen ) + +target_precompile_headers(FortranEvaluate PRIVATE + [["flang/Evaluate/common.h"]] + [["flang/Evaluate/call.h"]] + [["flang/Evaluate/traverse.h"]] + [["flang/Evaluate/shape.h"]] + [["flang/Evaluate/characteristics.h"]] + [["flang/Evaluate/variable.h"]] + [["flang/Evaluate/real.h"]] + [["flang/Evaluate/type.h"]] + [["flang/Evaluate/integer.h"]] + [["flang/Evaluate/expression.h"]] + [["flang/Evaluate/tools.h"]] +) diff --git a/flang/lib/Frontend/CMakeLists.txt b/flang/lib/Frontend/CMakeLists.txt index 00befcb4785b..96ba27ad418f 100644 --- a/flang/lib/Frontend/CMakeLists.txt +++ b/flang/lib/Frontend/CMakeLists.txt @@ -74,3 +74,11 @@ add_flang_library(flangFrontend clangBasic clangDriver ) + +target_precompile_headers(flangFrontend PRIVATE + [["flang/Parser/parsing.h"]] + [["flang/Parser/parse-tree.h"]] + [["flang/Parser/dump-parse-tree.h"]] + [["flang/Lower/PFTBuilder.h"]] + [["flang/Lower/Bridge.h"]] +) diff --git a/flang/lib/Lower/CMakeLists.txt b/flang/lib/Lower/CMakeLists.txt index 0bd9a47cd040..bc817ff8f1f3 100644 --- a/flang/lib/Lower/CMakeLists.txt +++ b/flang/lib/Lower/CMakeLists.txt @@ -73,3 +73,14 @@ add_flang_library(FortranLower MLIRLLVMDialect MLIRSCFToControlFlow ) + +target_precompile_headers(FortranLower PRIVATE + [["flang/Lower/ConvertExpr.h"]] + [["flang/Lower/SymbolMap.h"]] + [["flang/Lower/AbstractConverter.h"]] + [["flang/Lower/IterationSpace.h"]] + [["flang/Lower/CallInterface.h"]] + [["flang/Lower/BoxAnalyzer.h"]] + [["flang/Lower/PFTBuilder.h"]] + [["flang/Lower/DirectivesCommon.h"]] +) diff --git a/flang/lib/Parser/CMakeLists.txt b/flang/lib/Parser/CMakeLists.txt index 76fe3d7ce6ba..1855b8a841ba 100644 --- a/flang/lib/Parser/CMakeLists.txt +++ b/flang/lib/Parser/CMakeLists.txt @@ -36,3 +36,11 @@ add_flang_library(FortranParser omp_gen acc_gen ) + +target_precompile_headers(FortranParser PRIVATE + [["flang/Parser/parsing.h"]] + [["flang/Parser/parse-tree.h"]] + [["flang/Parser/provenance.h"]] + [["flang/Parser/message.h"]] + [["flang/Parser/parse-tree-visitor.h"]] +) diff --git a/flang/lib/Semantics/CMakeLists.txt b/flang/lib/Semantics/CMakeLists.txt index 93bf0c7c5fac..bd8cc47365f0 100644 --- a/flang/lib/Semantics/CMakeLists.txt +++ b/flang/lib/Semantics/CMakeLists.txt @@ -64,3 +64,12 @@ add_flang_library(FortranSemantics FrontendOpenACC TargetParser ) + +target_precompile_headers(FortranSemantics PRIVATE + [["flang/Semantics/semantics.h"]] + [["flang/Semantics/type.h"]] + [["flang/Semantics/openmp-modifiers.h"]] + [["flang/Semantics/expression.h"]] + [["flang/Semantics/tools.h"]] + [["flang/Semantics/symbol.h"]] +) diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index fb5e282ce24d..dd9040400530 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -306,6 +306,13 @@ if(LLVM_CCACHE_BUILD) endif() set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_PROGRAM}) else() + # Until a way to reliably configure ccache on Windows is found, + # disable precompiled headers for Windows + ccache builds + if(NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) + message(WARNING "Using ccache with precompiled headers on Windows is currently not supported. + CMAKE_DISABLE_PRECOMPILE_HEADERS will be set to ON.") + set(CMAKE_DISABLE_PRECOMPILE_HEADERS "ON") + endif() if(LLVM_CCACHE_MAXSIZE OR LLVM_CCACHE_DIR OR NOT LLVM_CCACHE_PARAMS MATCHES "CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros") message(FATAL_ERROR "Ccache configuration through CMake is not supported on Windows. Please use environment variables.")