build2/0.12.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.12.0
license MIT
repository pkg:cppget.org/alpha
location https://pkg.cppget.org/1/alpha
download build2-0.12.0.tar.gz
sha256 3b22a6c91837f5130fae9d0e4982b78e27a0cfb2c2c76d50c3543bd5fbe74cd7
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.12.0
libpkgconf [1.4.2 1.7.0-)

Requires (2)

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

Builds

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

Changes

Version 0.12.0

  * Support for dynamically-buildable/loadable build system modules.

    See the libbuild2-hello sample module to get started:

    https://github.com/build2/libbuild2-hello

  * Support for pattern matching (switch).

    For example:

    switch $cxx.target.class, $cxx.target.system
    {
      case 'windows', 'mingw32'
	cxx.libs += -lrpcrt4

      case 'windows'
        cxx.libs += rpcrt4.lib

      case 'macos'
        cxx.libs += -framework CoreFoundation
    }

    See the "Pattern Matching (switch)" section in the manual for details.

  * Support for default options files (aka tool config files).

    See the DEFAULT OPTIONS FILES section in b(1) for details.

  * Support for Clang targeting MSVC runtime on Windows.

    In particular, the build2 toolchain itself can now be built with Clang on
    Windows, including using LLD. See the "Clang Compiler Toolchain" section
    in the manual for details.

  * Support for automatic installation discovery for MSVC 15 (2017) and later.

    In particular, this allows building outside the Visual Studio development
    command prompts. See the "MSVC Compiler Toolchain" section in the manual
    for details.

  * Ability to specify "compiler mode" options as part of config.{c,cxx}.

    Such options are not overridden in buildfiles and are passed last (after
    cc.coptions and {c,cxx}.coptions) in the resulting command lines. Note
    that they are also cross-hinted between config.c and config.cxx. For
    example:

    $ b config.cxx="g++-9 -m32"  # implies config.c="gcc-9 -m32"

    But:

    $ b config.cxx="clang++ -stdlib=libc++" config.c=clang

  * Support for [config.]{cc,c,cxx}.aoptions (archive options).

    In particular, this can be used to suppress lib.exe warnings, for example:

    cc.aoptions += /IGNORE:4221

  * The cxx.std=latest value has been remapped from c++latest to c++17 for
    MSVC 16 (2019).

    See issue #34 for background:

    https://github.com/build2/build2/issues/34

  * Support for bracket expressions ([...]) in wildcard patterns.

    See the "Name Patterns" section in the manual for details.

  * Support for native shared library versioning on Linux.

    Now we can do:

    lib{foo}: bin.lib.version = linux@1.2

    And end up with:

    libfoo.so.1.2
    libfoo.so.1    -> libfoo.so.1.2

    See issue #49 for background and details:

    https://github.com/build2/build2/issues/49

  * Changes to the Buildfile language functions:

    - $string.icasecmp(): new

    - $regex.replace_lines(): new

    - $regex.{match,search}(): now return NULL on no match with return_* flags

    - $filesystem.path_match(): renamed to $path.match()

    - $quote(): new

      This function can be useful if we want to pass a value on the command
      line, for example, in a testscript:

      $* config.cxx=$quote($recall($cxx.path) $cxx.mode, true)

    - $config.save(): new

      This is similar to the config.config.save variable functionality (see
      below) except that it can be called from within buildfiles and with the
      result saved in a variable, printed, etc.

      Note that this function can only be used during configure unless the
      config module creation was forced for other meta-operations with
      config.config.module=true in bootstrap.build.

  * Support for configuration exporting and importing.

    The new config.config.save variable specifies the alternative file to
    write the configuration to as part of the configure meta-operation. For
    example:

    $ b configure: proj/ config.config.save=proj-config.build

    The config.config.save value "applies" only to the projects on whose root
    scope it is specified or if it is a global override (the latter is a bit
    iffy but we allow it, for example, to dump everything to stdout). This
    means that in order to save a subproject's configuration we will have to
    use a scope-specific override (since the default will apply to the
    outermost amalgamation). For example:

    $ b configure: subproj/ subproj/config.config.save=.../subproj-config.build

    This is somewhat counter-intuitive but then it will be the amalgamation
    whose configuration we would normally want to export.

    The new config.config.load variable specifies additional configuration
    files to be loaded after the project's default config.build, if any. For
    example:

    $ b create: cfg/,cc config.config.load=.../my-config.build

    Similar to config.config.save, the config.config.load value "applies" only
    to the project on whose root scope it is specified or if it is a global
    override. This allows the use of the standard override "positioning"
    machinery (i.e., where the override applies) to decide where the extra
    configuration files are loaded. The resulting semantics is quite natural
    and consistent with command line variable overrides, for example:

    $ b   config.config.load=.../config.build  # outermost amalgamation
    $ b ./config.config.load=.../config.build... More