diff options
author | John Hodge <tpg@mutabah.net> | 2019-10-26 17:15:23 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2019-10-26 17:15:23 +0800 |
commit | 99904636d2e1e335238552cbb5b8b23dd06b7295 (patch) | |
tree | 5fd6470fb702b2a26253d380d47d5b6fd232607f /src/main.cpp | |
parent | 7ca04e2d668fa44a1663158f844cb912e396cb32 (diff) | |
parent | ebd8edeb4f1861943cc82d310564b1f592e63272 (diff) | |
download | mrust-99904636d2e1e335238552cbb5b8b23dd06b7295.tar.gz |
Merge remote-tracking branch 'remotes/origin/master' into nightly-1.29
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/main.cpp b/src/main.cpp index 0efddc5f..c722bc73 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,6 +38,7 @@ TargetVersion gTargetVersion = TargetVersion::Rustc1_29; void init_debug_list() { + g_debug_disable_map.insert( "Target Load" ); g_debug_disable_map.insert( "Parse" ); g_debug_disable_map.insert( "LoadCrates" ); g_debug_disable_map.insert( "Expand" ); @@ -159,6 +160,9 @@ struct ProgramParams bool test_harness = false; + // NOTE: If populated, nothing happens except for loading the target + ::std::string target_saveback; + ::std::vector<const char*> lib_search_dirs; ::std::vector<const char*> libraries; ::std::map<::std::string, ::std::string> crate_overrides; // --extern name=path @@ -217,8 +221,21 @@ int main(int argc, char *argv[]) Cfg_SetValueCb("feature", [¶ms](const ::std::string& s) { return params.features.count(s) != 0; }); - Target_SetCfg(params.target); + CompilePhaseV("Target Load", [&]() { + Target_SetCfg(params.target); + }); + if( params.target_saveback != "") + { + Target_ExportCurSpec(params.target_saveback); + return 0; + } + + if( params.infile == "" ) + { + ::std::cerr << "No input file passed" << ::std::endl; + return 1; + } if( params.test_harness ) { @@ -1100,6 +1117,13 @@ ProgramParams::ProgramParams(int argc, char *argv[]) } this->target = argv[++i]; } + else if( strcmp(arg, "--dump-target-spec") == 0 ) { + if (i == argc - 1) { + ::std::cerr << "Flag " << arg << " requires an argument" << ::std::endl; + exit(1); + } + this->target_saveback = argv[++i]; + } else if( strcmp(arg, "--test") == 0 ) { this->test_harness = true; } @@ -1110,12 +1134,6 @@ ProgramParams::ProgramParams(int argc, char *argv[]) } } - if (this->infile == "") - { - ::std::cerr << "No input file passed" << ::std::endl; - exit(1); - } - if( const auto* a = getenv("MRUSTC_TARGET_VER") ) { |