config, detail, filesystem, system, tools, at 41278.

[SVN r41316]
This commit is contained in:
Beman Dawes 2007-11-23 17:03:14 +00:00
parent 8f3a7c6a0d
commit d4b923c4ca
38 changed files with 473 additions and 129 deletions

View File

@ -197,8 +197,8 @@ toolset intel-linux icc : "-o " : -D
## Intel C/C++ for Win32
toolset intel-win32 icl : /Fe : -D
: /nologo
[ opt --release : /ML /O2 /Ob2 /Gy /GF /GA /GB ]
[ opt --debug : /MLd /DEBUG /Z7 /Od /Ob0 ]
[ opt --release : /MT /O2 /Ob2 /Gy /GF /GA /GB ]
[ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 ]
-I$(--python-include) -I$(--extra-include)
: kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;
## KCC ?

View File

@ -483,6 +483,10 @@
# define OSPLAT "OSPLAT=390"
# endif
# ifdef __hppa
# define OSPLAT "OSPLAT=PARISC"
# endif
# ifndef OSPLAT
# define OSPLAT ""
# endif

View File

@ -63,7 +63,11 @@ void out_action(
case EXIT_TIMEOUT:
{
/* process expired, make user aware with explicit message */
fprintf(bjam_out, "%d second time limit exceeded\n", globs.timeout);
if ( action )
{
/* but only output for non-quietly actions */
fprintf(bjam_out, "%d second time limit exceeded\n", globs.timeout);
}
break;
}
default:
@ -71,16 +75,20 @@ void out_action(
}
/* print out the command output, if requested */
if (0 != out_data &&
( globs.pipe_action & 1 /* STDOUT_FILENO */ ||
globs.pipe_action == 0))
if ( action )
{
out_(out_data,bjam_out);
}
if (0 != err_data &&
globs.pipe_action & 2 /* STDERR_FILENO */)
{
out_(err_data,bjam_err);
/* but only output for non-quietly actions */
if (0 != out_data &&
( globs.pipe_action & 1 /* STDOUT_FILENO */ ||
globs.pipe_action == 0))
{
out_(out_data,bjam_out);
}
if (0 != err_data &&
globs.pipe_action & 2 /* STDERR_FILENO */)
{
out_(err_data,bjam_err);
}
}
fflush(bjam_out);

View File

@ -0,0 +1,55 @@
#~ Copyright 2007 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)
if ! $(BJAM_SUBTEST)
{
ECHO --- Testing \"actions quietly\"... ;
assert "...found 4 targets...
...updating 2 targets...
.a. subtest_a
echo [subtest_a] 0
echo [subtest_a] 1
echo [subtest_a] 2
[subtest_a] 0
[subtest_a] 1
[subtest_a] 2
.a. subtest_b
echo [subtest_b] 0
echo [subtest_b] 1
echo [subtest_b] 2
[subtest_b] 0
[subtest_b] 1
[subtest_b] 2
...updated 2 targets...
" : (==) : [ SHELL "$(ARGV[1]) -f actions_quietly.jam -sBJAM_SUBTEST=1 -d2" ] ;
assert "...found 4 targets...
...updating 2 targets...
...updated 2 targets...
" : (==) : [ SHELL "$(ARGV[1]) -f actions_quietly.jam -sBJAM_SUBTEST=1" ] ;
}
else
{
actions quietly .a.
{
echo [$(<:B)] 0
echo [$(<:B)] 1
echo [$(<:B)] 2
}
rule .a.
{
DEPENDS $(<) : $(>) ;
}
NOTFILE subtest ;
.a. subtest_a : subtest ;
.a. subtest_b : subtest ;
DEPENDS all : subtest_a subtest_b ;
}

View File

@ -41,6 +41,7 @@ rule assert ( expected * : test ? : obtained * )
}
}
include actions_quietly.jam ;
include builtin_shell.jam ;
include builtin_w32_getregnames.jam ;
include option_d2.jam ;

View File

