early-access version 3088

This commit is contained in:
pineappleEA
2022-11-05 15:35:56 +01:00
parent 4e4fc25ce3
commit b601909c6d
35519 changed files with 5996896 additions and 860 deletions

View File

@@ -0,0 +1,7 @@
// Copyright Vladimir Prus 2004.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.txt
// or copy at https://www.bfgroup.xyz/b2/LICENSE.txt)
void l();
int main() { l(); return 0; }

View File

@@ -0,0 +1,11 @@
# Copyright 2004 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt)
#[jamfile
#<< By default, build the project with the two variants we have defined in jamroot.jam.
project : default-build crazy super_release ;
#<< We build an `a` exe target that links a built library. The library builds with the propagated properties of the exe.
exe a : a.cpp libs//l ;
#]

View File

@@ -0,0 +1,12 @@
# Copyright 2004 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt)
#[jamroot
#<< Define a build variant which is just combination of four properties.
variant crazy : <optimization>speed <inlining>off
<debug-symbols>on <profiling>on ;
#<< Define a built variant inherited from 'release'. It defines one new property and gets all properties from the parent `release` variant.
variant super_release : release : <define>USE_ASM ;
#]

View File

@@ -0,0 +1,8 @@
# Copyright 2004 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt)
#[libs_jamfile
#<< The library `l` just needs the sources. By default it will be a shared library.
lib l : l.cpp ;
#]

View File

@@ -0,0 +1,9 @@
// Copyright Vladimir Prus 2002-2004.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.txt
// or copy at https://www.bfgroup.xyz/b2/LICENSE.txt)
#ifdef _WIN32
__declspec(dllexport)
#endif
void l() {}

View File

@@ -0,0 +1,94 @@
[/
Copyright 2004 Vladimir Prus
Copyright 2017 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)
/]
[section Build Variants]
This example shows how user can create his own build variants. Two variants are
defined: "crazy", which is just a random combination of properties, and
"super-release", which is inherited from "release", and differs by a single
define.
Files:
* [@../../example/variant/a.cpp a.cpp]
* [@../../example/variant/jamroot.jam jamroot.jam]
* [@../../example/variant/jamfile.jam jamfile.jam]
* [@../../example/variant/libs/jamfile.jam libs/jamfile.jam]
* [@../../example/variant/libs/l.cpp libs/l.cpp]
[import jamroot.jam]
[import jamfile.jam]
[import libs/jamfile.jam]
In this project the `jamroot.jam` specifies the custom build variants and the
targets are specified in the two `jamfile.jam` files.
[jamroot]
The top-level `jamfile.jam`:
[jamfile]
And the library `jamfile.jam` that the top-level `jamfile.jam` refers to:
[libs_jamfile]
Building the example yields:
[teletype]
```
> cd /example/variant
> b2
...found 20 targets...
...updating 16 targets...
common.mkdir bin
common.mkdir bin/clang-darwin-4.2.1
common.mkdir bin/clang-darwin-4.2.1/crazy
clang-darwin.compile.c++ bin/clang-darwin-4.2.1/crazy/a.o
common.mkdir libs/bin
common.mkdir libs/bin/clang-darwin-4.2.1
common.mkdir libs/bin/clang-darwin-4.2.1/crazy
clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/crazy/l.o
clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/crazy/libl.dylib
clang-darwin.link bin/clang-darwin-4.2.1/crazy/a
common.mkdir bin/clang-darwin-4.2.1/super_release
clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
common.mkdir libs/bin/clang-darwin-4.2.1/super_release
clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
...updated 16 targets...
```
As specified in the top-level `jamfile.jam` both custom variants where built
by default. Once can override that by specifying the variant one wants to
build directly on the command line with a `variant=super_release`. Or just
with a `super_release` as variants can be referred to by their name only.
For example using that argument yields:
```
> cd /example/variant
> b2 super_release
...found 14 targets...
...updating 10 targets...
common.mkdir bin
common.mkdir bin/clang-darwin-4.2.1
common.mkdir bin/clang-darwin-4.2.1/super_release
clang-darwin.compile.c++ bin/clang-darwin-4.2.1/super_release/a.o
common.mkdir libs/bin
common.mkdir libs/bin/clang-darwin-4.2.1
common.mkdir libs/bin/clang-darwin-4.2.1/super_release
clang-darwin.compile.c++ libs/bin/clang-darwin-4.2.1/super_release/l.o
clang-darwin.link.dll libs/bin/clang-darwin-4.2.1/super_release/libl.dylib
clang-darwin.link bin/clang-darwin-4.2.1/super_release/a
...updated 10 targets...
```
[note The actual paths in the `bin` sub-directory will depend on your
toolset.]
[endsect]