diff --git a/v1/boost-base.jam b/v1/boost-base.jam index 26de2002b..59062e8be 100644 --- a/v1/boost-base.jam +++ b/v1/boost-base.jam @@ -1,3 +1,8 @@ +#~ Copyright 2002-2004 Rene Rivera. +#~ Copyright 2001-2004 David Abrahams. +#~ 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) + # (C) Copyright David Abrahams and Carlos Pinto Coelho 2001. Permission to # copy, use, modify, sell and distribute this software is granted provided this # copyright notice appears in all copies. This software is provided "as is" @@ -1377,7 +1382,7 @@ rule declare-basic-target ( target-id : sources * : requirements * : default-bui # type, and the corresponding property. # gTARGET_REQUIREMENTS($(target-id)) - = $(requirements) $(gTARGET_TYPE_REQUIREMENTS($(target-type))) ; + = toolset::requirements $(requirements) $(gTARGET_TYPE_REQUIREMENTS($(target-type))) ; if ! $(gNO_TARGET_TYPE_REQUIREMENT($(target-type))) { gTARGET_REQUIREMENTS($(target-id)) += $(target-type) ; @@ -2575,69 +2580,43 @@ rule common-variant-tag ( toolset variant : properties * ) if off in $(properties) { runtime-tag += n ; } local toolset-tag = ; - switch $(toolset) + if ! $(gUNVERSIONED_VARIANT_TAG) { - case *borland* : toolset-tag += bcb ; - case *como* : toolset-tag += como ; - case *cwpro8* : + switch $(toolset) { - toolset-tag += cw8 ; - if dynamic in $(properties) { thread-tag = mt ; } + case borland* : toolset-tag += bcb ; + case como* : toolset-tag += como ; + case cwpro8* : toolset-tag += cw 8 ; + case cwpro9* : toolset-tag += cw 9 ; + case darwin* : toolset-tag += ; + case edg* : toolset-tag += edg ; + case gcc* : toolset-tag += gcc ; + case intel-linux* : toolset-tag += il ; + case intel-win32* : toolset-tag += iw ; + case kcc* : toolset-tag += kcc ; + case kylix* : toolset-tag += bck ; + case metrowerks* : toolset-tag += cw ; + case mingw* : toolset-tag += mgw ; + case mipspro* : toolset-tag += mp ; + case msvc* : toolset-tag += vc 6 ; + case sunpro* : toolset-tag += sw ; + case tru64cxx* : toolset-tag += tru ; + case vacpp* : toolset-tag += xlc ; + case vc[678]* : toolset-tag += [ MATCH "vc([678])[.]([0123456789]*)" : $(toolset) ] ; + case * : + toolset-tag += [ MATCH "^([^-]*)" : $(toolset) ] ; } - case *cwpro9* : - { - toolset-tag += cw9 ; - if dynamic in $(properties) { thread-tag = mt ; } - } - case *darwin* : toolset-tag += ; - case *edg* : toolset-tag += edg ; - case *gcc* : toolset-tag += gcc ; - case *intel-linux* : toolset-tag += il ; - case *intel-win32* : - { - toolset-tag += iw ; - if dynamic in $(properties) { thread-tag = mt ; } - } - case *kcc* : toolset-tag += kcc ; - case *kylix* : toolset-tag += bck ; - case *metrowerks* : toolset-tag += cw ; - case *mingw* : toolset-tag += mgw ; - case *mipspro* : toolset-tag += mp ; - case *msvc* : - { - toolset-tag += vc6 ; - if dynamic in $(properties) { thread-tag = mt ; } - } - case *sunpro* : toolset-tag += sw ; - case *tru64cxx* : toolset-tag += tru ; - case *vacpp* : toolset-tag += xlc ; - case *vc7* : - { - toolset-tag += vc7 ; - toolset-tag += [ MATCH "vc7[.]([0123456789]*)" : $(toolset) ] ; - if dynamic in $(properties) { thread-tag = mt ; } - # is always on, no matter what we may think - # this is an stlport build requirement. - runtime-tag = [ difference $(runtime-tag) : n ] ; - } - case *vc8* : - { - toolset-tag += vc8 ; - toolset-tag += [ MATCH "vc8[.]([0123456789]*)" : $(toolset) ] ; - if dynamic in $(properties) { thread-tag = mt ; } - # is always on, no matter what we may think - # this is an stlport build requirement. - runtime-tag = [ difference $(runtime-tag) : n ] ; - } - case * : - toolset-tag += [ MATCH "^([^-]*)" : $(toolset) ] ; + toolset-tag += [ MATCH "[-]([0123456789]+).([0123456789]*)" : $(toolset) ] ; } - toolset-tag += [ MATCH "[-]([0123456789]+).([0123456789]*)" : $(toolset) ] ; - local version-number = [ get-values : $(properties) ] ; - version-number ?= $(BOOST_VERSION) ; - local version-tag = [ MATCH "^([^.]+).([^.]+)" : $(version-number[1]) ] ; - version-tag = $(version-tag:J="_") ; + local version-tag = ; + if ! $(gUNVERSIONED_VARIANT_TAG) + { + local version-number = [ get-values : $(properties) ] ; + version-number ?= $(BOOST_VERSION) ; + version-tag = [ MATCH "^([^.]+).([^.]+)" : $(version-number[1]) ] ; + version-tag = $(version-tag:J="_") ; + } tags += $(toolset-tag:J=) ; tags += $(thread-tag:J=) ; @@ -2822,3 +2801,74 @@ rule common-stage-tag ( toolset variant : subvariant-path properties * ) { return [ common-variant-tag $(toolset) $(variant) : $(subvariant-path) $(properties) ] ; } + +# Enforces toolset level requirements. This is added to all targets. +rule toolset::requirements ( toolset variant : subvariant-path properties * ) +{ + local requirements = ; + switch $(toolset) + { + case cwpro8* : + { + # dynamic runtime only comes in the multi-threading flavor + if dynamic in $(properties) { requirements += multi ; } + } + case cwpro9* : + { + # dynamic runtime only comes in the multi-threading flavor + if dynamic in $(properties) { requirements += multi ; } + } + case cw* : + { + # dynamic runtime only comes in the multi-threading flavor + if dynamic in $(properties) { requirements += multi ; } + } + case msvc* : + { + # dynamic runtime only comes in the multi-threading flavor + if dynamic in $(properties) { requirements += multi ; } + if [ MATCH .*(stlport).* : $(toolset) ] || + [ MATCH .*(stlport).* : $(properties:G) ] + { + # STLPort doesn't have any single-threaded builds, so we're going + # to force all such targets to be built with multithread support. + # This is essentially a usage-requirement on the stlport library. + requirements += multi ; + } + } + case vc* : + { + # dynamic runtime only comes in the multi-threading flavor + if dynamic in $(properties) { requirements += multi ; } + if [ MATCH .*(stlport).* : $(toolset) ] || + [ MATCH .*(stlport).* : $(properties:G) ] + { + # STLPort doesn't have any single-threaded builds, so we're going + # to force all such targets to be built with multithread support. + # This is essentially a usage-requirement on the stlport library. + requirements += multi ; + # STLPort doesn't support off with vc7 and vc8. + # This is essentially a usage-requirement on the stlport library. + switch $(toolset) + { + case vc7* : requirements += on ; + case vc8* : requirements += on ; + case vc-7* : requirements += on ; + case vc-8* : requirements += on ; + } + } + } + case intel-win32* : + { + # dynamic runtime only comes in the multi-threading flavor + if dynamic in $(properties) { requirements += multi ; } + } + } + requirements = [ unique $(requirements) ] ; + properties = + [ sort + [ difference $(properties) : [ get-properties $(requirements:G) : $(properties) ] ] + $(requirements) + ] ; + return $(subvariant-path) $(properties) ; +} diff --git a/v1/cw-8.3-tools.jam b/v1/cw-8.3-tools.jam new file mode 100644 index 000000000..d479199b4 --- /dev/null +++ b/v1/cw-8.3-tools.jam @@ -0,0 +1,12 @@ +#~ Copyright 2004 Rene Rivera. +#~ 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 following #// line will be used by the regression test table generation +# program as the column heading for HTML tables. Must not include version number. +#//Metrowerks
CodeWarrior
+ +{ + local CW_VERSION = 8.0 ; + extends-toolset cw ; +} diff --git a/v1/msvc-stlport-tools.jam b/v1/msvc-stlport-tools.jam index 6e82284b0..77f07b017 100644 --- a/v1/msvc-stlport-tools.jam +++ b/v1/msvc-stlport-tools.jam @@ -1,132 +1,19 @@ -# -# This is msvc-stlport-tools.jam. It adds support for STLport used with -# the msvc toolset. -# -# Written by Markus Schöpflin. -# Originally based on "gcc-stlport-tools.jam", copyrighted by David -# Abrahams and Carlos Pinto Coelho 2001. -# -# To use it, you have to: -# -# 1. specify msvc-stlport as the tool name, for example by placing -# TOOLS = msvc-stlport ; -# in your jam rules file. -# -# 2a. Set STLPORT_PATH to point to the directory _above_ the STLport -# directory. This assumes that you didn't rename the STLport folder -# and allows for automatic selection of multiple STLport versions. -# -# and / or -# -# 2b. For STLPort version X.Y, set STLPORT_X.Y_PATH to the STLport -# directory for each STLport version you are going to use. -# This also overrides any setting of STLPORT_PATH for this version. -# -# NOTE: For msvc, the link libs are pulled in by the STLport header files -# automatically; there's no need to specify them manually. -# +# Copyright 2004 Rene Rivera. +# 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 following #// line will be used by the regression test table generation # program as the column heading for HTML tables. Must not include version number. #//Micro-
soft
VC++

