summaryrefslogtreecommitdiff
path: root/tools/build/src/build/ac.jam
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/src/build/ac.jam')
-rw-r--r--tools/build/src/build/ac.jam11
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/build/src/build/ac.jam b/tools/build/src/build/ac.jam
index 71bc16c374..c6e36c6a50 100644
--- a/tools/build/src/build/ac.jam
+++ b/tools/build/src/build/ac.jam
@@ -16,6 +16,7 @@ import virtual-target ;
import generators ;
import property ;
import print ;
+import regex ;
project.initialize $(__name__) ;
.project = [ project.current ] ;
@@ -25,7 +26,7 @@ rule generate-include ( target : sources * : properties * )
{
local header = [ property.select <include> : $(properties) ] ;
print.output $(target) ;
- print.text "#include <$(header:G=)>" : true ;
+ print.text "#include <$(header:G=)>\n" : true ;
}
rule generate-main ( target : sources * : properties * )
@@ -43,9 +44,13 @@ rule find-include-path ( properties : header : provided-path ? )
else
{
local a = [ class.new action : ac.generate-include : [ property-set.create <include>$(header) ] ] ;
- local cpp = [ class.new file-target $(header).cpp exact : CPP : $(.project) : $(a) ] ;
+ # Create a new CPP target named after the header.
+ # Replace dots (".") in target basename for portability.
+ local basename = [ regex.replace $(header:D=) "[.]" "_" ] ;
+ local header-target = $(header:S=:B=$(basename)) ;
+ local cpp = [ class.new file-target $(header-target:S=.cpp) exact : CPP : $(.project) : $(a) ] ;
cpp = [ virtual-target.register $(cpp) ] ;
- local result = [ generators.construct $(.project) $(header) : OBJ : $(properties) : $(cpp) : true ] ;
+ local result = [ generators.construct $(.project) $(header-target) : OBJ : $(properties) : $(cpp) : true ] ;
local jam-targets ;
for t in $(result[2-])
{