diff options
Diffstat (limited to 'build')
-rw-r--r-- | build/bin/target.cxx | 4 | ||||
-rw-r--r-- | build/cli/target.cxx | 19 |
2 files changed, 20 insertions, 3 deletions
diff --git a/build/bin/target.cxx b/build/bin/target.cxx index 1190bfc..9dbcd83 100644 --- a/build/bin/target.cxx +++ b/build/bin/target.cxx @@ -29,7 +29,7 @@ namespace build &file::static_type, &obja_factory, nullptr, - &search_file, + &search_target, // Note: not _file(); don't look for an existing file. false }; @@ -52,7 +52,7 @@ namespace build &file::static_type, &objso_factory, nullptr, - &search_file, + &search_target, // Note: not _file(); don't look for an existing file. false }; diff --git a/build/cli/target.cxx b/build/cli/target.cxx index 95198e1..b77252d 100644 --- a/build/cli/target.cxx +++ b/build/cli/target.cxx @@ -46,12 +46,29 @@ namespace build return file_mtime (h->path ()); } + static target* + cli_cxx_factory (dir_path d, string n, const string* e) + { + tracer trace ("cli::cli_cxx::factory"); + + // Pre-enter (potential) members as targets. The main purpose + // of doing this is to avoid searching for existing files in + // src_base if the buildfile mentions one of them explicitly + // as a prerequisite. + // + targets.insert<cxx::hxx> (d, n, trace); + targets.insert<cxx::cxx> (d, n, trace); + targets.insert<cxx::ixx> (d, n, trace); + + return new cli_cxx (move (d), move (n), e); + } + const target_type cli_cxx::static_type { typeid (cli_cxx), "cli.cxx", &mtime_target::static_type, - &target_factory<cli_cxx>, + &cli_cxx_factory, nullptr, &search_target, true // See through default semantics. |