build2/0.18.1

[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.18.1
license MIT
repository https://pkg.cppget.org/1/alpha
download build2-0.18.1.tar.gz
sha256 04b30177fd64a1f56e07631a94fcae8f895734c8b7a79baecd520953342fdc0d
project build2
url build2.org
doc-url build2.org/doc.xhtml
src-url git.build2.org/cgit/build2/tree/
topics build systembuild toolchain

Depends (1)

libbutl ^0.18.0

Requires (1)

c++14

Reviews

fail 0
pass 1

Builds

toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_fedora_44-gcc_16-bindist
timestamp 2026-08-14 16:45:12 UTC (07:50:55 hours ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_rhel_8-gcc_8-bindist
timestamp 2026-08-13 18:13:19 UTC (01 06:22:49 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22_libc++-O3
timestamp 2026-08-11 22:35:01 UTC (03 02:01:07 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
timestamp 2026-08-11 22:27:01 UTC (03 02:09:07 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
timestamp 2026-08-11 22:19:46 UTC (03 02:16:22 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22_libc++
timestamp 2026-08-11 22:13:54 UTC (03 02:22:14 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
timestamp 2026-08-11 22:04:46 UTC (03 02:31:22 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22_libc++-static_O3
timestamp 2026-08-11 21:45:43 UTC (03 02:50:25 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22-O3
timestamp 2026-08-11 21:42:03 UTC (03 02:54:05 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22
timestamp 2026-08-11 21:39:27 UTC (03 02:56:41 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_22-static_O3
timestamp 2026-08-11 21:38:13 UTC (03 02:57:55 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
timestamp 2026-08-11 21:12:50 UTC (03 03:23:18 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
timestamp 2026-08-11 21:07:27 UTC (03 03:28:41 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2026-08-11 21:03:35 UTC (03 03:32:33 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0
timestamp 2026-08-11 20:59:50 UTC (03 03:36:17 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
timestamp 2026-08-11 20:43:23 UTC (03 03:52:45 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2026-08-11 20:33:33 UTC (03 04:02:35 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2026-08-11 19:58:28 UTC (03 04:37:39 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
timestamp 2026-08-11 19:52:37 UTC (03 04:43:30 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2026-08-11 19:52:13 UTC (03 04:43:54 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2026-08-11 19:43:40 UTC (03 04:52:27 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16-O3
timestamp 2026-08-11 19:40:54 UTC (03 04:55:14 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2026-08-11 19:38:59 UTC (03 04:57:09 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2026-08-11 19:31:48 UTC (03 05:04:19 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
timestamp 2026-08-11 19:19:16 UTC (03 05:16:51 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16-static_O3
timestamp 2026-08-11 19:17:26 UTC (03 05:18:42 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16
timestamp 2026-08-11 19:13:14 UTC (03 05:22:54 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
timestamp 2026-08-11 18:32:54 UTC (03 06:03:13 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_16-ndebug_O3
timestamp 2026-08-11 18:20:38 UTC (03 06:15:30 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd15.0
tgt config freebsd_15-clang_19-O3
timestamp 2026-08-11 17:49:06 UTC (03 06:47:02 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_ubuntu_24.04-gcc_13-bindist
timestamp 2026-08-11 17:48:26 UTC (03 06:47:41 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_14-bindist
timestamp 2026-08-11 17:46:59 UTC (03 06:49:08 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21_libc++
timestamp 2026-08-11 17:45:51 UTC (03 06:50:16 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-clang_21
timestamp 2026-08-11 17:38:58 UTC (03 06:57:09 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2026-08-11 17:34:33 UTC (03 07:01:35 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_15-O3
timestamp 2026-08-11 17:32:34 UTC (03 07:03:33 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd15.0
tgt config freebsd_15-clang_19
timestamp 2026-08-11 17:27:47 UTC (03 07:08:21 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-bindist
timestamp 2026-08-11 17:26:03 UTC (03 07:10:05 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_13-gcc_15
timestamp 2026-08-11 17:20:02 UTC (03 07:16:05 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd15.0
tgt config freebsd_15-clang_19-static_O3
timestamp 2026-08-11 17:16:51 UTC (03 07:19:17 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
timestamp 2026-08-11 17:12:41 UTC (03 07:23:27 days ago)
result success | log | rebuild
toolchain public-0.18.1
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2026-08-11 13:16:36 UTC (03 11:19:32 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_10.2-bindist
timestamp 2026-08-11 12:41:41 UTC (03 11:54:27 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.0
tgt config windows_10-msvc_14.3
timestamp 2026-08-11 12:29:45 UTC (03 12:06:23 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.2
tgt config windows_10_devmode-msvc_16.11
timestamp 2026-08-11 12:18:06 UTC (03 12:18:02 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.2
tgt config windows_10-msvc_16.11
timestamp 2026-08-11 12:08:28 UTC (03 12:27:40 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.1
tgt config windows_10-msvc_15.9
timestamp 2026-08-11 12:03:32 UTC (03 12:32:36 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_9-gcc_8.4
timestamp 2026-08-11 11:55:46 UTC (03 12:40:22 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_8-gcc_4.9
timestamp 2026-08-11 11:55:35 UTC (03 12:40:33 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1
timestamp 2026-08-11 11:55:01 UTC (03 12:41:07 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_9-gcc_7.4
timestamp 2026-08-11 11:48:55 UTC (03 12:47:13 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_ubuntu_16.04-clang_3.7_libc++
timestamp 2026-08-11 11:47:47 UTC (03 12:48:21 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_12.1
timestamp 2026-08-11 11:45:47 UTC (03 12:50:20 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_11.3
timestamp 2026-08-11 11:38:10 UTC (03 12:57:58 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_10.2
timestamp 2026-08-11 11:32:38 UTC (03 13:03:29 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_9.3
timestamp 2026-08-11 11:32:21 UTC (03 13:03:47 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_rhel_9-gcc_11-bindist
timestamp 2026-08-09 14:29:05 UTC (05 10:07:02 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_fedora_43-gcc_15-bindist
timestamp 2026-08-09 13:39:24 UTC (05 10:56:44 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-clang_21_msvc_18-O2
timestamp 2026-08-06 11:15:25 UTC (08 13:20:43 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-clang_21_msvc_18
timestamp 2026-08-06 11:11:19 UTC (08 13:24:49 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-clang_21_msvc_18-static_O2
timestamp 2026-08-06 11:09:21 UTC (08 13:26:47 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-msvc_18-O2
timestamp 2026-08-06 10:41:38 UTC (08 13:54:30 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-msvc_18-static_O2
timestamp 2026-08-06 10:39:19 UTC (08 13:56:49 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.5
tgt config windows_10-msvc_18
timestamp 2026-08-06 10:38:06 UTC (08 13:58:02 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17
timestamp 2026-08-06 10:17:12 UTC (08 14:18:55 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-linux-gnu
tgt config linux_ubuntu_26.04-gcc_15-bindist
timestamp 2026-08-04 16:24:12 UTC (10 08:11:56 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-w64-mingw32
tgt config windows_10-gcc_15.2_mingw_w64-O2
timestamp 2026-08-04 13:05:11 UTC (10 11:30:56 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-w64-mingw32
tgt config windows_10-gcc_15.2_mingw_w64
timestamp 2026-08-04 13:01:04 UTC (10 11:35:04 days ago)
result success | log | rebuild
toolchain public-0.18.1
target x86_64-w64-mingw32
tgt config windows_10-gcc_15.2_mingw_w64-static_O2
timestamp 2026-08-04 12:59:12 UTC (10 11:36:55 days ago)
result success | log | rebuild

Changes

Version 0.18.0

  * Support for `while`-loop in the Buildfile language.

    See the "Buildfile Language" section in the manual for details.

  * Support for `continue` and `break` in loops in the Buildfile and scripting
    languages.

  * `ifn` and `ife` shortcuts in the Buildfile and scripting languages.

    These flow control shortcuts allow more succinct expression of is/is-not
    \c{null} and empty checks. They are equivalent to the following more
    verbose expressions:

    ifn ...     ~  if $null(...)
    ife ...     ~  if $empty(...)

    ifn! ...    ~  if! $null(...)
    ife! ...    ~  if! $empty(...)

    elifn ...   ~  elif $null(...)
    elife ...   ~  elif $empty(...)

    elifn! ...  ~  elif! $null(...)
    elife! ...  ~  elif! $empty(...)

  * New Buildfile and scripting language functions:

    - $front(), $back() and $json.array_front(), $json.array_back()

      Return first/last element in a sequence.

    - $sha256sum(), $xxh64sum()

      Compute SHA256 and XXH64 checksums of a string.

    - $builtin.generate_uuid()

      Generate UUID.

    - $string.{compare,filter,filter_out}()

      Compare or filter/filter out strings.

      There is now also support for the `contains`, `contains_once`,
      `starts_with`, and `ends_with` flags in $string.{find,find_index}().

    - $process.search()

      Search in PATH to determine absolute executable path.

  * New scripting languages builtins:

    - sha256sum

      Compute SHA256 checksum of a file or stdin.

    - xxh64sum

      Compute XXH64 checksum of a file or stdin.

    Also, the `ln` builtin now supports creating hard links in addition to
    symbolic.

  * New json{} builtin target type.

    It represents a JSON text file and has the .json default extension.

  * Shell script and task runner executable.

    The portable scripting language that is used for buildfile recipes
    (Buildscript) and test scripts (Testscript) has been generalized to also
    provide a general-purpose shell scripting flavor (Shellscript). Such shell
    scripts can be executed with the `bx` executable which is now provided
    alongside the build system driver (`b`). See the bx(1) man page for
    details.

  * Buildscript/Testscript/Shellscript syntax version 2.

    The version 2 is an improved syntax that should be used in new projects.
    Existing projects should also be eventually migrated to the new syntax.

    The syntax changes in version 2 compared to version 1 are:

    - Flow-control constructs (`if`, `for`, etc) are no longer terminated with
      the `end` line. Instead, the commands inside need to be enclosed into
      curly braces, which can be omitted for a single command. For example,
      syntax 1:

        if true
          echo one
          echo two
        end

        if true
          echo one
        end

      Syntax 2:

        if true
        {
          echo one
          echo two
        }

        if true
          echo one

    - Testscript groups are now enclosed into double curly braces ({{ }}).
      For example, syntax 1:

        : basics
        :
        {
          : test1
          :
          $* test1

          : test2
          :
          $* test2
        }

      Syntax 2:

        : basics
        :
        {{
          : test1
          :
          $* test1

          : test2
          :
          $* test2
        }}

    - Testscript commands in explicit test scopes are no longer separated with
      semicolons. For example, syntax 1:

      : test1
      :
      {
        $* pre;
        $* test1;
        $* post
      }

      Syntax 2:

      : test1
      :
      {
        $* pre
        $* test1
        $* post
      }

    The syntax version is selected based on the project's build2 version
    constraint in the manifest (`depends: build2 >= X.Y.Z`). Specifically, if
    the required version is equal to or great than 0.18.0, then syntax 2 is
    automatically selected. Otherwise, version 1 is used for backwards
    compatibility.

    The desired syntax can also be specified explicitly, both at the buildfile
    and script levels, with the {shellscript,buildscript,testscript}.syntax
    variables. For example:

    # root.build
    #
    testscript.syntax = 1

  * Support for JSON compilation database generation and maintenance.

    See the "Compilation Database" section in the "cc Module" chapter of
    the manual for details.

  * Support for specifying compile options on exe/lib{} targets

    It is now possible to specify compile option (*.poptions and *.coptions)
    on the exe/lib{} targets (we call them "binary-specific compile
    options"). Such options are propagated to obj/bmi{} targets that are
    synthesized for source prerequisites of the binary. Note that this
    propagation does not apply to explicit (non-synthesized) obj/bmi{}
    prerequisites. For example:

    exe{foo}: cxx{foo} obj{common}
    {
      cxx.poptions += -DFOO
    }

    exe{bar}: cxx{bar} obj{common}... More