Browse Source

find target name from source filse

feature/dependency-graph
Martin Dørum 3 years ago
parent
commit
dc76f61203
1 changed files with 23 additions and 10 deletions
  1. 23
    10
      src/main.cc

+ 23
- 10
src/main.cc View File

@@ -159,6 +159,24 @@ static bool compileAndLink(
return false;
}

static std::string findTargetName(
const BBParser::Variables &vars,
const std::vector<SourceFile> &sources) {
auto it = vars.find("target");
if (it != vars.end() && it->second.size() != 0) {
return it->second[0];
}

for (auto &source: sources) {
const std::vector<std::string> *ptr = source.variable("target");
if (ptr != nullptr && ptr->size() != 0) {
return (*ptr)[0];
}
}

return "target";
}

int main(int argc, char **argv) {
logger::LogContext logCtx = logger::init();

@@ -268,16 +286,6 @@ int main(int argc, char **argv) {
parser.parse(variables);
}

// Find target
if (target.size() == 0) {
auto it = variables.find("target");
if (it == variables.end() || it->second.size() == 0) {
target = "target";
} else {
target = it->second[0];
}
}

// Find source dirs
std::vector<std::string> sourceDirs;
{
@@ -295,6 +303,11 @@ int main(int argc, char **argv) {
findSources(".", dir, sources, variables);
}

// Find target name
if (target.size() == 0) {
target = findTargetName(variables, sources);
}

switch (action) {
case Action::BUILD:
// TODO: Support more types than BINARY

Loading…
Cancel
Save