summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-11-24 13:40:10 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-11-24 13:42:32 (GMT)
commitaeb0e401110d8aa9ce2248b01611f7e7e01e21be (patch)
treeb01428e50e9307c098dd0975ef4ef4d3cf3dece8 /Source
parent6b4bb3bf7fe07ef3bea52779824ccc54bf3e622b (diff)
parentef91fb02f3658954b631e46858e254008ca58132 (diff)
downloadCMake-aeb0e401110d8aa9ce2248b01611f7e7e01e21be.zip
CMake-aeb0e401110d8aa9ce2248b01611f7e7e01e21be.tar.gz
CMake-aeb0e401110d8aa9ce2248b01611f7e7e01e21be.tar.bz2
Merge topic 'fix-find-make-program' into release-3.19
ef91fb02f3 cmGlobalGenerator: FindMakeProgram() at a generator-specific time Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Frank Dana <ferdnyc@gmail.com> Merge-request: !5529
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGlobalGenerator.cxx9
-rw-r--r--Source/cmGlobalGenerator.h11
-rw-r--r--Source/cmGlobalVisualStudioGenerator.h5
-rw-r--r--Source/cmGlobalXCodeGenerator.h5
4 files changed, 29 insertions, 1 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 1197db6..fc40d63 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -584,7 +584,8 @@ void cmGlobalGenerator::EnableLanguage(
// Find the native build tool for this generator.
// This has to be done early so that MSBuild can be used to examine the
// cross-compilation environment.
- if (!this->FindMakeProgram(mf)) {
+ if (this->GetFindMakeProgramStage() == FindMakeProgramStage::Early &&
+ !this->FindMakeProgram(mf)) {
return;
}
}
@@ -660,6 +661,12 @@ void cmGlobalGenerator::EnableLanguage(
cmSystemTools::SetFatalErrorOccured();
return;
}
+
+ // Find the native build tool for this generator.
+ if (this->GetFindMakeProgramStage() == FindMakeProgramStage::Late &&
+ !this->FindMakeProgram(mf)) {
+ return;
+ }
}
// Check that the languages are supported by the generator and its
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index b532a43..c106258 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -597,6 +597,17 @@ protected:
std::string GetPredefinedTargetsFolder();
+ enum class FindMakeProgramStage
+ {
+ Early,
+ Late,
+ };
+
+ virtual FindMakeProgramStage GetFindMakeProgramStage() const
+ {
+ return FindMakeProgramStage::Late;
+ }
+
private:
using TargetMap = std::unordered_map<std::string, cmTarget*>;
using GeneratorTargetMap =
diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h
index 3c46408..3bfcbd0 100644
--- a/Source/cmGlobalVisualStudioGenerator.h
+++ b/Source/cmGlobalVisualStudioGenerator.h
@@ -166,6 +166,11 @@ protected:
void WriteSLNHeader(std::ostream& fout);
+ FindMakeProgramStage GetFindMakeProgramStage() const override
+ {
+ return FindMakeProgramStage::Early;
+ }
+
bool ComputeTargetDepends() override;
class VSDependSet : public std::set<std::string>
{
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index 5b05214..ab5eeb2 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -124,6 +124,11 @@ protected:
void AddExtraIDETargets() override;
void Generate() override;
+ FindMakeProgramStage GetFindMakeProgramStage() const override
+ {
+ return FindMakeProgramStage::Early;
+ }
+
private:
bool ParseGeneratorToolset(std::string const& ts, cmMakefile* mf);
bool ProcessGeneratorToolsetField(std::string const& key,