@ -1,5 +1,5 @@
# Copyright 2003, 2005 Dave Abrahams
# Copyright 2006 Rene Rivera
# Copyright 2003, 2005, 2007 Dave Abrahams
# Copyright 2006, 2007 Rene Rivera
# Copyright 2003, 2004, 2005, 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)
@ -487,12 +487,200 @@ for t in $(virtual-targets)
{
actual-targets += [ $(t).actualize ] ;
}
# Was an XML dump requested?
.out-xml = [ MATCH --out-xml=(.*) : [ modules.peek : ARGV ] ] ;
if $(.out-xml)
{
# Get the qualified name of a virtual target.
rule full-target-name ( t )
{
local name = [ $(t).name ] ;
local project = [ $(t).project ] ;
local project-path = [ $(project).get location ] ;
return $(project-path)//$(name) ;
}
# Generate an XML file containing build statistics for each
# constituent
rule out-xml ( xml-file : constituents * )
{
# Prepare valid XML header and footer with some basic info
local nl = "
" ;
local jam = [ version.jam ] ;
local os = [ modules.peek : OS OSPLAT JAMUNAME ] "" ;
local timestamp = [ modules.peek : JAMDATE ] ;
local cwd = [ PWD ] ;
local command = [ modules.peek : ARGV ] ;
local bb-version = [ version.boost-build ] ;
.header on $(xml-file) =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"$(nl)<build format=\"1.0\" version=\"$(bb-version)\">"
"$(nl) <jam version=\"$(jam:J=.)\" />"
"$(nl) <os name=\"$(os[1])\" platform=\"$(os[2])\"><![CDATA[$(os[3-]:J= )]]></os>"
"$(nl) <timestamp><![CDATA[$(timestamp)]]></timestamp>"
"$(nl) <directory><![CDATA[$(cwd)]]></directory>"
"$(nl) <command><![CDATA[\"$(command:J=\" \")\"]]></command>"
;
.footer on $(xml-file) =
"$(nl)</build>" ;
# Generate target dependency graph
.contents on $(xml-file) +=
"$(nl) <targets>"
;
for local t in [ virtual-target.all-targets ]
{
local action = [ $(t).action ] ;
if $(action)
{
# If a target has no action, it has
# no dependencies.
local name = [ full-target-name $(t) ] ;
local sources = [ $(action).sources ] ;
local dependencies ;
for local s in $(sources)
{
dependencies += [ full-target-name $(s) ] ;
}
local path = [ $(t).path ] ;
local jam-target = [ $(t).actual-name ] ;
.contents on $(xml-file) +=
"$(nl) <target>"
"$(nl) <name><![CDATA[$(name)]]></name>"
"$(nl) <dependencies>"
"$(nl) <dependency><![CDATA[$(dependencies)]]></dependency>"
"$(nl) </dependencies>"
"$(nl) <path><![CDATA[$(path)]]></path>"
"$(nl) <jam-target><![CDATA[$(jam-target)]]></jam-target>"
"$(nl) </target>"
;
}
}
.contents on $(xml-file) +=
"$(nl) </targets>"
;
# Build $(xml-file) after $(constituents) and do so even if a
# constituent action fails, and regenerate the xml on every bjam run.
INCLUDES $(xml-file) : $(constituents) ;
ALWAYS $(xml-file) ;
__ACTION_RULE__ on $(xml-file) =
build-system.out-xml.generate-action ;
out-xml.generate $(xml-file) ;
}
# The actual build actions are here; if we did this work in the
# actions clause we would have to form a valid command line
# containing the result of @(...) below (the name of the XML file).
rule out-xml.generate-action (
xml-file args * :
status : user : system : command : output ? )
{
local contents =
[ on $(xml-file) return $(.header) $(.contents) $(.footer) ] ;
local f = @($(xml-file):E=$(contents)) ;
}
# Nothing to do here; the *real* actions happen in
# out-xml.generate-action
actions quietly out-xml.generate { }
# Define the out-xml file target, which depends on all the targets
# so that it runs the collection after the targets have run.
out-xml $(.out-xml) : $(actual-targets) ;
# Set up a global __ACTION_RULE__ that records all the available
# statistics about each actual target in a variable "on" the
# --out-xml target.
rule out-xml.collect (
xml-file target :
status : user : system : command : output ? )
{
local nl = "
" ;
# Open the action with some basic info.
.contents on $(xml-file) +=
"$(nl) <action status=\"$(status)\" user=\"$(user)\" system=\"$(system)\">"
;
# If we have an action object we can print out more detailed info.
local action = [ on $(target) return $(.action) ] ;
if $(action)
{
local action-name = [ $(action).action-name ] ;
local action-sources = [ $(action).sources ] ;
local action-props = [ $(action).properties ] ;
# The qualified name of the action which we created the target.
.contents on $(xml-file) +=
"$(nl) <name><![CDATA[$(action-name)]]></name>"
;
# The sources that made up the target.
.contents on $(xml-file) +=
"$(nl) <sources>"
;
for local source in $(action-sources)
{
local source-actual = [ $(source).actual-name ] ;
.contents on $(xml-file) +=
"$(nl) <source><![CDATA[$(source-actual)]]></source>"
;
}
.contents on $(xml-file) +=
"$(nl) </sources>"
;
# The properties that define the conditions under which the
# target was built.
.contents on $(xml-file) +=
"$(nl) <properties>"
;
for local prop in [ $(action-props).raw ]
{
local prop-name = [ MATCH ^<(.*)>$ : $(prop:G) ] ;
.contents on $(xml-file) +=
"$(nl) <property name=\"$(prop-name)\"><![CDATA[$(prop:G=)]]></property>"
;
}
.contents on $(xml-file) +=
"$(nl) </properties>"
;
}
local locate = [ on $(target) return $(LOCATE) ] ;
locate ?= "" ;
.contents on $(xml-file) +=
"$(nl) <jam-target><![CDATA[$(target)]]></jam-target>"
"$(nl) <path><![CDATA[$(target:G=:R=$(locate))]]></path>"
"$(nl) <command><![CDATA[$(command)]]></command>"
"$(nl) <output><![CDATA[$(output)]]></output>"
;
.contents on $(xml-file) +=
"$(nl) </action>"
;
}
# When no __ACTION_RULE__ is set "on" a target, the search falls
# back to the global module
module
{
__ACTION_RULE__ = build-system.out-xml.collect
[ modules.peek build-system : .out-xml ] ;
}
}
NOTFILE all ;
DEPENDS all : $(actual-targets) ;
if $(bjam-targets)
{
UPDATE $(bjam-targets:G=e) ;
UPDATE $(bjam-targets:G=e) $(.out-xml) ;
}
else if $(cleanall)
{
@ -507,13 +695,13 @@ else if $(clean)
# Remove only derived targets.
if [ $(t).action ]
{
{
if $(t) in $(targets-to-clean)
|| [ is-child [ $(p).project-module ] ] = true
{
to-clean += $(t) ;
}
}
}
}
}
local to-clean-actual ;
for local t in $(to-clean)
@ -522,14 +710,8 @@ else if $(clean)
}
common.Clean clean : $(to-clean-actual) ;
UPDATE clean ;
}
else
{
UPDATE all ;
UPDATE all $(.out-xml) ;
}

