|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r54880 - in branches/release/tools/build/v2: build doc/src tools tools/types
From: ghost_at_[hidden]
Date: 2009-07-11 07:04:33
Author: vladimir_prus
Date: 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
New Revision: 54880
URL: http://svn.boost.org/trac/boost/changeset/54880
Log:
Wholesale merge from trunk.
Added:
branches/release/tools/build/v2/tools/convert.jam
- copied unchanged from r54879, /trunk/tools/build/v2/tools/convert.jam
Text files modified:
branches/release/tools/build/v2/build/generators.jam | 24 +++++++++++-
branches/release/tools/build/v2/build/targets.jam | 2
branches/release/tools/build/v2/doc/src/advanced.xml | 35 ++++++++++++++----
branches/release/tools/build/v2/tools/borland.jam | 8 +---
branches/release/tools/build/v2/tools/builtin.jam | 9 ++++
branches/release/tools/build/v2/tools/common.jam | 76 ++++++++++++++++++++++++++-------------
branches/release/tools/build/v2/tools/gcc.jam | 73 +++++++++++++++++++++++++++++++++----
branches/release/tools/build/v2/tools/intel-linux.jam | 6 +++
branches/release/tools/build/v2/tools/msvc.jam | 22 +++++++++--
branches/release/tools/build/v2/tools/package.jam | 25 +++++++++++-
branches/release/tools/build/v2/tools/python.jam | 4 +-
branches/release/tools/build/v2/tools/sun.jam | 4 ++
branches/release/tools/build/v2/tools/types/lib.jam | 2
13 files changed, 228 insertions(+), 62 deletions(-)
Modified: branches/release/tools/build/v2/build/generators.jam
==============================================================================
--- branches/release/tools/build/v2/build/generators.jam (original)
+++ branches/release/tools/build/v2/build/generators.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -1215,6 +1215,10 @@
{
viable-generators += $(g) ;
}
+ else
+ {
+ generators.dout [ indent ] " generator " [ $(g).id ] "is active, discaring" ;
+ }
}
# Generators which override 'all'.
@@ -1320,8 +1324,20 @@
# 'construct' in stack, returns only targets of requested 'target-type',
# otherwise, returns also unused sources and additionally generated targets.
#
-rule construct ( project name ? : target-type : property-set * : sources * )
+# If 'top-level' is set, does not suppress generators that are already
+# used in the stack. This may be useful in cases where a generator
+# has to build a metatargets -- for example a target corresponding to
+# built tool.
+#
+rule construct ( project name ? : target-type : property-set * : sources * : top-level ? )
{
+ local saved-stack ;
+ if $(top-level)
+ {
+ saved-active = $(.active-generators) ;
+ .active-generators = ;
+ }
+
if (.construct-stack)
{
ensure-type $(sources) ;
@@ -1348,11 +1364,15 @@
decrease-indent ;
.construct-stack = $(.construct-stack[2-]) ;
+
+ if $(top-level)
+ {
+ .active-generators = $(saved-active) ;
+ }
return $(result) ;
}
-
# Given 'result', obtained from some generator or generators.construct, adds
# 'raw-properties' as usage requirements to it. If result already contains usage
# requirements -- that is the first element of result of an instance of the
Modified: branches/release/tools/build/v2/build/targets.jam
==============================================================================
--- branches/release/tools/build/v2/build/targets.jam (original)
+++ branches/release/tools/build/v2/build/targets.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -1434,7 +1434,7 @@
local r = [ generators.construct $(self.project) $(name:S=) : $(self.type)
: [ property-set.create [ $(property-set).raw ]
<main-target-type>$(self.type) ]
- : $(source-targets) ] ;
+ : $(source-targets) : true ] ;
if ! $(r)
{
ECHO "warn: Unable to construct" [ full-name ] ;
Modified: branches/release/tools/build/v2/doc/src/advanced.xml
==============================================================================
--- branches/release/tools/build/v2/doc/src/advanced.xml (original)
+++ branches/release/tools/build/v2/doc/src/advanced.xml 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -737,6 +737,17 @@
</row>
<row>
+ <entry>address-model</entry>
+
+ <entry>32,64</entry>
+
+ <entry>Explicitly request either 32-bit or 64-bit code generation. This typically
+ requires that your compiler is appropriately configured. Please refer to
+ <xref linkend="bbv2.reference.tools.compilers"/> and your compiler documentation
+ in case of problems.</entry>
+ </row>
+
+ <row>
<entry>toolset</entry>
<entry>(Depends on configuration)</entry>
@@ -745,35 +756,43 @@
</row>
<row>
- <entry>cxxflags</entry>
+ <entry>include</entry>
<entry>(Arbitrary string)</entry>
- <entry>Custom options to pass to the C++ compiler.</entry>
+ <entry>Additional include paths for C and C++ compilers.</entry>
</row>
<row>
- <entry>cflags</entry>
+ <entry>define</entry>
<entry>(Arbitrary string)</entry>
- <entry>Custom options to pass to the C compiler.</entry>
+ <entry>Additional macro definitions for C and C++ compilers.</entry>
</row>
<row>
- <entry>includes</entry>
+ <entry>cxxflags</entry>
<entry>(Arbitrary string)</entry>
- <entry>Additional include paths for C and C++ compilers.</entry>
+ <entry>Custom options to pass to the C++ compiler.</entry>
</row>
<row>
- <entry>define</entry>
+ <entry>cflags</entry>
<entry>(Arbitrary string)</entry>
- <entry>Additional macro definitions for C and C++ compilers.</entry>
+ <entry>Custom options to pass to the C compiler.</entry>
+ </row>
+
+ <row>
+ <entry>linkflags</entry>
+
+ <entry>(Arbitrary string)</entry>
+
+ <entry>Custom options to pass to the C++ linker.</entry>
</row>
<row>
Modified: branches/release/tools/build/v2/tools/borland.jam
==============================================================================
--- branches/release/tools/build/v2/tools/borland.jam (original)
+++ branches/release/tools/build/v2/tools/borland.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -108,10 +108,6 @@
# -q no banner
# -c compile to object
# -P C++ code regardless of file extention
-# -Ve zero sized empty base classes, this option is on in the IDE by default
-# and effects binary compatibility.
-# -Vx zero sized empty members, this option is on in the IDE by default
-# and effects binary compatibility.
# -a8 8 byte alignment, this option is on in the IDE by default
# and effects binary compatibility.
#
@@ -121,13 +117,13 @@
actions compile.c++
{
- "$(CONFIG_COMMAND)" -j5 -g255 -q -c -P -Ve -Vx -a8 -b- $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -I"$(STDHDRS)" -o"$(<)" "$(>)"
+ "$(CONFIG_COMMAND)" -j5 -g255 -q -c -P -a8 -b- $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -I"$(STDHDRS)" -o"$(<)" "$(>)"
}
# For C, we don't pass -P flag
actions compile.c
{
- "$(CONFIG_COMMAND)" -j5 -g255 -q -c -Ve -Vx -a8 -b- $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -I"$(STDHDRS)" -o"$(<)" "$(>)"
+ "$(CONFIG_COMMAND)" -j5 -g255 -q -c -a8 -b- $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -I"$(STDHDRS)" -o"$(<)" "$(>)"
}
Modified: branches/release/tools/build/v2/tools/builtin.jam
==============================================================================
--- branches/release/tools/build/v2/tools/builtin.jam (original)
+++ branches/release/tools/build/v2/tools/builtin.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -30,6 +30,7 @@
import utility ;
import virtual-target ;
import message ;
+import convert ;
# FIXME: the following generate module import is not needed here but removing it
# too hastly will break using code (e.g. the main Boost library Jamroot file)
@@ -38,7 +39,13 @@
.os-names = aix bsd cygwin darwin freebsd hpux iphone linux netbsd
- openbsd osf qnx qnxnto sgi solaris unix unixware windows ;
+ openbsd osf qnx qnxnto sgi solaris unix unixware windows
+ elf # Not actually an OS -- used for targeting bare metal where
+ # object format is ELF. This catches both -elf and -eabi gcc
+ # targets and well as other compilers targeting ELF. It is not
+ # clear how often do we need to key of ELF specifically as opposed
+ # to other bare metal targets, but let's stick with gcc naming.
+ ;
# Feature used to determine which OS we're on. New <target-os> and <host-os>
# features should be used instead.
Modified: branches/release/tools/build/v2/tools/common.jam
==============================================================================
--- branches/release/tools/build/v2/tools/common.jam (original)
+++ branches/release/tools/build/v2/tools/common.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -501,10 +501,12 @@
# see below.
nl = "
" ;
+ q = "" ;
}
else
{
nl = "\n" ;
+ q = "\"" ;
}
# Returns the command needed to set an environment variable on the current
@@ -526,7 +528,7 @@
# sequence that messes up the executed export command which then reports
# that the passed variable name is incorrect.
# But we have a check for cygwin in kernel/bootstrap.jam already.
- return "$(variable)=$(value)$(nl)export $(variable)$(nl)" ;
+ return "$(variable)=$(q)$(value)$(q)$(nl)export $(variable)$(nl)" ;
}
}
@@ -751,37 +753,42 @@
#
rule format-name ( format * : name : type ? : property-set )
{
- if [ type.is-derived $(type) LIB ]
+ local result = "" ;
+ for local f in $(format)
{
- local result = "" ;
- for local f in $(format)
+ switch $(f:G)
{
- switch $(f:G)
- {
- case <base> :
+ case <base> :
result += $(name:B) ;
-
- case <toolset> :
+
+ case <toolset> :
result += [ join-tag $(f:G=) : [ toolset-tag $(name) : $(type) :
- $(property-set) ] ] ;
-
- case <threading> :
+ $(property-set) ] ] ;
+
+ case <threading> :
result += [ join-tag $(f:G=) : [ threading-tag $(name) : $(type)
- : $(property-set) ] ] ;
-
- case <runtime> :
+ : $(property-set) ] ] ;
+
+ case <runtime> :
result += [ join-tag $(f:G=) : [ runtime-tag $(name) : $(type) :
- $(property-set) ] ] ;
+ $(property-set) ] ] ;
+
+ case <qt> :
+ result += [ join-tag $(f:G=) : [ qt-tag $(name) : $(type) :
+ $(property-set) ] ] ;
+
+ case <address-model> :
+ result += [ join-tag $(f:G=) : [ address-model-tag $(name) : $(type) :
+ $(property-set) ] ] ;
- case <version:*> :
+ case <version:*> :
local key = [ MATCH <version:(.*)> : $(f:G) ] ;
local version = [ $(property-set).get <$(key)> ] ;
version ?= $(key) ;
- version = [ MATCH "^([^.]+)[.]([^.]+)[.]?([^.]*)" : $(version) ]
- ;
+ version = [ MATCH "^([^.]+)[.]([^.]+)[.]?([^.]*)" : $(version) ] ;
result += [ join-tag $(f:G=) : $(version[1])_$(version[2]) ] ;
- case <property:*> :
+ case <property:*> :
local key = [ MATCH <property:(.*)> : $(f:G) ] ;
local p0 = [ MATCH <($(key))> : [ $(property-set).raw ] ] ;
if $(p0)
@@ -793,14 +800,13 @@
}
}
- case * :
+ case * :
result += $(f:G=) ;
- }
}
- result = [ virtual-target.add-prefix-and-suffix $(result:J=) : $(type) :
- $(property-set) ] ;
- return $(result) ;
}
+ result = [ virtual-target.add-prefix-and-suffix $(result:J=) : $(type) :
+ $(property-set) ] ;
+ return $(result) ;
}
@@ -846,6 +852,7 @@
#case mingw* : tag += mgw ;
case mipspro* : tag += mp ;
case msvc* : tag += vc ;
+ case qcc* : tag += qcc ;
case sun* : tag += sw ;
case tru64cxx* : tag += tru ;
case vacpp* : tag += xlc ;
@@ -922,6 +929,25 @@
return $(tag:J=) ;
}
+# Create a tag for the Qt library version
+# "<qt>4.6.0" will result in tag "qt460"
+local rule qt-tag ( name : type ? : property-set )
+{
+ local properties = [ $(property-set).get <qt> ] ;
+ local version = [ MATCH "([0123456789]+)[.]?([0123456789]*)[.]?([0123456789]*)"
+ : $(properties) ] ;
+ local tag = "qt"$(version:J=) ;
+ return $(tag) ;
+}
+
+# Create a tag for the address-model
+# <address-model>64 will simply generate "64"
+local rule address-model-tag ( name : type ? : property-set )
+{
+ local tag = ;
+ local version = [ $(property-set).get <address-model> ] ;
+ return $(version) ;
+}
rule __test__ ( )
{
Modified: branches/release/tools/build/v2/tools/gcc.jam
==============================================================================
--- branches/release/tools/build/v2/tools/gcc.jam (original)
+++ branches/release/tools/build/v2/tools/gcc.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -349,6 +349,40 @@
}
}
+rule setup-address-model ( targets * : sources * : properties * )
+{
+ local model = [ feature.get-values address-model : $(properties) ] ;
+ if $(model)
+ {
+ local option ;
+ local os = [ feature.get-values target-os : $(properties) ] ;
+ if $(os) = aix
+ {
+ if $(model) = 32
+ {
+ option = -maix32 ;
+ }
+ else
+ {
+ option = -maix64 ;
+ }
+ }
+ else
+ {
+ if $(model) = 32
+ {
+ option = -m32 ;
+ }
+ else
+ {
+ option = -m64 ;
+ }
+ }
+ OPTIONS on $(targets) += $(option) ;
+ }
+}
+
+
# FIXME: this should not use os.name.
if [ os.name ] != NT && [ os.name ] != OSF && [ os.name ] != HPUX && [ os.name ] != AIX
{
@@ -369,6 +403,7 @@
{
setup-threading $(targets) : $(sources) : $(properties) ;
setup-fpic $(targets) : $(sources) : $(properties) ;
+ setup-address-model $(targets) : $(sources) : $(properties) ;
}
actions compile.c++.pch
@@ -380,6 +415,7 @@
{
setup-threading $(targets) : $(sources) : $(properties) ;
setup-fpic $(targets) : $(sources) : $(properties) ;
+ setup-address-model $(targets) : $(sources) : $(properties) ;
}
actions compile.c.pch
@@ -391,6 +427,7 @@
{
setup-threading $(targets) : $(sources) : $(properties) ;
setup-fpic $(targets) : $(sources) : $(properties) ;
+ setup-address-model $(targets) : $(sources) : $(properties) ;
# Some extensions are compiled as C++ by default. For others, we need to
# pass -x c++. We could always pass -x c++ but distcc does not work with it.
@@ -420,6 +457,7 @@
{
setup-threading $(targets) : $(sources) : $(properties) ;
setup-fpic $(targets) : $(sources) : $(properties) ;
+ setup-address-model $(targets) : $(sources) : $(properties) ;
# If we use the name g++ then default file suffix -> language mapping does
# not work. So have to pass -x option. Maybe, we can work around this by
@@ -542,6 +580,28 @@
generators.override gcc.mingw.link : gcc.link ;
generators.override gcc.mingw.link.dll : gcc.link.dll ;
+# Cygwin is similar to msvc and mingw in that it uses import libraries.
+# While in simple cases, it can directly link to a shared library,
+# it is believed to be slower, and not always possible. Define cygwin-specific
+# generators here.
+
+g = [ new gcc-linking-generator gcc.cygwin.link
+ : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
+ : EXE
+ : <toolset>gcc <target-os>cygwin ] ;
+$(g).set-rule-name gcc.link ;
+generators.register $(g) ;
+
+g = [ new gcc-linking-generator gcc.cygwin.link.dll
+ : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
+ : IMPORT_LIB SHARED_LIB
+ : <toolset>gcc <target-os>cygwin ] ;
+$(g).set-rule-name gcc.link.dll ;
+generators.register $(g) ;
+
+generators.override gcc.cygwin.link : gcc.link ;
+generators.override gcc.cygwin.link.dll : gcc.link.dll ;
+
# Declare flags for linking.
# First, the common flags.
toolset.flags gcc.link OPTIONS <debug-symbols>on : -g ;
@@ -553,6 +613,7 @@
toolset.flags gcc.link LIBRARIES <library-file> ;
toolset.flags gcc.link.dll .IMPLIB-COMMAND <target-os>windows : "-Wl,--out-implib," ;
+toolset.flags gcc.link.dll .IMPLIB-COMMAND <target-os>cygwin : "-Wl,--out-implib," ;
# For <runtime-link>static we made sure there are no dynamic libraries in the
# link. On HP-UX not all system libraries exist as archived libraries (for
@@ -722,6 +783,7 @@
rule link ( targets * : sources * : properties * )
{
setup-threading $(targets) : $(sources) : $(properties) ;
+ setup-address-model $(targets) : $(sources) : $(properties) ;
SPACE on $(targets) = " " ;
# Serialize execution of the 'link' action, since running N links in
# parallel is just slower. For now, serialize only gcc links, it might be a
@@ -786,6 +848,7 @@
rule link.dll ( targets * : sources * : properties * )
{
setup-threading $(targets) : $(sources) : $(properties) ;
+ setup-address-model $(targets) : $(sources) : $(properties) ;
SPACE on $(targets) = " " ;
JAM_SEMAPHORE on $(targets) = <s>gcc-link-semaphore ;
}
@@ -873,8 +936,6 @@
# Set architecture/instruction-set options.
#
# x86 and compatible
-toolset.flags gcc OPTIONS <architecture>x86/<address-model>32 : -m32 ;
-toolset.flags gcc OPTIONS <architecture>x86/<address-model>64 : -m64 ;
cpu-flags gcc OPTIONS : x86 : i386 : -march=i386 : default ;
cpu-flags gcc OPTIONS : x86 : i486 : -march=i486 ;
cpu-flags gcc OPTIONS : x86 : i586 : -march=i586 ;
@@ -908,8 +969,6 @@
cpu-flags gcc OPTIONS : x86 : c3 : -march=c3 ;
cpu-flags gcc OPTIONS : x86 : c3-2 : -march=c3-2 ;
# Sparc
-toolset.flags gcc OPTIONS <architecture>sparc/<address-model>32 : -m32 ;
-toolset.flags gcc OPTIONS <architecture>sparc/<address-model>64 : -m64 ;
cpu-flags gcc OPTIONS : sparc : c3 : -mcpu=c3 : default ;
cpu-flags gcc OPTIONS : sparc : v7 : -mcpu=v7 ;
cpu-flags gcc OPTIONS : sparc : cypress : -mcpu=cypress ;
@@ -926,8 +985,6 @@
cpu-flags gcc OPTIONS : sparc : ultrasparc : -mcpu=ultrasparc ;
cpu-flags gcc OPTIONS : sparc : ultrasparc3 : -mcpu=ultrasparc3 ;
# RS/6000 & PowerPC
-toolset.flags gcc OPTIONS <architecture>power/<address-model>32 : -m32 ;
-toolset.flags gcc OPTIONS <architecture>power/<address-model>64 : -m64 ;
cpu-flags gcc OPTIONS : power : 403 : -mcpu=403 ;
cpu-flags gcc OPTIONS : power : 505 : -mcpu=505 ;
cpu-flags gcc OPTIONS : power : 601 : -mcpu=601 ;
@@ -961,6 +1018,4 @@
cpu-flags gcc OPTIONS : power : rsc : -mcpu=rsc ;
cpu-flags gcc OPTIONS : power : rs64a : -mcpu=rs64 ;
# AIX variant of RS/6000 & PowerPC
-toolset.flags gcc OPTIONS <architecture>power/<address-model>32/<target-os>aix : -maix32 ;
-toolset.flags gcc OPTIONS <architecture>power/<address-model>64/<target-os>aix : -maix64 ;
-toolset.flags gcc AROPTIONS <architecture>power/<address-model>64/<target-os>aix : "-X 64" ;
+toolset.flags gcc AROPTIONS <address-model>64/<target-os>aix : "-X 64" ;
Modified: branches/release/tools/build/v2/tools/intel-linux.jam
==============================================================================
--- branches/release/tools/build/v2/tools/intel-linux.jam (original)
+++ branches/release/tools/build/v2/tools/intel-linux.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -112,6 +112,7 @@
{
gcc.setup-threading $(targets) : $(sources) : $(properties) ;
gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ gcc.setup-address-model $(targets) : $(sources) : $(properties) ;
DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ;
}
@@ -124,6 +125,7 @@
{
gcc.setup-threading $(targets) : $(sources) : $(properties) ;
gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ gcc.setup-address-model $(targets) : $(sources) : $(properties) ;
DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ;
}
@@ -136,6 +138,7 @@
{
gcc.setup-threading $(targets) : $(sources) : $(properties) ;
gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ gcc.setup-address-model $(targets) : $(sources) : $(properties) ;
}
#
# Compiling a pch first deletes any existing *.pchi file, as Intel's compiler
@@ -151,6 +154,7 @@
{
gcc.setup-threading $(targets) : $(sources) : $(properties) ;
gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ gcc.setup-address-model $(targets) : $(sources) : $(properties) ;
}
actions compile.c.pch
@@ -161,6 +165,7 @@
rule link ( targets * : sources * : properties * )
{
gcc.setup-threading $(targets) : $(sources) : $(properties) ;
+ gcc.setup-address-model $(targets) : $(sources) : $(properties) ;
SPACE on $(targets) = " " ;
JAM_SEMAPHORE on $(targets) = <s>gcc-link-semaphore ;
}
@@ -173,6 +178,7 @@
rule link.dll ( targets * : sources * : properties * )
{
gcc.setup-threading $(targets) : $(sources) : $(properties) ;
+ gcc.setup-address-model $(targets) : $(sources) : $(properties) ;
SPACE on $(targets) = " " ;
JAM_SEMAPHORE on $(targets) = <s>gcc-link-semaphore ;
}
Modified: branches/release/tools/build/v2/tools/msvc.jam
==============================================================================
--- branches/release/tools/build/v2/tools/msvc.jam (original)
+++ branches/release/tools/build/v2/tools/msvc.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -254,6 +254,11 @@
# 8.0 and above only has multi-threaded static RTL.
toolset.flags $(toolset).compile CFLAGS $(conditions)/<runtime-debugging>off/<runtime-link>static/<threading>single : /MT ;
toolset.flags $(toolset).compile CFLAGS $(conditions)/<runtime-debugging>on/<runtime-link>static/<threading>single : /MTd ;
+
+ # Specify target machine type so the linker will not need to guess.
+ toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-amd64) : /MACHINE:X64 ;
+ toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-i386) : /MACHINE:X86 ;
+ toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-ia64) : /MACHINE:IA64 ;
}
toolset.pop-checking-for-flags-module ;
}
@@ -677,11 +682,15 @@
# version from the path.
# FIXME: We currently detect both Microsoft Visual Studio 9.0 and
# 9.0express as 9.0 here.
- if [ MATCH "(Microsoft Visual Studio 9)" : $(command) ]
+ if [ MATCH "(Microsoft Visual Studio 10)" : $(command) ]
+ {
+ version = 10.0 ;
+ }
+ else if [ MATCH "(Microsoft Visual Studio 9)" : $(command) ]
{
version = 9.0 ;
}
- if [ MATCH "(Microsoft Visual Studio 8)" : $(command) ]
+ else if [ MATCH "(Microsoft Visual Studio 8)" : $(command) ]
{
version = 8.0 ;
}
@@ -729,7 +738,10 @@
# MSVC 7.1 compiler even though it thinks it is using the msvc-9.0
# toolset version.
command = [ common.get-absolute-tool-path $(command[-1]) ] ;
-
+ }
+
+ if $(command)
+ {
local parent = [ path.make $(command) ] ;
parent = [ path.parent $(parent) ] ;
parent = [ path.native $(parent) ] ;
@@ -1263,7 +1275,7 @@
# Known toolset versions, in order of preference.
-.known-versions = 9.0 9.0express 8.0 8.0express 7.1 7.1toolkit 7.0 6.0 ;
+.known-versions = 10.0 9.0 9.0express 8.0 8.0express 7.1 7.1toolkit 7.0 6.0 ;
# Version aliases.
.version-alias-6 = 6.0 ;
@@ -1271,6 +1283,7 @@
.version-alias-7 = 7.0 ;
.version-alias-8 = 8.0 ;
.version-alias-9 = 9.0 ;
+.version-alias-10 = 10.0 ;
# Names of registry keys containing the Visual C++ installation path (relative
# to "HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft").
@@ -1281,6 +1294,7 @@
.version-8.0express-reg = "VCExpress\\8.0\\Setup\\VC" ;
.version-9.0-reg = "VisualStudio\\9.0\\Setup\\VC" ;
.version-9.0express-reg = "VCExpress\\9.0\\Setup\\VC" ;
+.version-10.0-reg = "VisualStudio\\10.0\\Setup\\VC" ;
# Visual C++ Toolkit 2003 does not store its installation path in the registry.
# The environment variable 'VCToolkitInstallDir' and the default installation
Modified: branches/release/tools/build/v2/tools/package.jam
==============================================================================
--- branches/release/tools/build/v2/tools/package.jam (original)
+++ branches/release/tools/build/v2/tools/package.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -83,8 +83,26 @@
stage.install $(name)-bin : $(binaries) : $(requirements)
<location>$(bin-locate) ;
- stage.install $(name)-lib : $(binaries) $(libraries) : $(requirements)
- <location>$(lib-locate) <install-dependencies>on <install-type>LIB ;
+ alias $(name)-lib : $(name)-lib-shared $(name)-lib-static ;
+
+ # Since the install location of shared libraries differs on universe
+ # and cygwin, use target alternatives to make different targets.
+ # We should have used indirection conditioanl requirements, but it's
+ # awkward to pass bin-locate and lib-locate from there to another rule.
+ alias $(name)-lib-shared : $(name)-lib-shared-universe ;
+ alias $(name)-lib-shared : $(name)-lib-shared-cygwin : <target-os>cygwin ;
+
+ # For shared libraries, we install both explicitly specified one and the
+ # shared libraries that the installed executables depend on.
+ stage.install $(name)-lib-shared-universe : $(binaries) $(libraries) : $(requirements)
+ <location>$(lib-locate) <install-dependencies>on <install-type>SHARED_LIB ;
+ stage.install $(name)-lib-shared-cygwin : $(binaries) $(libraries) : $(requirements)
+ <location>$(bin-locate) <install-dependencies>on <install-type>SHARED_LIB ;
+
+ # For static libraries, we do not care about executable dependencies, since
+ # static libraries are already incorporated into them.
+ stage.install $(name)-lib-static : $(libraries) : $(requirements)
+ <location>$(lib-locate) <install-dependencies>on <install-type>STATIC_LIB ;
stage.install $(name)-headers : $(headers) : $(requirements)
<location>$(include-locate)$(install-header-subdir)
<install-source-root>$(install-source-root) ;
@@ -94,6 +112,7 @@
local project-module = [ $(c).project-module ] ;
module $(project-module)
{
- explicit $(1)-bin $(1)-lib $(1)-headers $(1) ;
+ explicit $(1)-bin $(1)-lib $(1)-headers $(1) $(1)-lib-shared $(1)-lib-static
+ $(1)-lib-shared-universe $(1)-lib-shared-cygwin ;
}
}
Modified: branches/release/tools/build/v2/tools/python.jam
==============================================================================
--- branches/release/tools/build/v2/tools/python.jam (original)
+++ branches/release/tools/build/v2/tools/python.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -91,8 +91,8 @@
#
# Example usage:
#
-# using python 2.3 ;
-# using python 2.3 : /usr/local/bin/python ;
+# using python : 2.3 ;
+# using python : 2.3 : /usr/local/bin/python ;
#
rule init ( version ? : cmd-or-prefix ? : includes * : libraries ?
: condition * : extension-suffix ? )
Modified: branches/release/tools/build/v2/tools/sun.jam
==============================================================================
--- branches/release/tools/build/v2/tools/sun.jam (original)
+++ branches/release/tools/build/v2/tools/sun.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -52,6 +52,10 @@
flags sun.compile OPTIONS <optimization>speed : -xO4 ;
flags sun.compile OPTIONS <optimization>space : -xO2 -xspace ;
flags sun.compile OPTIONS <threading>multi : -mt ;
+flags sun.compile OPTIONS <warnings>off : -erroff ;
+flags sun.compile OPTIONS <warnings>on : -erroff=%none ;
+flags sun.compile OPTIONS <warnings>all : -erroff=%none ;
+flags sun.compile OPTIONS <warnings-as-errors>on : -errwarn ;
flags sun.compile.c++ OPTIONS <inlining>off : +d ;
Modified: branches/release/tools/build/v2/tools/types/lib.jam
==============================================================================
--- branches/release/tools/build/v2/tools/types/lib.jam (original)
+++ branches/release/tools/build/v2/tools/types/lib.jam 2009-07-11 07:04:31 EDT (Sat, 11 Jul 2009)
@@ -9,7 +9,7 @@
type.set-generated-target-prefix LIB : : "lib" ;
type.set-generated-target-prefix LIB : <target-os>windows : "" ;
-type.set-generated-target-prefix LIB : <target-os>cygwin : "" ;
+type.set-generated-target-prefix LIB : <target-os>cygwin : "cyg" ;
# FIXME: should not register both extensions on both
# platforms.
Boost-Commit 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