summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-02-25 13:07:22 (GMT)
committerKitware Robot <kwrobot@kitware.com>2022-02-25 13:07:36 (GMT)
commitd4ad5fcd5d2303c1ac89c699e59a770e201c817b (patch)
treea88346eea86816bbe7361508304ae93d3e8bbdc0 /Source
parentc515ac41ee5a7249b9816d2cceb36cebf828a7f7 (diff)
parent6b4885b58b8204153919d068363f5fe42fef6ec4 (diff)
downloadCMake-d4ad5fcd5d2303c1ac89c699e59a770e201c817b.zip
CMake-d4ad5fcd5d2303c1ac89c699e59a770e201c817b.tar.gz
CMake-d4ad5fcd5d2303c1ac89c699e59a770e201c817b.tar.bz2
Merge topic 'ninja-gfortran-preprocess'
6b4885b58b Ninja: Avoid preprocessing twice with explicit Fortran_PREPROCESS Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7008
Diffstat (limited to 'Source')
-rw-r--r--Source/cmCommonTargetGenerator.cxx7
-rw-r--r--Source/cmCommonTargetGenerator.h10
-rw-r--r--Source/cmNinjaTargetGenerator.cxx3
3 files changed, 15 insertions, 5 deletions
diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx
index 8d5ce7e..129ef4b 100644
--- a/Source/cmCommonTargetGenerator.cxx
+++ b/Source/cmCommonTargetGenerator.cxx
@@ -101,7 +101,8 @@ void cmCommonTargetGenerator::AppendFortranFormatFlags(
}
void cmCommonTargetGenerator::AppendFortranPreprocessFlags(
- std::string& flags, cmSourceFile const& source)
+ std::string& flags, cmSourceFile const& source,
+ PreprocessFlagsRequired requires_pp)
{
const std::string srcpp = source.GetSafeProperty("Fortran_PREPROCESS");
cmOutputConverter::FortranPreprocess preprocess =
@@ -114,7 +115,9 @@ void cmCommonTargetGenerator::AppendFortranPreprocessFlags(
const char* var = nullptr;
switch (preprocess) {
case cmOutputConverter::FortranPreprocess::Needed:
- var = "CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON";
+ if (requires_pp == PreprocessFlagsRequired::YES) {
+ var = "CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON";
+ }
break;
case cmOutputConverter::FortranPreprocess::NotNeeded:
var = "CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF";
diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h
index baa36c9..5aba1c6 100644
--- a/Source/cmCommonTargetGenerator.h
+++ b/Source/cmCommonTargetGenerator.h
@@ -46,8 +46,14 @@ protected:
void AppendFortranFormatFlags(std::string& flags,
cmSourceFile const& source);
- void AppendFortranPreprocessFlags(std::string& flags,
- cmSourceFile const& source);
+ enum class PreprocessFlagsRequired
+ {
+ YES,
+ NO
+ };
+ void AppendFortranPreprocessFlags(
+ std::string& flags, cmSourceFile const& source,
+ PreprocessFlagsRequired requires_pp = PreprocessFlagsRequired::YES);
virtual void AddIncludeFlags(std::string& flags, std::string const& lang,
const std::string& config) = 0;
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 191b428..dd7d244 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -216,7 +216,8 @@ std::string cmNinjaTargetGenerator::ComputeFlagsForObject(
// Add Fortran format flags.
if (language == "Fortran") {
this->AppendFortranFormatFlags(flags, *source);
- this->AppendFortranPreprocessFlags(flags, *source);
+ this->AppendFortranPreprocessFlags(flags, *source,
+ PreprocessFlagsRequired::NO);
}
// Add source file specific flags.