View File

@ -1,7 +1,6 @@
# (C) Copyright David Abrahams 2002. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2002 Dave 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)
import sequence ;
import set ;

View File

@ -1,7 +1,6 @@
# (C) Copyright Rene Rivera, 2003.
#
# See accompanying license for terms and conditions of use.
#
# Copyright 2003 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)
# Modifiers are generalized generators that mutate targets in specific ways.
# This structure allows for grouping a variety of functionality in an

View File

@ -716,6 +716,11 @@ class action
[ indirect.get-rule $(self.action-name[1]) ] $(actual-targets)
: $(properties) ;
# Reflect ourselves in a variable for the target. This allows
# looking up additional info for the action given the raw target.
# For example to debug or output action information from action rules.
.action on $(actual-targets) = $(__name__) ;
indirect.call $(self.action-name)
$(actual-targets) : $(self.actual-sources) : [ $(properties).raw ]
;

View File

@ -1,3 +1,6 @@
# Copyright 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)
import quickbook
;

View File

@ -1,3 +1,6 @@
# Copyright 2007 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)
import common ;
import "class" : new ;
@ -7,26 +10,26 @@ rule generate-example ( project name : property-set : sources * )
local result ;
for local s in $(sources)
{
#local ea = [ $(s).action ] ;
#local ep = [ $(ea).properties ] ;
# Create a new action, that takes the source target
# and runs 'common.copy' comamnd on it.
local a = [
new non-scanning-action $(s) : common.copy : $(property-set) ] ;
local source-name = [ $(s).name ] ;
# Create the target to represent the result of the action.
# The target has the name that was specified in Jamfile
# and passed here via the 'name' parameter,
# and the same type and project as the source.
result += [ new file-target $(name)
: [ $(s).type ]
: $(project)
: $(a) ] ;
}
#local ea = [ $(s).action ] ;
#local ep = [ $(ea).properties ] ;
# Create a new action, that takes the source target
# and runs 'common.copy' comamnd on it.
local a = [
new non-scanning-action $(s) : common.copy : $(property-set) ] ;
local source-name = [ $(s).name ] ;
# Create the target to represent the result of the action.
# The target has the name that was specified in Jamfile
# and passed here via the 'name' parameter,
# and the same type and project as the source.
result += [ new file-target $(name)
: [ $(s).type ]
: $(project)
: $(a) ] ;
}
return $(result) ;
}
generate a2 : a.cpp : <generating-rule>@generate-example ;
generate a2 : a.cpp : <generating-rule>@generate-example ;

