Skip to content

Commit 72bdb51

Browse files
committed
Implement external user-provided variables.
1 parent d350a4e commit 72bdb51

5 files changed

Lines changed: 21 additions & 3 deletions

File tree

src/sw/client/cli/command/build.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ static cl::opt<bool> cl_write_output_to_file("write-output-to-file");
6262
static ::cl::list<String> targets_to_build("target", ::cl::desc("Targets to build"));
6363
static ::cl::list<String> targets_to_ignore("exclude-target", ::cl::desc("Targets to ignore"));
6464

65+
static ::cl::list<String> Dvariables("D", ::cl::desc("Input variables"), ::cl::ZeroOrMore, ::cl::Prefix);
66+
6567
////////////////////////////////////////////////////////////////////////////////
6668
//
6769
// build configs
@@ -661,6 +663,11 @@ std::unique_ptr<sw::SwBuild> createBuild(sw::SwContext &swctx)
661663
bs["target-to-build"].push_back(t);
662664
for (auto &t : targets_to_ignore)
663665
bs["target-to-exclude"].push_back(t);
666+
for (auto &t : Dvariables)
667+
{
668+
auto p = t.find('=');
669+
bs["D"][t.substr(0, p)] = t.substr(p + 1);
670+
}
664671
b->setSettings(bs);
665672

666673
return b;

src/sw/core/build.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,5 +797,10 @@ void SwBuild::setSettings(const TargetSettings &bs)
797797
build_settings = bs;
798798
}
799799

800+
const TargetSettings &SwBuild::getExternalVariables() const
801+
{
802+
return getSettings()["D"].getSettings();
803+
}
804+
800805
}
801806

src/sw/core/build.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ struct SW_CORE_API SwBuild
8484

8585
std::vector<InputWithSettings> getInputs() const;
8686

87-
TargetSettings getSettings() const { return build_settings; }
87+
const TargetSettings &getExternalVariables() const;
88+
const TargetSettings &getSettings() const { return build_settings; }
8889
void setSettings(const TargetSettings &build_settings);
8990

9091
private:

src/sw/driver/build.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ std::optional<path> Build::getSourceDir(const Source &s, const Version &v) const
9797
return i->second.getRequestedDirectory();
9898
return {};
9999
}
100+
101+
const TargetSettings &Build::getExternalVariables() const
102+
{
103+
return getMainBuild().getExternalVariables();
104+
}
100105

101106
/*path Build::getTestDir() const
102107
{

src/sw/driver/build.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,14 @@ struct SW_DRIVER_CPP_API Build : SimpleBuild
6666
std::unordered_map<PackageId, path> source_dirs_by_package;
6767
Checker checker;
6868

69-
// old
70-
7169
//
7270
bool isKnownTarget(const LocalPackage &p) const;
7371
path getSourceDir(const LocalPackage &p) const;
7472
std::optional<path> getSourceDir(const Source &s, const Version &v) const;
7573
//bool skipTarget(TargetScope Scope) const;
7674

75+
const TargetSettings &getExternalVariables() const;
76+
7777
// tests
7878
// TODO: implement some of https://cmake.org/cmake/help/latest/manual/cmake-properties.7.html#properties-on-tests
7979
/*Commands tests;

0 commit comments

Comments
 (0)