diff --git a/v2/build/toolset.jam b/v2/build/toolset.jam index 7e483a7be..b2f9f453a 100644 --- a/v2/build/toolset.jam +++ b/v2/build/toolset.jam @@ -83,6 +83,10 @@ rule flags ( rule-or-module # If contains dot, should be a rule name. # will be added. unchecked ? # If value 'unchecked' is passed, will not test # that flags are set for the calling module. + : hack-hack ? # For + # flags rule OPTIONS : -model ansi + # Treak as condition + # FIXME: ugly hack. ) { local caller = [ CALLER_MODULE ] ; @@ -107,7 +111,7 @@ rule flags ( rule-or-module # If contains dot, should be a rule name. } - if $(condition) && ! $(condition:G=) + if $(condition) && ! $(condition:G=) && ! $(hack-hack) { # We have condition in the form '', that is, without # value. That's a previous syntax: @@ -261,7 +265,7 @@ rule set-target-variables-aux ( rule-or-module : property-set ) local variable = $(.$(rule-or-module).variable.$(f)) ; local condition = $(.$(rule-or-module).condition.$(f)) ; local values = $(.$(rule-or-module).values.$(f)) ; - + if ! $(condition) || [ find-property-subset $(condition) : $(properties) ] diff --git a/v2/tools/builtin.jam b/v2/tools/builtin.jam index c8e5e07a7..8dd28959f 100644 --- a/v2/tools/builtin.jam +++ b/v2/tools/builtin.jam @@ -179,6 +179,11 @@ feature instruction-set : : propagated optional ; +# Used to select specific variant of C++ ABI is the compiler +# supports several. +feature c++abi : : propagated optional ; + + feature conditional : : incidental free ; # The value of 'no' prevents building of a target. diff --git a/v2/tools/tru64.jam b/v2/tools/tru64.jam index 68cc241cf..80332ab44 100644 --- a/v2/tools/tru64.jam +++ b/v2/tools/tru64.jam @@ -31,6 +31,7 @@ import feature generators common ; import toolset : flags ; feature.extend toolset : tru64 ; +feature.extend c++abi : cxxarm ; # Inherit from Unix toolset to get library ordering magic. toolset.inherit tru64 : unix ; @@ -104,18 +105,13 @@ flags tru64.link OPTIONS on : -pg ; # Selection of the object model. This flag is needed on both the C++ compiler # and linker command line. -# -# FIXME: Don't know what this feature does. Disabling until -# it's figured out. -#flags tru64.compile.c++ OPTIONS arm : -model arm ; -#flags tru64.compile.c++ OPTIONS ansi : -model ansi ; -#flags tru64.compile.c++ OPTIONS default : -model ansi ; - - -#flags tru64.link OPTIONS arm : -model arm ; -#flags tru64.link OPTIONS ansi : -model ansi ; -#flags tru64.link OPTIONS default : -model ansi ; +# Unspecified ABI translates to '-model ansi' as most +# standard-conforming. +flags tru64.compile.c++ OPTIONS : -model ansi : : hack-hack ; +flags tru64.compile.c++ OPTIONS cxxarm : -model arm ; +flags tru64.link OPTIONS : -model ansi : : hack-hack ; +flags tru64.link OPTIONS cxxarm : -model arm ; flags tru64.compile OPTIONS ; @@ -129,7 +125,6 @@ flags tru64.link LIBRARIES ; flags tru64.link FINDLIBS-ST ; flags tru64.link FINDLIBS-SA ; - actions link bind LIBRARIES { $(CONFIG_COMMAND) -noimplicit_include $(OPTIONS) -o "$(<)" -L$(LIBPATH) "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) -lrt -lm