View File

@ -10,3 +10,6 @@ flexible.
Please consult the docs for more explanations.
# Copyright 2007 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)

View File

@ -2,3 +2,9 @@
int main()
{
}
/*
Copyright 2007 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)
*/

View File

@ -1,3 +1,6 @@
# Copyright 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)
import soap ;
exe foo : foo.gci : <server>on ;
exe foo : foo.gci : <server>on ;

View File

@ -2,3 +2,6 @@
This example shows how to declare a new generator class. It's necessary
when generator's logic is more complex that just running a single tool.
# Copyright 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)

View File

@ -2,4 +2,9 @@
int main()
{
return 0;
}
}
/*
Copyright 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)
*/

View File

@ -1,3 +1,6 @@
# Copyright 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)
# This is example of a fictional code generator tool.
# It accepts a single input of type '.gci' and produces
@ -19,47 +22,47 @@ feature.feature server : off on : incidental ;
class soap-generator : generator
{
import "class" : new ;
rule __init__ ( * : * )
{
generator.__init__ $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
}
rule run ( project name ? : property-set : sources * )
{
if ! $(sources[2])
{
# Accept only single source.
local t = [ $(sources[1]).type ] ;
if $(t) = GCI
if $(t) = GCI
{
# The type is correct.
# If no output name is specified, guess it from sources.
if ! $(name)
{
name = [ generator.determine-output-name $(sources) ] ;
}
# Produce one output, using just copy.
local a = [ new action $(sources[1])
local a = [ new action $(sources[1])
: common.copy : $(property-set) ] ;
local t = [ new file-target $(name) : CPP : $(project)
: $(a) ] ;
# If in server mode, create another output -- an
# empty file. If this were a real SOAP generator, we
# might have created a single action, and two targets
# both using that action.
local t2 ;
if [ $(property-set).get <server> ] = "on"
{
local t2 ;
if [ $(property-set).get <server> ] = "on"
{
local a = [ new action : soap.touch : $(property-set) ] ;
t2 = [ new file-target $(name)_server : CPP : $(project)
: $(a) ] ;
}
return [ virtual-target.register $(t) ]
[ virtual-target.register $(t2) ] ;
return [ virtual-target.register $(t) ]
[ virtual-target.register $(t2) ] ;
}
}
}

View File

@ -1,5 +1,8 @@
# Copyright 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)
import python_helpers ;
ECHO "test1:" [ python_helpers.test1 ] ;
ECHO "test2:" [ python_helpers.test2 1234 : 5678 ] ;
ECHO "test2:" [ python_helpers.test2 1234 : 5678 ] ;

View File

@ -1,3 +1,6 @@
# Copyright 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)
# Import the Python rules to Boost.Build
PYTHON_IMPORT_RULE python_helpers : test1 : python_helpers : test1 ;

View File

@ -1,3 +1,6 @@
# Copyright 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)
# Declare a couple of functions called from Boost.Build
#
@ -10,6 +13,6 @@
def test1(l):
return ["foo", "bar"]
def test2(l, l2):
return [l[0], l2[0]]

View File

@ -1,14 +1,14 @@
import qt4 ;
if ! [ qt4.initialized ]
{
ECHO "Warning: Qt4 not initialized in user-config.jam" ;
ECHO "Assuming /space/p2/ghost/build/Qt4 as location." ;
ECHO "This is very likely won't work for you. " ;
using qt4 : /space/p2/ghost/build/Qt4 ;
}
project : requirements <threading>multi ;
import qt4 ;
if ! [ qt4.initialized ]
{
ECHO "Warning: Qt4 not initialized in user-config.jam" ;
ECHO "Assuming /space/p2/ghost/build/Qt4 as location." ;
ECHO "This is very likely won't work for you. " ;
using qt4 : /space/p2/ghost/build/Qt4 ;
}
project : requirements <threading>multi ;
exe arrow : main.cpp arrow.cpp arrow.h /qt//QtGui ;

View File

@ -1 +0,0 @@
*.pyc test_results.txt failed_test test-config.jam

View File

@ -1,9 +1,8 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2003. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2003 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)
# Regression test: virtual targets with different dependency properties
# were considered different by 'virtual-target.register', but the code

View File

@ -1,5 +1,10 @@
#!/usr/bin/python
# Copyright 2003 Dave Abrahams
# Copyright 2002, 2003, 2005, 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)
from BoostBuild import Tester, List
t = Tester()

View File

@ -1,9 +1,8 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2003. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2003 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)
from BoostBuild import Tester, List
import string

View File

@ -1,9 +1,8 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2004. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2004 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)
# This test tries to stage the same file to the same location by *two*
# different stage rules, in two different projects. This is not exactly

