gcc-4.3.0-stdcxx-4.2.2_x86_64
# Contact:
Farid Zaripov <faridz@apache.org>
# OS:
Linux ubuntu 2.6.24-19-generic #1 SMP Wed Jun 4 15:10:52 UTC 2008 x86_64 GNU/Linux
# compiler:
gcc (Ubuntu 4.3.0-1ubuntu1) 4.3.0
Copyright (C) 2008 Free Software Foundation, Inc.
# stdlib:
Apache C++ Standard Library 4.2.1 release (http://stdcxx.apache.org/)
# command line:
python run.py --runner=gcc-4.3.0-stdcxx-4.2.1_x86_64 --toolsets=gcc-4.3.0_stdcxx_421/stdlib=stdcxx-4.2.1/architecture=x86/instruction-set=nocona/address-model=64 --bjam-options=-j4 --bjam-toolset=gcc --pjl-toolset=gcc --force-update --incremental --tag=trunk --timeout=10
# patch_boost:
-------------------------------------------------------------------
#!/bin/sh
patch -p 0 -u -N $1 -i boost.patch
patch -p 0 -u -N $1 -i user-config.patch
-------------------------------------------------------------------
# user-config.patch:
-------------------------------------------------------------------
Index: tools_bb/user-config.jam
===================================================================
--- tools_bb/user-config.jam
+++ tools_bb/user-config.jam
@@ -84,3 +84,7 @@
# Configure with an explicit installation prefix.
# using qt : /usr/opt/qt ;
+
+using gcc : 4.3.0_stdcxx_421 : g++ ;
+using python : 2.5 ;
+using stdcxx : 4.2.1 : /usr/src/stdcxx-4.2.1 /usr/tmp/stdcxx-4.2.1 ;
-------------------------------------------------------------------
# boost.patch:
-------------------------------------------------------------------
Index: tools_bb/tools/common.jam
===================================================================
--- tools_bb/tools/common.jam
+++ tools_bb/tools/common.jam
@@ -840,6 +840,7 @@
# which are known to care about runtime debug.
if <toolset>msvc in $(properties)
|| <stdlib>stlport in $(properties)
+ || <stdlib>stdcxx in $(properties)
|| <toolset-intel:platform>win in $(properties)
{
if <runtime-debugging>on in $(properties) { tag += g ; }
@@ -849,6 +850,7 @@
if <variant>debug in $(properties) { tag += d ; }
if <stdlib>stlport in $(properties) { tag += p ; }
if <stdlib-stlport:iostream>hostios in $(properties) { tag += n ; }
+ if <stdlib>stdcxx in $(properties) { tag += x ; }
return $(tag:J=) ;
}
Index: tools_bb/tools/stdcxx.jam
===================================================================
--- tools_bb/tools/stdcxx.jam
+++ tools_bb/tools/stdcxx.jam
@@ -0,0 +1,275 @@
+# Copyright Gennadiy Rozental
+# Copyright 2006 Rene Rivera
+# Copyright 2003, 2004, 2006 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+# The STDCXX is usable by means of 'stdlib' feature. When
+# stdlib=stdcxx is specified, default version of STDCXX will be used,
+# while stdlib=stdcxx-4.2 will use specific version.
+#
+# The specific version of stdcxx is selected by features:
+# The <runtime-link> feature selects between static and shared library
+# The <runtime-debugging>on selects STDCXX with debug symbols
+
+import feature : feature subfeature ;
+import project ;
+import "class" : new ;
+import targets ;
+import property-set ;
+import common ;
+import type ;
+
+# Make this module into a project.
+project.initialize $(__name__) ;
+project stdcxx ;
+
+feature.extend stdlib : stdcxx ;
+feature.compose <stdlib>stdcxx : <library>/stdcxx//stdcxx ;
+
+# Declare a special target class to handle the creation of search-lib-target
+# instances for STDCXX. We need a special class, because otherwise we'll have
+# declare prebuilt targets for all possible toolsets. And by the time 'init'
+# is called we don't even know the list of toolsets that are registered
+
+class stdcxx-target-class : basic-target
+{
+ import feature project type errors generators ;
+ import set : difference ;
+
+ rule __init__ ( project : stdcxxdir : builddir : version ? )
+ {
+ basic-target.__init__ stdcxx : $(project) ;
+ self.stdcxxdir = $(stdcxxdir) ;
+ self.builddir = $(builddir) ;
+ self.version = $(version) ;
+
+ local requirements ;
+ requirements += <stdlib-stdcxx:version>$(self.version) ;
+ self.requirements = [ property-set.create $(requirements) ] ;
+ }
+
+ rule generate ( property-set )
+ {
+ # Since this target is built with <stdlib>stdcxx, it will also
+ # have <library>/stdcxx//stdcxx in requirements, which will
+ # cause a loop in main target references. Remove that property
+ # manually.
+
+ property-set = [ property-set.create
+ [ difference
+ [ $(property-set).raw ] :
+ <library>/stdcxx//stdcxx
+ <stdlib>stdcxx
+ ]
+ ] ;
+ return [ basic-target.generate $(property-set) ] ;
+ }
+
+ rule buildtype ( property-set : msvcrt ? )
+ {
+ local properties = [ $(property-set).raw ] ;
+
+ local name = "" ;
+
+ if <runtime-debugging>off in $(properties)
+ {
+ if <threading>multi in $(properties)
+ {
+ name += 12 ;
+ }
+ else
+ {
+ name += 8 ;
+ }
+ }
+ else
+ {
+ if <threading>multi in $(properties)
+ {
+ name += 15 ;
+ }
+ else
+ {
+ name += 11 ;
+ }
+ }
+
+ if <address-model>64 in $(properties)
+ {
+ if <runtime-link>static in $(properties) ||
+ ! $(msvcrt) && <link>static in $(properties)
+ {
+ name += S ;
+ }
+ else
+ {
+ name += D ;
+ }
+ }
+ else
+ {
+ if <runtime-link>static in $(properties) ||
+ ! $(msvcrt) && <link>static in $(properties)
+ {
+ name += s ;
+ }
+ else
+ {
+ name += d ;
+ }
+ }
+
+ name = $(name:J=) ;
+
+ return $(name) ;
+ }
+
+ rule construct ( name : source-targets * : property-set )
+ {
+ # Deduce the name of stdcxx library
+ local raw = [ $(property-set).raw ] ;
+ local toolset = [ $(property-set).get <toolset> ] ;
+
+ # name: libstdxxy
+ local prefix = "" ;
+ local msvcrt = ;
+
+ if msvc = $(toolset) ||
+ intel = $(toolset) && win = [ $(property-set).get <toolset-intel:platform> ]
+ {
+ msvcrt = true ;
+ prefix = lib ;
+ }
+
+ local suffix = [ buildtype $(property-set) : $(msvcrt) ] ;
+ local name = $(prefix)std$(suffix) ;
+
+ return [ generators.construct
+ $(self.project) $(name) : SEARCHED_LIB : $(property-set) ] ;
+ }
+
+ rule compute-usage-requirements ( subvariant )
+ {
+ local rproperties = [ $(subvariant).build-properties ] ;
+ local usage-requirements = <include>$(self.stdcxxdir)/include ;
+ local include_ansi = <include>$(self.stdcxxdir)/include/ansi ;
+
+ local toolset = [ $(rproperties).get <toolset> ] ;
+
+ if intel = $(toolset)
+ {
+ toolset = icc ;
+ }
+
+ local builddir = $(self.builddir) ;
+
+ local msvcrt = ;
+
+ switch $(toolset)
+ {
+ case gcc :
+ {
+ usage-requirements +=
+ $(include_ansi)
+ <cxxflags>-nostdinc++ ;
+ }
+ case icc :
+ {
+ local platform = [ $(rproperties).get <toolset-intel:platform> ] ;
+ if "linux" = $(platform)
+ {
+ usage-requirements +=
+ $(include_ansi)
+ <cxxflags>-cxxlib-nostd
+ <linkflags>-cxxlib-nostd ;
+ }
+ if "win" = $(platform)
+ {
+ msvcrt = true ;
+ }
+ }
+ case sun :
+ {
+ usage-requirements +=
+ <cxxflags>-library=%none
+ <linkflags>-library=%none ;
+ }
+ case msvc :
+ {
+ msvcrt = true ;
+ }
+ }
+
+ if $(msvcrt)
+ {
+ usage-requirements +=
+ $(include_ansi)
+ <linkflags>/NODEFAULTLIB:libcp.lib
+ <linkflags>/NODEFAULTLIB:libcpd.lib
+ <linkflags>/NODEFAULTLIB:libcpmt.lib
+ <linkflags>/NODEFAULTLIB:libcpmtd.lib
+ <linkflags>/NODEFAULTLIB:msvcprt.lib
+ <linkflags>/NODEFAULTLIB:msvcprtd.lib ;
+
+ if [ $(rproperties).get <runtime-link> ] != "static"
+ {
+ usage-requirements += <define>_RWSHARED ;
+ }
+ }
+
+ if [ $(rproperties).get <runtime-debugging> ] != "off"
+ {
+ usage-requirements += <define>_RWSTDDEBUG ;
+ }
+
+ local suffix = [ buildtype $(rproperties) : $(msvcrt) ] ;
+ local config_h_path = $(builddir)/$(suffix)/include ;
+ local libpath = $(builddir)/$(suffix)/lib ;
+
+ usage-requirements +=
+ <include>$(config_h_path)
+ <library-path>$(libpath) ;
+
+ if [ $(rproperties).get <runtime-link> ] != "static"
+ {
+ usage-requirements += <dll-path>$(libpath) ;
+ }
+
+ return [ property-set.create $(usage-requirements) ] ;
+ }
+}
+
+rule stdcxx-target ( stdcxxdir : builddir : version ? )
+{
+ local project = [ project.current ] ;
+
+ targets.main-target-alternative
+ [ new stdcxx-target-class $(project) : $(stdcxxdir) : $(builddir)
+ : $(version)
+ ] ;
+}
+
+local .version-subfeature-defined ;
+
+# Initialize stdcxx support.
+rule init (
+ version ? :
+ stdcxxdir # Location of header files
+ builddir * # Location of libraries, lib and bin subdirs of STDCXX.
+ )
+{
+ if $(version)
+ {
+ if ! $(.version-subfeature-defined)
+ {
+ feature.subfeature stdlib stdcxx : version : : propagated ;
+ .version-subfeature-defined = true ;
+ }
+ feature.extend-subfeature stdlib stdcxx : version : $(version) ;
+ }
+
+ # Declare the main target for this STDCXX version.
+ stdcxx-target $(stdcxxdir) : $(builddir) : $(version) ;
+}
+
Index: boost/boost/config/auto_link.hpp
===================================================================
--- boost/boost/config/auto_link.hpp
+++ boost/boost/config/auto_link.hpp
@@ -63,6 +63,7 @@
d debug build (release if not present).
g debug/diagnostic runtime (release if not present).
p STLPort Build.
+ x STDCXX Build.
BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
@@ -200,6 +201,18 @@
# define BOOST_LIB_RT_OPT "-pn"
# endif
+# elif defined(_RWSTD_VER)
+
+# if defined(_DEBUG) && defined(_RWSTDDEBUG)
+# define BOOST_LIB_RT_OPT "-gdx"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gdx"
+# pragma message("warning: STDCXX debug versions are built with /D_RWSTDDEBUG")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-x"
+# endif
+
# else
# if defined(_DEBUG)
@@ -236,6 +249,18 @@
# define BOOST_LIB_RT_OPT "-spn"
# endif
+# elif defined(_RWSTD_VER)
+
+# if defined(_DEBUG) && defined(_RWSTDDEBUG)
+# define BOOST_LIB_RT_OPT "-sgdx"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgdx"
+# pragma message("warning: STDCXX debug versions are built with /D_RWSTDDEBUG")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-sx"
+# endif
+
# else
# if defined(_DEBUG)
-------------------------------------------------------------------