diff options
Diffstat (limited to 'tools/build/src/build/ac.jam')
-rw-r--r-- | tools/build/src/build/ac.jam | 11 |
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-]) { |