build2/0.15.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.15.0
license MIT
repository https://pkg.cppget.org/1/alpha
download build2-0.15.0.tar.gz
sha256 392845900ed4477f09e8f9addf062d245c7f829cc49424a6354dd16ff84b661c
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.15.0
libpkg-config ^0.1.0

Requires (1)

c++14

Builds

toolchain public-0.15.0
config linux_debian_11-gcc_12.1-ndebug_O3 / x86_64-linux-gnu
timestamp 2023-06-02 11:29:57 UTC (51:54 minutes ago)
result warning (update) | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_14.0_libc++-O3 / x86_64-linux-gnu
timestamp 2023-06-02 09:57:01 UTC (02:24:50 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_17.2 / x86_64-microsoft-win32-msvc14.3
timestamp 2023-06-02 09:21:56 UTC (02:59:55 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_14.0_libc++-static_O3 / x86_64-linux-gnu
timestamp 2023-06-02 09:14:12 UTC (03:07:39 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_14.0_libc++ / x86_64-linux-gnu
timestamp 2023-06-02 09:02:03 UTC (03:19:48 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_14.0-O3 / x86_64-linux-gnu
timestamp 2023-06-02 08:01:58 UTC (04:19:53 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_14.0-static_O3 / x86_64-linux-gnu
timestamp 2023-06-02 07:53:35 UTC (04:28:16 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_14.0 / x86_64-linux-gnu
timestamp 2023-06-02 07:50:10 UTC (04:31:41 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_16.11-static_O2 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-02 07:46:38 UTC (04:35:13 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_16.11 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-02 07:37:07 UTC (04:44:44 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10_devmode-msvc_16.11 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-02 07:08:10 UTC (05:13:41 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-gcc_12.1-O3 / x86_64-linux-gnu
timestamp 2023-06-02 06:14:17 UTC (06:07:34 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config freebsd_13-clang_13.0-O3 / x86_64-freebsd13.1
timestamp 2023-06-02 06:04:50 UTC (06:17:01 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_13.0_libc++ / x86_64-linux-gnu
timestamp 2023-06-02 05:49:35 UTC (06:32:16 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config freebsd_13-clang_13.0-static_O3 / x86_64-freebsd13.1
timestamp 2023-06-02 05:18:07 UTC (07:03:44 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config freebsd_13-clang_13.0 / x86_64-freebsd13.1
timestamp 2023-06-02 05:12:16 UTC (07:09:35 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-clang_13.0 / x86_64-linux-gnu
timestamp 2023-06-02 04:59:12 UTC (07:22:39 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config freebsd_12-clang_10.0 / x86_64-freebsd12.3
timestamp 2023-06-02 04:53:21 UTC (07:28:30 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-gcc_11.3 / x86_64-linux-gnu
timestamp 2023-06-02 04:41:07 UTC (07:40:44 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-gcc_12.1-static_O3 / x86_64-linux-gnu
timestamp 2023-06-02 01:40:58 UTC (10:40:53 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_13.0_llvm_msvc_16.11_lld / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-01 13:49:30 UTC (22:32:20 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_14.0_llvm_msvc_17.2-O2 / x86_64-microsoft-win32-msvc14.3
timestamp 2023-06-01 13:47:08 UTC (22:34:43 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_14.0_llvm_msvc_17.2_lld / x86_64-microsoft-win32-msvc14.3
timestamp 2023-06-01 13:46:21 UTC (22:35:30 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_14.0_llvm_msvc_17.2-static_O2 / x86_64-microsoft-win32-msvc14.3
timestamp 2023-06-01 13:15:33 UTC (23:06:18 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_13.0_llvm_msvc_16.11-O2 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-01 13:15:28 UTC (23:06:23 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_14.0_llvm_msvc_17.2 / x86_64-microsoft-win32-msvc14.3
timestamp 2023-06-01 13:10:39 UTC (23:11:12 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_13.0_llvm_msvc_16.11-static_O2 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-01 13:09:22 UTC (23:12:29 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-clang_13.0_llvm_msvc_16.11 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-06-01 13:06:40 UTC (23:15:11 hours ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_11-gcc_12.1 / x86_64-linux-gnu
timestamp 2023-06-01 11:05:21 UTC (01 01:16:30 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_10.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 11:54:39 UTC (02 00:27:12 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_9.0 / x86_64-linux-gnu
timestamp 2023-05-31 11:45:54 UTC (02 00:35:56 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-clang_8.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:41:45 UTC (02 01:40:06 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-clang_8.0 / x86_64-linux-gnu
timestamp 2023-05-31 10:40:18 UTC (02 01:41:33 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_11.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:39:37 UTC (02 01:42:14 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_9.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:38:59 UTC (02 01:42:52 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-clang_6.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:37:53 UTC (02 01:43:58 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-clang_6.0 / x86_64-linux-gnu
timestamp 2023-05-31 10:36:10 UTC (02 01:45:41 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_12.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:32:27 UTC (02 01:49:23 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-clang_7.0_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:29:39 UTC (02 01:52:12 days ago)
result success | log | rebuild
toolchain public-0.15.0
config freebsd_11-clang_10.0 / x86_64-freebsd11.4
timestamp 2023-05-31 10:28:48 UTC (02 01:53:03 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_ubuntu_16.04-clang_3.7_libc++ / x86_64-linux-gnu
timestamp 2023-05-31 10:28:36 UTC (02 01:53:15 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_12.0 / x86_64-linux-gnu
timestamp 2023-05-31 10:28:17 UTC (02 01:53:34 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-clang_7.0 / x86_64-linux-gnu
timestamp 2023-05-31 10:27:53 UTC (02 01:53:58 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_11.0 / x86_64-linux-gnu
timestamp 2023-05-31 10:26:56 UTC (02 01:54:55 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-clang_10.0 / x86_64-linux-gnu
timestamp 2023-05-31 10:23:49 UTC (02 01:58:02 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-gcc_9.3 / x86_64-linux-gnu
timestamp 2023-05-31 10:21:28 UTC (02 02:00:23 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-gcc_8.4 / x86_64-linux-gnu
timestamp 2023-05-31 10:18:35 UTC (02 02:03:16 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_10-gcc_10.2 / x86_64-linux-gnu
timestamp 2023-05-31 10:17:48 UTC (02 02:04:03 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_9-gcc_7.4 / x86_64-linux-gnu
timestamp 2023-05-31 10:17:10 UTC (02 02:04:41 days ago)
result success | log | rebuild
toolchain public-0.15.0
config linux_debian_8-gcc_4.9 / x86_64-linux-gnu
timestamp 2023-05-31 10:15:40 UTC (02 02:06:11 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_14.3 / x86_64-microsoft-win32-msvc14.0
timestamp 2023-05-31 10:14:19 UTC (02 02:07:32 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_15.9 / x86_64-microsoft-win32-msvc14.1
timestamp 2023-05-31 10:06:16 UTC (02 02:15:35 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-gcc_11.2_mingw_w64 / x86_64-w64-mingw32
timestamp 2023-05-31 00:08:00 UTC (02 12:13:51 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_12-gcc_12.1_homebrew-O3 / x86_64-apple-darwin21.6.0
timestamp 2023-05-30 22:00:54 UTC (02 14:20:57 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-gcc_11.2_mingw_w64-O2 / x86_64-w64-mingw32
timestamp 2023-05-30 21:37:38 UTC (02 14:44:13 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_12-gcc_12.1_homebrew-static_O3 / x86_64-apple-darwin21.6.0
timestamp 2023-05-30 21:30:25 UTC (02 14:51:26 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-gcc_11.2_mingw_w64-static_O2 / x86_64-w64-mingw32
timestamp 2023-05-30 20:58:04 UTC (02 15:23:47 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_12-gcc_12.1_homebrew / x86_64-apple-darwin21.6.0
timestamp 2023-05-30 20:35:19 UTC (02 15:46:32 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_17.2-O2 / x86_64-microsoft-win32-msvc14.3
timestamp 2023-05-30 19:06:27 UTC (02 17:15:24 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_17.2-static_O2 / x86_64-microsoft-win32-msvc14.3
timestamp 2023-05-30 18:06:29 UTC (02 18:15:22 days ago)
result success | log | rebuild
toolchain public-0.15.0
config windows_10-msvc_16.11-O2 / x86_64-microsoft-win32-msvc14.2
timestamp 2023-05-30 17:56:12 UTC (02 18:25:39 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_12-clang_13.1-O3 / x86_64-apple-darwin21.6.0
timestamp 2023-05-30 17:54:05 UTC (02 18:27:46 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_12-clang_13.1-static_O3 / x86_64-apple-darwin21.6.0
timestamp 2023-05-30 16:41:11 UTC (02 19:40:40 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_12-clang_13.1 / x86_64-apple-darwin21.6.0
timestamp 2023-05-30 16:20:07 UTC (02 20:01:43 days ago)
result success | log | rebuild
toolchain public-0.15.0
config macos_11-clang_13.0 / x86_64-apple-darwin20.5.0
timestamp 2023-05-30 13:28:32 UTC (02 22:53:19 days ago)
result success | log | rebuild

Changes

Version 0.15.0

  * Generated C/C++ headers and ad hoc sources are now updated during match.

    Specifically, all headers as well as ad hoc headers and sources are now
    treated by the cc::link_rule as if they had update=match unless explicit
    update=execute is specified (see below on the update operation-specific
    variable).

    This change should be transparent to most projects. For background and
    discussion of rare cases where you may wish to disable this, see:

    https://github.com/build2/HOWTO/blob/master/entries/handle-auto-generated-headers.md

  * Support for rule hints.

    A rule hint is a target attribute, for example:

    [rule_hint=cxx] exe{hello}: c{hello}

    Rule hints can be used to resolve ambiguity when multiple rules match the
    same target as well as to override an unambiguous match.

    In cc::link_rule we now support "linking" libraries without any sources or
    headers with a hint. This can be useful for creating "metadata libraries"
    whose only purpose is to convey metadata (options to use and/or libraries
    to link).

  * UTF-8 is now the default input/source character set for C/C++ compilation.

    Specifically, the cc module now passes the appropriate compiler option
    (/utf-8 for MSVC and -finput-charset=UTF-8 for GCC and Clang) unless a
    custom value is already specified (with /{source,execution}-charset for
    MSVC and -finput-charset for GCC and Clang).

    This change may trigger new compilation errors in your source code if
    it's not valid UTF-8 (such errors most commonly point into comments).
    For various ways to fix this, see:

    https://github.com/build2/HOWTO/blob/master/entries/convert-source-files-to-utf8.md

  * Project configuration variables are now non-nullable by default.

    A project configuration variable with the NULL default value is naturally
    assumed nullable, for example:

    config [string] config.libhello.fallback_name ?= [null]

    Otherwise, to make a project configuration nullable use the `null`
    variable attribute, for example:

    config [string, null] config.libhello.fallback_name ?= "World"

  * New $relative(<path>, <dir-path>) function.

  * New $root_directory(<path>) function.

  * New $size() function to get the size of string, path, dir_path.

  * New $size() function to get the size of a sequence (strings, paths, etc).

  * New $sort() function to sort a sequence (strings, paths, etc).

    The function has the following signature:

    $sort(<sequence> [, <flags>])

    The following flag is supported by all the overloads:

      dedup - in addition to sorting also remove duplicates

          Additionally, the strings overload also support the following flag:

      icase - sort ignoring case

    Note that on case-insensitive filesystems the paths and dir_paths
    overloads' order is case-insensitive.

  * New $config.origin() function for querying configuration value origin.

    Give a config.* variable name, this function returns one of `undefined`,
    `default`, `buildfile`, or `override`.

  * Recognition of -pthread as a special -l option in *.libs.

    For background, see:

    https://github.com/build2/HOWTO/blob/master/entries/link-pthread.md

  * The bin.whole (whole archive) value is now saved in generated pkg-config
    files.

  * Ability to customize header and library search paths in generated
    pkg-config files.

    Specifically, {cc,c,cxx}.pkgconfig.{include,lib} variables specify header
    (-I) and library (-L) search paths to use in the generated pkg-config
    files instead of the default install.{include,lib}. Relative paths are
    resolved as installation paths. For example:

    lib{Qt6Core}: cxx.pkgconfig.include = include/qt6/

  * Ability to save user metadata in C/C++ libraries, including in generated
    pkg-config files.

    For background and details, see:

    https://github.com/build2/HOWTO/blob/master/entries/convey-additional-information-with-exe-lib.md

  * Support for rule-specific search in immediate import.

    We can now nominate a rule to perform the rule-specific search (if
    required) using the rule_hint attribute. For example:

    import! [metadata, rule_hint=cxx.link] lib = libhello%lib{hello}

  * Support for dynamic dependencies in ad hoc recipes.

    Specifically, the `depdb` builtin now has the new `dyndep` command that
    can be used to extract dynamic dependencies from program output or a
    file. For example, from program output:

    obje{hello.o}: cxx{hello}
    {{
      s = $path($<[0])
      o = $path($>)

      poptions = $cxx.poptions $cc.poptions
      coptions = $cc.coptions $cxx.coptions

      depdb dyndep $poptions --what=header --default-type=h -- \
        $cxx.path $poptions $coptions $cxx.mode -M -MG $s

      diag c++ ($<[0])

      $cxx.path $poptions $coptions $cxx.mode -o $o -c $s
    }}

    Or, alternatively, from a file:

    t = $(o).t
    depdb dyndep $poptions --what=header --default-type=h --file... More