diff options
Diffstat (limited to 'build/cli/target.cxx')
-rw-r--r-- | build/cli/target.cxx | 19 |
1 files changed, 18 insertions, 1 deletions
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. |