aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/build/script/builtin-options.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-11-30 10:15:33 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-11-30 10:42:02 +0200
commit76f1988539c477ad3b906f254654929aec04283c (patch)
tree5d824b8a3db4d95c79ddf6903f530ae578daffaf /libbuild2/build/script/builtin-options.hxx
parent445c89468c7d361fe891aa09f2c28e943f6fe7c5 (diff)
Add support for dynamic dependencies as byproduct of script body
Specifically, the `depdb dyndep` builtin now has the --byproduct option (which must come first). In this mode only the --file input is supported. For example: obje{hello.o}: cxx{hello} {{ o = $path($>) t = $(o).t depdb dyndep --byproduct --what=header --default-type=h --file $t diag c++ ($<[0]) $cxx.path $cxx.poptions $cc.poptions $cc.coptions $cxx.coptions $cxx.mode -o $o -MD -MF $t -c $path($<[0]) }} Naturally, this mode does not support dynamic auto-generated prerequisites. If present, such prerequisites must be specified statically in the buildfile. Note also that the --default-prereq-type option has been rename to --default-type.
Diffstat (limited to 'libbuild2/build/script/builtin-options.hxx')
-rw-r--r--libbuild2/build/script/builtin-options.hxx35
1 files changed, 26 insertions, 9 deletions
diff --git a/libbuild2/build/script/builtin-options.hxx b/libbuild2/build/script/builtin-options.hxx
index 85d67b9..15119f4 100644
--- a/libbuild2/build/script/builtin-options.hxx
+++ b/libbuild2/build/script/builtin-options.hxx
@@ -297,10 +297,10 @@ namespace build2
{
namespace script
{
- class depdb_dep_options
+ class depdb_dyndep_options
{
public:
- depdb_dep_options ();
+ depdb_dyndep_options ();
// Return true if anything has been parsed.
//
@@ -404,19 +404,34 @@ namespace build2
include_path_specified (bool);
const string&
- default_prereq_type () const;
+ default_type () const;
string&
- default_prereq_type ();
+ default_type ();
void
- default_prereq_type (const string&);
+ default_type (const string&);
bool
- default_prereq_type_specified () const;
+ default_type_specified () const;
void
- default_prereq_type_specified (bool);
+ default_type_specified (bool);
+
+ const dir_path&
+ cwd () const;
+
+ dir_path&
+ cwd ();
+
+ void
+ cwd (const dir_path&);
+
+ bool
+ cwd_specified () const;
+
+ void
+ cwd_specified (bool);
// Implementation details.
//
@@ -439,8 +454,10 @@ namespace build2
bool what_specified_;
dir_paths include_path_;
bool include_path_specified_;
- string default_prereq_type_;
- bool default_prereq_type_specified_;
+ string default_type_;
+ bool default_type_specified_;
+ dir_path cwd_;
+ bool cwd_specified_;
};
}
}