View File

@ -1,3 +1,7 @@
# Copyright 2001 Dave 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)
rule echo_args ( a b ? c ? : d + : e * )
{
ECHO a= $(a) b= $(b) c= $(c) ":" d= $(d) ":" e= $(e) ;

View File

@ -1 +1,5 @@
# This file is empty; it just suppresses warnings
# This file is empty; it just suppresses warnings
# Copyright 2001 Dave 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)

View File

@ -1,9 +1,8 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2003. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2003 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)
# This file is template for Boost.Build tests. It creates a simple
# project that builds one exe from one source, and checks that the exe

View File

@ -1,9 +1,8 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2003. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2003 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)
# This file is template for Boost.Build tests. It creates a simple
# project that builds one exe from one source, and checks that the exe

View File

@ -1,9 +1,8 @@
#!/usr/bin/python
# Copyright (C) Vladimir Prus 2004. 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" without express or implied
# warranty, and with no claim as to its suitability for any purpose.
# Copyright 2004 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)
# Tests that on gcc, we correctly report problem when static runtime
# is requested when building DLL.

View File

@ -1,3 +1,6 @@
# Copyright 2003, 2005 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)
# This project-root.jam also serves the role of Jamfile
project lib3 ;

View File

@ -1,3 +1,7 @@
Comprehensive tests for Boost.Build v2; requires Python. To test, execute:
python test_all.py
# Copyright 2002 Dave 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)

View File

@ -545,11 +545,9 @@ t.cleanup()
<p class="revision">Last modified: Mar 11, 2005</p>
<p>&copy; Copyright Vladimir Prus 2002, 2003, 2004, 2005. Permission to
copy, use, modify, sell and distribute this document is granted provided
this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to
its suitability for any purpose.</p>
<p>&copy; Copyright Vladimir Prus 2002, 2003, 2004, 2005.
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)</p>
</body>
</html>

