Boost logo

Boost-Build :

From: Michael Stevens (Michael.Stevens_at_[hidden])
Date: 2004-05-12 11:18:55


On Wednesday 12 May 2004 09:15, Vladimir Prus wrote:

> Let me start with some nit-picking ;-)
No problem I've attached a new version called "icclinux.jam"
>
> 1. How the version is to be specified? As "80" or as "8.0". At least all
> other toolset use the latter variant.
Am I missing something here? You can use either when calling init. Up to the
user what he/she prefers
>
> 2. My copy is installed at /opt/intel_cc_80/bin/icc and you toolset assumes
> different path. Is that the "new" scheme you mention above?
Yep this is the new naming scheme.
>
> 3. The path passes to the 'init' rule is required to end in slash, while
> other toolsets are happy either way.
Path was really a freeform prefix!. It could be used for compiler wrappers
(things like distcc etc).

I have simply dropped this from the new version. There are nothing else that
requires the directory location so this seems to be the robusted way to go.
The single name argument should be the name used to invoke the compiler.

Automatically finding the tool always fails. With every new compiler version
things change! Witness all the confused message regarding the BBv1 msvc

> 4. Finally, I think the the first declared version should become default
> one.
This happens by magic anyway. Not sure why this is but it works!!
>
> And now the really good news. I've run all V2 tests and see only three
> failures:
>
> 1. dependency_test
> I don't know why it fails, but the test is a bit fragile and often fails on
>
> 2. default-build
> Here, the compiler emits the following warning:
>
> icc: Command line warning: ignoring option '-O'; no argument required
>
> it happens only for "optimization=space", where the command line looks
> like:
Oh. Looks like icc doesn't support -Os. In fact it doesn't seem to have any
flags to enable space optimisation. I've added code so -O1 is used instead.
>
> /opt/intel_cc_80/bin/icc -c -xc++ -Os -g -Ob0 -c -o
> "bin/intellinux-80/debug/optimization-space/a.o" "a.cpp"
>
> library_order. Any ideas what to do?
>
> 3. expansion
> This fails since now I have to specify "intellinux-80" as toolset when
> invoking tests, and the test system does not like it. I suspect this means
> that this newly added test is broken whenever you specify toolset with
> version, and is going to look into it.
Good luck.

>
> This means that intel toolset is ready to be added! We only need to decide
> what to do with the glitches I've listed above.
Great.

Michael

 --Boundary-00=_v5koA7d2B9NfNre Content-Type: text/plain;
charset="iso-8859-1";
name="icclinux.jam"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="icclinux.jam"

# Copyright (c) 2003 Michael Stevens
#
# Use, modification and distribution is subject to the Boost Software
# License Version 1.0. (See accompanying file LICENSE_1_0.txt or
# http://www.boost.org/LICENSE_1_0.txt)

import toolset ;
import feature ;
import toolset : flags ;

feature.extend toolset : icclinux ;
import gcc ; # toolset.inherit icclinux : gcc ; with prohibit flag properties
toolset.inherit-generators icclinux : gcc ;
toolset.inherit-flags icclinux : gcc : <inlining>off <inlining>on <inlining>full <optimization>space ;
toolset.inherit-rules icclinux : gcc ;
feature.subfeature toolset icclinux : version : : propagated link-incompatible ;

# Initializes the icclinux toolset
# version in mandatory
# name (default icc) is used to invoke the specified icclinux complier
# compile and link options allow you to specify addition command line options for each version
rule init ( version : name ? : compile_options * : link_options * )
{
name ?= "icc" ;

feature.extend-subfeature toolset icclinux : version : $(version) ;
flags icclinux CONFIG_NAME <toolset>icclinux-$(version) : $(name) ;
flags icclinux CONFIG_COMPILE <toolset>icclinux-$(version) : $(compile_options) ;
flags icclinux CONFIG_LINK <toolset>icclinux-$(version) : $(link_options) ;
}

flags icclinux.compile OPTIONS <inlining>off : "-Ob0" ;
flags icclinux.compile OPTIONS <inlining>on : "-Ob1" ;
flags icclinux.compile OPTIONS <inlining>full : "-Ob2" ;
flags icclinux.compile OPTIONS <optimization>space : "-O1" ; # no specific space optimization flag in icc
actions compile.c++
{
$(CONFIG_NAME) -c -xc++ $(CONFIG_COMPILE) $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}

actions compile.c
{
$(CONFIG_NAME) -c -xc $(CONFIG_COMPILE) $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}

actions link bind LIBRARIES
{
$(CONFIG_NAME) $(CONFIG_LINK) $(OPTIONS) -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Wl,-Bdynamic -l$(FINDLIBS-SA) -Wl,-Bstatic -l$(FINDLIBS-ST) -Wl,-B$(LINK-RUNTIME)
}

# Differ from 'link' above only by -shared.
actions link.dll bind LIBRARIES
{
$(CONFIG_NAME) $(CONFIG_LINK) $(OPTIONS) -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" -Wl,-h$(SPACE)-Wl,$(<[1]:D=) -shared "$(>)" "$(LIBRARIES)" -Wl,-Bdynamic -l$(FINDLIBS-SA) -Wl,-Bstatic -l$(FINDLIBS-ST) "$(LIBRARIES)" -Wl,-Bdynamic -l$(FINDLIBS-SA) -Wl,-Bstatic -l$(FINDLIBS-ST) -Wl,-B$(LINK-RUNTIME)
}
 --Boundary-00=_v5koA7d2B9NfNre--


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk