From: Nicola Musatti (Nicola.Musatti_at_[hidden])
Date: 2007-01-26 05:07:16


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