STLport -{ - # This is simply an extension to the msvc toolset. However, - # STLPort doesn't have any single-threaded builds, so we're going - # to force all such targets to be built with multithread support. - # This is essentially a usage-requirement on the stlport library. - local gBUILD_PROPERTIES = [ difference $(gBUILD_PROPERTIES) : single ] multi ; - extends-toolset msvc ; -} +extends-toolset msvc ; +CURR_TOOLSET = msvc-stlport ; +STLPORT_LIB_BASE_NAME = stlport_vc60 ; -MSVC_STDHDRS = $(STDHDRS) ; -MSVC_STDLIBPATH = $(STDLIBPATH) ; +# bring in the STLPort configuration +SEARCH on stlport.jam = $(BOOST_BUILD_PATH) ; +include stlport.jam ; -STDHDRS = ; -STDLIBPATH = ; - -# STLport iostreams or native iostreams -feature stlport-iostream : on off ; - -STLPORT_VERSION ?= 4.5.3 ; -STLPORT_VERSIONS ?= 4.6 4.5 4.0 ; -# major versions of STLport -feature stlport-version : $(STLPORT_VERSION) $(STLPORT_VERSIONS) ; - -feature stlport-cstd-namespace : std global ; - - -############################################################################# - -# Returns a path which is assumed to be the root of the STLport installation. -# -# The result depends on the current version X.Y of STLport. -# 1. If global STLPORT__PATH is set, return it. -# 2. If global STLPORT_PATH is set, return $(STLPORT_PATH)/STLport- -# -rule get-stlport-root -{ - local version ; - version = [ get-values : $(gBUILD_PROPERTIES) ] ; - version ?= $(STLPORT_VERSION) ; - - local path ; - path ?= $(STLPORT_$(version)_PATH) ; - path ?= $(STLPORT_PATH)$(SLASH)STLport-$(version) ; - - if $(version) && ! $(path) - { - local dollar = "$" ; - ECHO **** No STLPORT_PATH configured. *** ; - ECHO To configure STLPort for use with the msvc-stlport toolset, the following variables can be set: ; - ECHO ; - ECHO STLPORT_PATH - A directory containing at least one subdirectory of the form /STLPort- ; - ECHO " where STLPort installations can be found." ; - ECHO ; - ECHO STLPORT__PATH - The directory where the specific STLPort installation can be ; - ECHO " found, in case there is no central location appropriate for STLPORT_PATH, above, or a" ; - ECHO " particular version's installation is not located in the usual place." ; - ECHO ; - ECHO STLPORT_VERSION - The version of STLPort in use by default. Defaults to \"4.5.3\". Other ; - ECHO " values can be selected in parallel setting the build property to" ; - ECHO " values from the list of $(dollar)(STLPORT_VERSIONS)" ; - ECHO ; - ECHO STLPORT_VERSIONS - Alternate versions of STLport available on this machine. Defaults to \"4.5 4.0\". ; - ECHO ; - ECHO "Note that STLPort iostreams are /not/ in use by default. To enable them, you must place" ; - ECHO " on in your BUILD variable or in target requirements." ; - EXIT ; - } - - return $(path) ; -} - -############################################################################# - -# flags which work for any STLport version - -flags msvc-stlport STDHDRS : [ join [ get-stlport-root ] $(SLASH)stlport ] ; -flags msvc-stlport VC_STDLIB_PATH on : [ join [ get-stlport-root ] $(SLASH)lib ] ; -flags msvc-stlport STDLIBPATH on : [ join [ get-stlport-root ] $(SLASH)lib ] ; - - -flags msvc-stlport THIS_FLAG_IS_UNUSED_BUT_ENSURES_TAG_ISNT_IGNORED : ; - -# special flags for STLport 4.0 -{ - local stl = _STLP ; - if 4.0 in $(gBUILD_PROPERTIES) - { - stl = __STL ; - } - - flags msvc-stlport DEFINES off : $(stl)_NO_SGI_IOSTREAMS=1 ; - flags msvc-stlport DEFINES std : $(stl)_DO_IMPORT_CSTD_FUNCTIONS=1 ; - flags msvc-stlport DEFINES debug : $(stl)_DEBUG=1 $(stl)_DEBUG_UNINITIALIZED=1 ; -} - -# Append the old values for STDHDRS and STDLIBPATH - -flags msvc-stlport STDHDRS : $(MSVC_STDHDRS) ; -flags msvc-stlport STDLIBPATH : $(MSVC_STDLIBPATH) ; +flags msvc-stlport VC_STDLIB_PATH on : [ join [ get-stlport-root ] $(SLASH)$(STLPORT_LIB_DIRECTORY) ] ; +#~ flags msvc-stlport THIS_FLAG_IS_UNUSED_BUT_ENSURES_TAG_ISNT_IGNORED : ; diff --git a/v1/vc7-stlport-tools.jam b/v1/vc7-stlport-tools.jam index 04f9758bd..3cc1d5013 100644 --- a/v1/vc7-stlport-tools.jam +++ b/v1/vc7-stlport-tools.jam @@ -1,11 +1,11 @@ -{ - # This is simply an extension to the msvc-stlport toolset. However, - # STLPort doesn't support off with vc7. - # This is essentially a usage-requirement on the stlport library. - local gBUILD_PROPERTIES = [ difference $(gBUILD_PROPERTIES) : off ] on ; - STLPORT_VERSION ?= 4.6 ; - extends-toolset msvc-stlport ; -} +extends-toolset msvc-stlport ; + +CURR_TOOLSET = vc7-stlport ; +STLPORT_LIB_BASE_NAME = stlport_vc70 ; + +# bring in the STLPort configuration +SEARCH on stlport.jam = $(BOOST_BUILD_PATH) ; +include stlport.jam ; # singleton variables... set-as-singleton VC7_ROOT ; diff --git a/v1/vc7.1-stlport-tools.jam b/v1/vc7.1-stlport-tools.jam index 246cc131c..229b77737 100644 --- a/v1/vc7.1-stlport-tools.jam +++ b/v1/vc7.1-stlport-tools.jam @@ -1,12 +1,11 @@ -{ - # This is simply an extension to the msvc-stlport toolset. However, - # STLPort doesn't support off with vc7. - # This is essentially a usage-requirement on the stlport library. - local gBUILD_PROPERTIES = [ difference $(gBUILD_PROPERTIES) : off ] on ; - STLPORT_VERSION ?= 4.6 ; - extends-toolset msvc-stlport ; -} +extends-toolset msvc ; +CURR_TOOLSET = vc-7.1-stlport ; +STLPORT_LIB_BASE_NAME = stlport_vc71 ; + +# bring in the STLPort configuration +SEARCH on stlport.jam = $(BOOST_BUILD_PATH) ; +include stlport.jam ; # singleton variables... set-as-singleton VC71_ROOT ; @@ -22,12 +21,10 @@ VC_PDB_NAME = vc71 ; feature native-wchar_t : off on ; -flags vc7.1 CFLAGS : /Op ; -flags vc7.1 C++FLAGS : /Zc:forScope ; -flags vc7.1 C++FLAGS on : /Zc:wchar_t ; +flags vc-7.1-stlport CFLAGS : /Op ; +flags vc-7.1-stlport C++FLAGS : /Zc:forScope ; +flags vc-7.1-stlport C++FLAGS on : /Zc:wchar_t ; # The following #// line will be used by the regression test table generation # program as the column heading for HTML tables. Must not include version number. #//Micro-
soft
VC++

STLport - -