
Roland Schwarz <roland.schwarz <at> chello.at> writes:
Nicola Musatti wrote:
1) Get hold of the most recent Spirit 1.6 release and unpack it somewhere
Ok, this should be simple enough.
2) Apply a patch that changes all '#include "..."' directives into '#include <...>'
Hmm, why? What would this change?
I was imprecise: the Borland compiler requires all the Spirit include directives to use angle brackets *and* to be relative to the Boost root directory. This compiler has a weird include search scheme when double quotes are involved that results in Spirit files to be taken partly from the external 1.6 location and partly from the main Boost tree.
3) Setup your configuration to recognize the alternative Spirit I'd like to try and combine 1 & 2 by issuing a new Spirit 1.6 minor release containing the patch. I also hope to convince Robert Ramey to let me patch the Serialization Jamfile.v2 file so that the location of Spirit 1.6 may be specified by means of an environment variable, as it was under BBv1 .
As I see it this should be a requirement for bbv2. However to me it is not obvious how to port this code to bbv2.
I have a working implementation, I'll post it tonight (GMT+1) from home, as I cannot post attachments from Gmane's web interface. The gist of it is the following function: rule include-spirit ( properties * ) { local result ; local SPIRIT_ROOT = [ modules.peek : SPIRIT_ROOT ] ; for tset in borland vc iw { if ( <toolset>$(tset) in $(properties) ) { if ( $(SPIRIT_ROOT) ) { result = <cxxflags>-I$(SPIRIT_ROOT) ; } else { echo *** spirit 1.6x required to build library with this compiler *** ; result = <build>no ; } } } return $(result) ; }
Alternatively it is possible to modify the Borland 5.8.2 entry in user-config.jam and add the appropriate option there.
Hmm, can you be explicit please?
You can add <cxxflags>-I/path/to/Spirit16 to the Borland entry. I don't like this solution because it causes Spirit 1.6 to be used for all the tests that involve Spirit. Cheers, Nicola Musatti