mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-13 12:59:55 -05:00
Merge topic 'fix-find-make-program'
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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -604,6 +604,17 @@ protected:
|
||||
|
||||
std::string GetPredefinedTargetsFolder() const;
|
||||
|
||||
enum class FindMakeProgramStage
|
||||
{
|
||||
Early,
|
||||
Late,
|
||||
};
|
||||
|
||||
virtual FindMakeProgramStage GetFindMakeProgramStage() const
|
||||
{
|
||||
return FindMakeProgramStage::Late;
|
||||
}
|
||||
|
||||
private:
|
||||
using TargetMap = std::unordered_map<std::string, cmTarget*>;
|
||||
using GeneratorTargetMap =
|
||||
|
||||
@@ -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>
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user