From 88678551f1e9871def5a8eaae017fd8c464203b8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 24 Jul 2018 11:35:25 +0200 Subject: Make exe{} target default to no extension rather than fail This just keep breaking (this time for exe{}: in{} match during distribution). So we assume rules will assign the target platform extension if necessary and if not, then we default to no extension (e.g., a shell script). --- build2/in/rule.cxx | 5 +---- build2/target.cxx | 18 +++++++++--------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/build2/in/rule.cxx b/build2/in/rule.cxx index 41f2f71..5ec95f3 100644 --- a/build2/in/rule.cxx +++ b/build2/in/rule.cxx @@ -55,10 +55,7 @@ namespace build2 // Derive the file name. // - // If this is an executable with an unspecified extension, then default - // to no extension (i.e., a shell script). - // - t.derive_path (t.is_a () ? "" : nullptr); + t.derive_path (); // Inject dependency on the output directory. // diff --git a/build2/target.cxx b/build2/target.cxx index f2e3462..9c11156 100644 --- a/build2/target.cxx +++ b/build2/target.cxx @@ -845,19 +845,19 @@ namespace build2 static optional exe_target_extension (const target_key&, const scope&, bool search) { - // If we are searching for an executable that is not a target, then - // use the build machine executable extension. Otherwise, if this is - // a target, then we expect the rule to use target machine extension. + // If we are searching for an executable that is not a target, then use + // the build machine executable extension. Otherwise, if this is a target, + // then we expect the rule to supply the target machine extension. But if + // it doesn't, then assume no extension (e.g., a script). // - return search - ? optional ( + return string (search + ? #ifdef _WIN32 - "exe" + "exe" #else - "" + "" #endif - ) - : nullopt; + : ""); } #ifdef _WIN32 -- cgit v1.1