aboutsummaryrefslogtreecommitdiff
path: root/build/cli
diff options
context:
space:
mode:
Diffstat (limited to 'build/cli')
-rw-r--r--build/cli/target.cxx19
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.