diff options
| author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-07-11 05:53:30 +0900 |
|---|---|---|
| committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-07-11 05:53:30 +0900 |
| commit | deb7656b06f7440fa53b3c59d745ea795e768ae1 (patch) | |
| tree | 11f29be867293079771eed74863acb5093f90d5b /ninja.cc | |
| parent | 0ce1b79561804d98d9ce52dd55064367e85193a0 (diff) | |
| download | platform_build_kati-deb7656b06f7440fa53b3c59d745ea795e768ae1.tar.gz platform_build_kati-deb7656b06f7440fa53b3c59d745ea795e768ae1.tar.bz2 platform_build_kati-deb7656b06f7440fa53b3c59d745ea795e768ae1.zip | |
[C++] Automatically generate shortcuts
Diffstat (limited to 'ninja.cc')
| -rw-r--r-- | ninja.cc | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -302,6 +302,15 @@ class NinjaGenerator { return; } + StringPiece base = Basename(node->output.str()); + if (base != node->output.str()) { + auto p = short_names_.emplace(base, StringPiece(node->output.str())); + if (!p.second) { + // We generate shortcuts only for targets whose basename are unique. + p.first->second.clear(); + } + } + vector<Command*> commands; ce_.Eval(node, &commands); @@ -378,6 +387,12 @@ class NinjaGenerator { EmitNode(node); } + fprintf(fp_, "\n# shortcuts:\n", short_names_.size()); + for (auto p : short_names_) { + if (!p.second.empty()) + fprintf(fp_, "build %.*s: phony %.*s\n", SPF(p.first), SPF(p.second)); + } + fclose(fp_); } @@ -418,6 +433,7 @@ class NinjaGenerator { string cmd_buf_; string gomacc_; string ninja_suffix_; + unordered_map<StringPiece, StringPiece> short_names_; }; void GenerateNinja(const char* ninja_suffix, |
