diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-12-07 12:06:59 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-12-07 12:06:59 +0200 |
commit | a89f1e4f4efd291beedea03c65c8185b7d0df20e (patch) | |
tree | d06b2cb81720ae0c6cc877c2c67201838a10b63a /build2/target.hxx | |
parent | c2da5df68610a0070575212bfee67c730ab39128 (diff) |
Distinguish between "fixed" and "default" target extensions
This fixes wrong merging of, say, file{README} and file{README.MySQL}
(in libmysqlclient).
Diffstat (limited to 'build2/target.hxx')
-rw-r--r-- | build2/target.hxx | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/build2/target.hxx b/build2/target.hxx index 73ee2d8..10b0eb3 100644 --- a/build2/target.hxx +++ b/build2/target.hxx @@ -1672,41 +1672,17 @@ namespace build2 // functions. // template <typename T> - pair<target*, optional<string>> - target_factory (const target_type&, - dir_path d, - dir_path o, - string n, - optional<string> e) + target* + target_factory (const target_type&, dir_path d, dir_path o, string n) { - return make_pair (new T (move (d), move (o), move (n)), move (e)); + return new T (move (d), move (o), move (n)); } - template <typename T, const char* ext> - pair<target*, optional<string>> - file_factory (const target_type& tt, - dir_path d, - dir_path o, - string n, - optional<string> e) - { - // A generic file target type doesn't imply any extension while a very - // specific one (say man1) may have a fixed extension. So if one wasn't - // specified and this is not a dynamically derived target type, then set - // it to fixed ext rather than unspecified. For file{} itself we make it - // empty which means we treat file{foo} as file{foo.}. - // - if (!e && ext != nullptr && tt.factory == &file_factory<T, ext>) - e = string (ext); - - return make_pair (new T (move (d), move (o), move (n)), move (e)); - } - - // Return fixed target extension. + // Return fixed target extension unless one was specified. // template <const char* ext> - optional<string> - target_extension_fix (const target_key&, const scope&, bool); + const char* + target_extension_fix (const target_key&); template <const char* ext> bool |