summaryrefslogtreecommitdiff
path: root/tools/minicargo/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/minicargo/main.cpp')
-rw-r--r--tools/minicargo/main.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/minicargo/main.cpp b/tools/minicargo/main.cpp
index e9d374a5..8bfb2bb3 100644
--- a/tools/minicargo/main.cpp
+++ b/tools/minicargo/main.cpp
@@ -27,12 +27,16 @@ struct ProgramOptions
// Output/build directory
const char* output_directory = nullptr;
+ // Target name (if null, defaults to host)
+ const char* target = nullptr;
+
// Library search directories
::std::vector<const char*> lib_search_dirs;
// Number of build jobs to run at a time
unsigned build_jobs = 1;
+ // Pause for user input before quitting (useful for MSVC debugging)
bool pause_before_quit = false;
int parse(int argc, const char* argv[]);
@@ -76,15 +80,15 @@ int main(int argc, const char* argv[])
m.load_dependencies(repo, !bs_override_dir.is_valid());
// 3. Build dependency tree and build program.
- // TODO: Split creating the build list away from actually running it
BuildOptions build_opts;
build_opts.build_script_overrides = ::std::move(bs_override_dir);
build_opts.output_dir = opts.output_directory ? ::helpers::path(opts.output_directory) : ::helpers::path("output");
build_opts.lib_search_dirs.reserve(opts.lib_search_dirs.size());
+ build_opts.target_name = opts.target;
for(const auto* d : opts.lib_search_dirs)
build_opts.lib_search_dirs.push_back( ::helpers::path(d) );
Debug_SetPhase("Enumerate Build");
- auto build_list = BuildList2(m, build_opts);
+ auto build_list = BuildList(m, build_opts);
Debug_SetPhase("Run Build");
if( !build_list.build(::std::move(build_opts), opts.build_jobs) )
{
@@ -197,6 +201,13 @@ int ProgramOptions::parse(int argc, const char* argv[])
}
this->output_directory = argv[++i];
}
+ else if( ::std::strcmp(arg, "--target") == 0 ) {
+ if(i+1 == argc) {
+ ::std::cerr << "Flag " << arg << " takes an argument" << ::std::endl;
+ return 1;
+ }
+ this->target = argv[++i];
+ }
else {
::std::cerr << "Unknown flag " << arg << ::std::endl;
return 1;