View File

@ -1,5 +1,5 @@
# Copyright 2002, 2003, 2004, 2005 Dave Abrahams
# Copyright 2002, 2005, 2006 Rene Rivera
# Copyright 2002, 2005, 2006, 2007 Rene Rivera
# Copyright 2006 Juergen Hunold
# Copyright 2005 Toon Knapen
# Copyright 2002, 2003, 2004, 2005, 2006 Vladimir Prus
@ -205,6 +205,8 @@ feature architecture :
power
# MIPS/SGI
mips1 mips2 mips3 mips4 mips32 mips32r2 mips64
# HP/PA-RISC
parisc
#
: propagated optional ;
@ -214,6 +216,8 @@ feature instruction-set :
i386 i486 i586 i686
pentium pentium-mmx pentiumpro pentium2 pentium3 pentium3m pentium-m pentium4 pentium4m
prescott nocona
conroe conroe-xe conroe-l allendale mermon mermon-xe kentsfield kentsfield-xe
penryn wolfdale yorksfield nehalem
k6 k6-2 k6-3 athlon athlon-tbird athlon-4 athlon-xp athlon-mp
k8 opteron athlon64 athlon-fx
winchip-c6 winchip2
@ -235,6 +239,8 @@ feature instruction-set :
r2000 r3000 r3900 r4000 r4100 r4300 r4400 r4600 r4650 r6000 r8000
rm7000 rm9000 orion sb1
vr4100 vr4111 vr4120 vr4130 vr4300 vr5000 vr5400 vr5500
# HP/PA-RISC
700 7100 7100lc 7200 7300 8000
#
: propagated optional ;

View File

