diff --git a/flang/lib/Evaluate/CMakeLists.txt b/flang/lib/Evaluate/CMakeLists.txt index 7eb8ff934af46..24a1c9004bc3b 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 00befcb4785b3..96ba27ad418f7 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 0bd9a47cd040f..bc817ff8f1f3e 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 76fe3d7ce6ba4..1855b8a841ba7 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 93bf0c7c5facd..bd8cc47365f06 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 d47ac3ccffd05..1c9c404a761a0 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -286,6 +286,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.")