build2/0.11.0

[full]

build2 build system

This package contains the build2 build system.

build2 is an open source, cross-platform toolchain for building and packaging
C++ code. Its aim is a modern build system and dependency manager for the C++
language that provide a consistent, out of the box interface across multiple
platforms and compilers. For more information see:

https://build2.org/

See the NEWS file for the user-visible changes from the previous release.

See the LICENSE file for the distribution conditions.

See the INSTALL file... More
version 0.11.0
license MIT
repository pkg:cppget.org/alpha
location https://pkg.cppget.org/1/alpha
download build2-0.11.0.tar.gz
sha256 9b06752a5fb1581fcdb884129998a00800a8d09eab659ed8204b8cb83d96ed48
project build2
url build2.org
doc-url build2.org/doc.xhtml
src-url git.build2.org/cgit/build2/tree/
topics build systembuild toolchain

Depends (2)

libbutl ^0.11.0
libpkgconf [1.4.2 1.6.0-)

Requires (2)

c++14
? cliOnly required if changing .cli files

Builds

toolchain public-0.11.0
config macos_10.14-gcc_9.1_homebrew-O3 / x86_64-apple-darwin18.6.0
timestamp 2019-10-20 01:07:11 UTC (03:15 minutes ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-gcc_8.3_mingw_w64 / x86_64-w64-mingw32
timestamp 2019-10-19 23:49:45 UTC (01:20:41 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-gcc_9.1-O3 / x86_64-linux-gnu
timestamp 2019-10-19 22:21:11 UTC (02:49:14 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-msvc_16.1-O2 / x86_64-microsoft-win32-msvc14.2
timestamp 2019-10-19 22:14:49 UTC (02:55:37 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_8.0_libc++-O3 / x86_64-linux-gnu
timestamp 2019-10-19 21:52:38 UTC (03:17:47 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-gcc_9.1 / x86_64-linux-gnu
timestamp 2019-10-19 21:51:40 UTC (03:18:46 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-msvc_15.0 / x86_64-microsoft-win32-msvc14.1
timestamp 2019-10-19 21:51:28 UTC (03:18:58 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.14-gcc_9.1_homebrew / x86_64-apple-darwin18.6.0
timestamp 2019-10-19 21:30:09 UTC (03:40:16 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.14-clang_10.0-O3 / x86_64-apple-darwin18.6.0
timestamp 2019-10-19 21:23:10 UTC (03:47:15 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-msvc_14.3 / x86_64-microsoft-win32-msvc14.0
timestamp 2019-10-19 21:13:13 UTC (03:57:13 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-gcc_8.3_mingw_w64-O3 / x86_64-w64-mingw32
timestamp 2019-10-19 20:42:31 UTC (04:27:54 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-msvc_16.0 / x86_64-microsoft-win32-msvc14.2
timestamp 2019-10-19 19:12:51 UTC (05:57:35 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_8.0_libc++ / x86_64-linux-gnu
timestamp 2019-10-19 19:09:26 UTC (06:00:59 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-msvc_16.1 / x86_64-microsoft-win32-msvc14.2
timestamp 2019-10-19 19:06:35 UTC (06:03:51 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_8.0-O3 / x86_64-linux-gnu
timestamp 2019-10-19 18:48:51 UTC (06:21:34 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_7.0 / x86_64-linux-gnu
timestamp 2019-10-19 17:18:17 UTC (07:52:09 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config windows_10-msvc_15.9 / x86_64-microsoft-win32-msvc14.1
timestamp 2019-10-19 16:24:37 UTC (08:45:49 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_5.0 / x86_64-linux-gnu
timestamp 2019-10-19 16:12:53 UTC (08:57:32 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config freebsd_12-clang_6.0-O3 / x86_64-freebsd12.0
timestamp 2019-10-19 15:56:21 UTC (09:14:04 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config freebsd_11-clang_4.0 / x86_64-freebsd11.1
timestamp 2019-10-19 15:53:38 UTC (09:16:48 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config freebsd_11-clang_6.0 / x86_64-freebsd11.2
timestamp 2019-10-19 15:34:09 UTC (09:36:17 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config freebsd_12-clang_6.0 / x86_64-freebsd12.0
timestamp 2019-10-19 15:20:59 UTC (09:49:27 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_8.0 / x86_64-linux-gnu
timestamp 2019-10-19 15:13:21 UTC (09:57:05 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_8-gcc_4.9 / x86_64-linux-gnu
timestamp 2019-10-19 15:07:39 UTC (10:02:47 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_7.0_libc++ / x86_64-linux-gnu
timestamp 2019-10-19 14:57:19 UTC (10:13:07 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-gcc_7.4 / x86_64-linux-gnu
timestamp 2019-10-19 14:44:26 UTC (10:25:59 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_6.0_libc++ / x86_64-linux-gnu
timestamp 2019-10-19 14:37:04 UTC (10:33:22 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-clang_6.0 / x86_64-linux-gnu
timestamp 2019-10-19 14:25:05 UTC (10:45:21 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config linux_debian_9-gcc_8.3 / x86_64-linux-gnu
timestamp 2019-10-19 14:06:09 UTC (11:04:17 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.14-clang_10.0 / x86_64-apple-darwin18.6.0
timestamp 2019-10-19 08:04:35 UTC (17:05:50 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.13-clang_9.1 / x86_64-apple-darwin17.5.0
timestamp 2019-10-19 07:59:40 UTC (17:10:46 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.13-clang_10.0 / x86_64-apple-darwin17.5.0
timestamp 2019-10-19 07:38:48 UTC (17:31:37 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.12-clang_9.0 / x86_64-apple-darwin16.4.0
timestamp 2019-10-19 06:43:30 UTC (18:26:56 hours ago)
result success | log | rebuild
toolchain public-0.11.0
config macos_10.12-clang_8.1 / x86_64-apple-darwin16.4.0
timestamp 2019-10-19 06:01:46 UTC (19:08:40 hours ago)
result error (configure) | log | rebuild

Changes

Version 0.11.0

 * Initial work on header unit importation and include translation support.

   In particular, for GCC, the (experimental) module mapper approach is now
   used to handle header unit importation, include translation, and headers
   dependency extraction, all with support for auto-generated headers.

 * Generalized target/prerequisite variable blocks.

   Target/prerequisite-specific variable blocks can now be present even if
   there are prerequisites. For example, now instead of:

   exe{foo}: cxx{foo}
   exe{foo}: cc.loptions += -rdynamic

   Or:

   exe{foo}: cxx{foo}
   exe{foo}:
   {
     cc.loptions += -rdynamic
     cc.libs += -ldl
   }

   We can write:

   exe{foo}: cxx{foo}
   {
     cc.loptions += -rdynamic
     cc.libs += -ldl
   }

   This also works with dependency chains in which case the block applies
   to the set of prerequisites (note: not targets) before the last ':'. For
   example:

   ./: exe{foo}: libue{foo}: cxx{foo}
   {
     bin.whole = false  # Applies to the libue{foo} prerequisite.
   }

 * Support for ad hoc target groups.

   In certain cases we may need to instruct the underlying tool (compiler,
   linker, etc) to produce additional outputs. For example, we may want to
   request the compiler to produce an assembler listing or the linker to
   produce a map file. While we could already pass the required options, the
   resulting files will not be part of the build state. Specifically, they
   will not be cleaned up and we cannot use them as prerequisites of other
   targets.

   Ad hoc target groups allow us to specify that updating a target produces
   additional outputs, called ad hoc group members. For example:

   <exe{hello} file{hello.map}>: cxx{hello}
   {
     cc.loptions += "-Wl,-Map=$out_base/hello.map"
   }

   <obje{hello} file{hello.lst}>:
   {
     cc.coptions += "-Wa,-amhls=$out_base/hello.lst"
   }

   Note also that all things ad hoc (prerequisites, targets, rules) are still
   under active development so further improvements (such as not having to
   repeat names twice) are likely.

 * New config.{c,cxx}.std configuration variables that, if present, override
   {c,cxx}.std specified at the project level.

   In particular, this allows forcing a specific standard for all the projects
   in a build configuration, for example:

   $ b create: exp-conf/,cc config.cxx=g++ config.cxx.std=experimental

 * New --dry-run|-n option instructs build rules to print commands without
   actually executing them.

   Note that commands that are required to create an accurate build state will
   still be executed and the extracted auxiliary dependency information saved.
   In other words, this is not the "don't touch the filesystem" mode but
   rather "do minimum amount of work to show what needs to be done". In
   particular, this mode is useful to quickly generate the compilation
   database, for example:

   $ b -vn clean update |& compiledb

 * Ability to disable automatic rpath, support for custom rpath-link.

   Specifically, the new config.bin.rpath.auto variable can be used to disable
   automatic addition of prerequisite library rpaths, for example:

   $ b config.bin.rpath.auto=false

   Note that in this case rpath-link is still added where normally required
   and for target platforms that support it (Linux and *BSD).

   The new config.bin.rpath_link and config.bin.rpath_link.auto have the same
   semantics as config.bin.rpath* but for rpath-link.

 * Enable MSVC strict mode (/permissive-) for 'experimental' standard starting
   from version 15.5.

Version 0.10.0

 * Support for an alternative build file/directory naming scheme.

   Now the build/*.build, buildfile, and .buildignore filesystem entries in
   a project can alternatively (but consistently) be called build2/*.build2,
   build2file, and .build2ignore. See a note at the beginning of the Project
   Structure section in the manual for details (motivation, restrictions,
   etc).

 * Support for multiple variable overrides.

   Now we can do:

   $ b config.cxx.coptions=-O3 config.cxx.coptions=-O0

   Or even:

   $ b config.cxx.coptions=-O3 config.cxx.coptions+=-g

 * Support for MSVC 16 (2019).

 * Support for automatic switching to option files (AKA response files) on
   Windows if the linker command line is too long.

   This covers both MSVC link.exe/lib.exe and MinGW gcc.exe/ar.exe.

Version 0.9.0

 * New "Diagnostics and Debugging" section in the manual on debugging build
   issues.

 * Support for dependency chains.

   Now instead of:

   ./: exe{foo}
   exe{foo}: cxx{*}

   We can write:

   ./: exe{foo}: cxx{*}

   Or even:

   ./: exe{foo}: libue{foo}: cxx{*}

   This can be combined with prerequisite-specific variables (which naturally
   only apply to the last set of prerequisites in the chain):

   ./: exe{foo}: libue{foo}: bin.whole = false

 * Support for target and prerequisite specific variable blocks.

   For example, now instead of:

   lib{foo}: cxx.loptions += -static... More