Boost logo

Boost :

Subject: Re: [boost] [build] Conditional sources and compiler options
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-05-04 05:21:50

Le 04/05/13 10:39, Andrey Semashev a écrit :
> Hi,
> I'm trying to add some SIMD support to my library and I'm having problems with
> setting up my Jamfile properly.
> Basically, I have a number of source files that only need to be compiled when
> the compiler is of a specific version or later (say, gcc >= 4.7 or msvc >= 12
> or intel >= X.Y on x86 but not for other compilers/architectures and not for
> older versions of the mentioned compilers). Next, I need to add special
> compiler options (specific for each compiler) just for these files. Natuarlly,
> I also have other source files that need not these tricks and should be
> compiled normally, without any special options. All source files have to be
> compiled into a single library (static or dynamic).
> Is there any way to do it in Boost.Build? I've read about alternatives in the
> docs, but they require duplicating the library target, which I'd like to
> avoid. I also read about conditional requirements, but as I understand they
> don't allow to specify version conditions (like <toolset>gcc >= 4.7). Also I
> didn't find any way to specify special build options for particular files.

Boost.Thread uses the following

rule usage-requirements ( properties * )
     local result ;
     if <threadapi>pthread in $(properties)
         result += <define>BOOST_THREAD_POSIX ;
         if <target-os>windows in $(properties)
             result += [ win32_pthread_paths $(properties) ] ;
             # TODO: What is for static linking? Is the <library> also
             # in that case?

     if ! <toolset>vacpp in $(properties) || <toolset-vacpp:version>11.1
in $(properties) || <toolset-vacpp:version> in $(properties) ||
<toolset-vacpp:version>12.1 in $(properties)
       result += <library>/boost/chrono//boost_chrono ;

     return $(result) ;

The problem is that (if I'm not wrong)
* the version is dependent on the user_config file :(
* I don't know how to compare them


Boost list run by bdawes at, gregod at, cpdaniel at, john at