@ -3,6 +3,7 @@
# Copyright (c) 2005 Alexey Pakhunov.
# Copyright (c) 2006 Bojan Resnik.
# Copyright (c) 2006 Ilya Sokolov.
# Copyright (c) 2007 Rene Rivera
#
# Use, modification and distribution is subject to the Boost Software
# License Version 1.0. (See accompanying file LICENSE_1_0.txt or
@ -231,6 +232,10 @@ local rule configure-really (
{
# Even if version is not explicitly specified, try to detect the version
# from the path.
if [ MATCH "(Microsoft Visual Studio 9)" : $(command) ]
{
version = 9.0 ;
}
if [ MATCH "(Microsoft Visual Studio 8)" : $(command) ]
{
version = 8.0 ;
@ -299,8 +304,9 @@ local rule configure-really (
if ! $(below-8.0)
{
cpu = i386 amd64 ia64 ;
# Whereas http://msdn2.microsoft.com/en-us/library/x4d2c09s(VS.80).aspx
# say about x86_ipf, that seem to be doc bug,
# Whereas http://msdn2.microsoft.com/en-us/library/x4d2c09s(VS.80).aspx or
# http://msdn2.microsoft.com/en-us/library/x4d2c09s(vs.90).aspx
# say about x86_IPF, that seem to be doc bug,
# and x86_ia64 is right one.
setup-option = x86 x86_amd64 x86_ia64 ;
@ -394,13 +400,16 @@ local rule configure-really (
}
# Supported CPU types
# Supported CPU types (only Itanium optimization options are supported from
# VC++ 2005 on). See http://msdn2.microsoft.com/en-us/library/h66s5s0e(vs.90).aspx
cpu-type-g5 = i586 pentium pentium-mmx ;
cpu-type-g6 =
i686 pentiumpro pentium2 pentium3 pentium3m pentium-m k6 k6-2 k6-3
winchip-c6 winchip2 c3 c3-2 ;
cpu-type-em64t = prescott nocona ;
cpu-type-em64t = prescott nocona
conroe conroe-xe conroe-l allendale mermon mermon-xe kentsfield kentsfield-xe
penryn wolfdale yorksfield nehalem ;
cpu-type-amd64 = k8 opteron athlon64 athlon-fx ;
cpu-type-g7 =
@ -465,12 +474,12 @@ rule configure-version-specific ( toolset : version : condition )
}
else
{
# 8.0 adds some more options
# 8.0 and above adds some more options
flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-amd64)/<instruction-set> : /favor:blend ;
flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-amd64)/<instruction-set>$(cpu-type-em64t) : /favor:EM64T ;
flags $(toolset).compile CFLAGS $(condition)/$(cpu-arch-amd64)/<instruction-set>$(cpu-type-amd64) : /favor:AMD64 ;
# 8.0 only has multi-threaded static RTL
# 8.0 and above only has multi-threaded static RTL
flags $(toolset).compile CFLAGS $(condition)/<runtime-debugging>off/<runtime-link>static/<threading>single : /MT ;
flags $(toolset).compile CFLAGS $(condition)/<runtime-debugging>on/<runtime-link>static/<threading>single : /MTd ;
}
@ -916,13 +925,14 @@ actions compile.mc
.ProgramFiles = [ path.make [ common.get-program-files-dir ] ] ;
.known-versions = 8.0 8.0express 7.1 7.1toolkit 7.0 6.0 ;
.known-versions = 9.0 9.0express 8.0 8.0express 7.1 7.1toolkit 7.0 6.0 ;
# Version aliases
.version-alias-6 = 6.0 ;
.version-alias-6.5 = 6.0 ;
.version-alias-7 = 7.0 ;
.version-alias-8 = 8.0 ;
.version-alias-9 = 9.0 ;
# Name of the registry key that contains Visual C++ installation path
# (relative to "HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft"
@ -931,6 +941,8 @@ actions compile.mc
.version-7.1-reg = "VisualStudio\\7.1\\Setup\\VC" ;
.version-8.0-reg = "VisualStudio\\8.0\\Setup\\VC" ;
.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" ;
# Visual C++ Toolkit 2003 do not store its installation path in the registry.
# The environment variable 'VCToolkitInstallDir' and the default installation

View File

@ -193,6 +193,8 @@ local rule get-library-name ( path )
}
}
# Was an XML dump requested?
.out-xml = [ MATCH --out-xml=(.*) : [ modules.peek : ARGV ] ] ;
# Take a target (instance of 'basic-target') and prints
# - its type
@ -235,13 +237,29 @@ rule dump-test ( target )
# Extract values of the <test-info> feature
local test-info = [ $(r).get <test-info> ] ;
# Format them into a single string of quoted strings
test-info = \"$(test-info:J=\"\ \")\" ;
ECHO boost-test($(type)) \"$(name)\"
[$(test-info)]
":" \"$(source-files)\"
;
# If the user requested XML output on the command-line, add the
# test info to that XML file rather than dumping them to stdout.
if $(.out-xml)
{
local nl = "
" ;
.contents on $(.out-xml) +=
"$(nl) <test type=\"$(type)\" name=\"$(name)\">"
"$(nl) <info><![CDATA[$(test-info)]]></info>"
"$(nl) <source><![CDATA[$(source-files)]]></source>"
"$(nl) </test>"
;
}
else
{
# Format them into a single string of quoted strings
test-info = \"$(test-info:J=\"\ \")\" ;
ECHO boost-test($(type)) \"$(name)\"
[$(test-info)]
":" \"$(source-files)\"
;
}
}
# Register generators. Depending on target type, either

View File

@ -18,11 +18,17 @@ feature.extend toolset : vacpp ;
toolset.inherit vacpp : unix ;
generators.override vacpp.prebuilt : builtin.lib-generator ;
generators.override vacpp.searched-lib-generator : searched-lib-generator ;
feature.subfeature toolset vacpp : version ;
# Configure the vacpp toolset
rule init ( version ? : command * : options * )
{
local condition = [
common.check-init-parameters vacpp : version $(version) ] ;
command = [ common.get-invocation-command vacpp : xlC
: $(command) : "/usr/vacpp/bin/xlC" ] ;
common.handle-options vacpp : $(condition) : $(command) : $(options) ;
}
# Declare generators