build2/0.14.0-a.0.20201017210219.607101dfc71b

[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.14.0-a.0.20201017210219.607101dfc71b
license MIT
repository git:build2.org/var/scm/build2#ci@607101dfc71bd9366846062b2381c4870d8005d8
location https://git.build2.org/var/scm/build2.git#ci@607101dfc71bd9366846062b2381c4870d8005d8
fragment 607101dfc71bd9366846062b2381c4870d8005d8
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.14.0-a.0.1 0.14.0-a.1)
libpkgconf [1.4.2 1.7.0-)

Requires (2)

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

Builds

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

Changes

Version 0.13.0

  * Support for project-specific configuration.

    A project can now use the config directive to define config.<project>.*
    variables, similar to the build system core and modules. For example:

    config [bool]   config.libhello.fancy    ?= false
    config [string] config.libhello.greeting ?= 'Hello'

    These variables can then be used in buildfiles and/or propagated to the
    source code using the command line, .in file substitution, etc. For
    example:

    if $config.libhello.fancy
      cxx.poptions += -DLIBHELLO_FANCY

    cxx.poptions += "-DLIBHELLO_GREETING=\"$config.libhello.greeting\""

    See the "Project Configuration" chapter in the manual for details.

  * Support for ad hoc recipes.

    With ad hoc recipes it is now possible to provide custom implementations
    of operations (update, test, etc) for certain targets. For example, this
    is how we can pick a config header based on the platform:

    hxx{config}: hxx{config-linux}: include = ($cxx.target.class == 'linux')
    hxx{config}: hxx{config-win32}: include = ($cxx.target.class == 'windows')
    hxx{config}: hxx{config-macos}: include = ($cxx.target.class == 'macos')
    hxx{config}:
    {{
      cp $path($<) $path($>)
    }}

    Another, more elaborate example that shows how to embed binary data into
    the source code with the help of the xxd(1) utility:

    import! xxd = xxd%exe{xxd}

    <{hxx cxx}{foo}>: file{foo.bin} $xxd
    {{
      diag xxd ($<[0])

      i = $path($<[0]) # Input.
      h = $path($>[0]) # Output header.
      s = $path($>[1]) # Output source.
      n = $name($<[0]) # Array name.

      # Get the position of the last byte (in hex).
      #
      $xxd -s -1 -l 1 $i | sed -n -e 's/^([0-9]+):.*$/\1/p' - | set pos

      if ($empty($pos))
        exit "unable to extract input size from xxd output"
      end

      # Write header and source.
      #
      echo "#pragma once"                         >$h
      echo "extern const char $n[0x$pos + 1];"   >>$h
      echo "extern const char $n[0x$pos + 1]= {"  >$s
      $xxd -i <$i                                >>$s
      echo '};'                                  >>$s
    }}

    Note that in both examples, the utilities (cp, echo, and sed) are builtins
    which means these recipes are portable. See the Testscript manual for the
    list of available builtins.

    Ad hoc recipes can also be used to customize a part of the update chain
    otherwise handled by rules. For example, in embedded systems development
    it is often required to perform a custom link step:

    obje{foo}: cxx{foo}
    obje{bar}: cxx{bar}

    <exe{test} file{test.map}>: obje{foo bar}
    {{
      diag ld ($>[0])
      $cxx.path $cc.loptions $cxx.loptions $cxx.mode -o $path($>[0]) \
        "-Wl,-Map=$path($>[1])" $path($<) $cxx.libs $cc.libs
    }}

    While the above examples are all for the update operation, ad hoc recipes
    can be used for other operations, such as test. For example:

    exe{hello}: cxx{hello}
    % test
    {{
      diag test $>
      $> 'World' >>>?'Hello, World!'
    }}

    The above recipes are written in a shell-like language called Buildscript
    that has similar semantics to Testscript tests. Another language that can
    be used to write recipes is C++. For example:

    ./:
    {{ c++ 1

      recipe
      apply (action, target& t) const override
      {
        text (recipe_loc) << "Hello, " << t;
        return noop_recipe;
      }
    }}

    Note that in this release support for ad hoc recipes is at the "technology
    preview" stage. In particular, there is no documentation and there might
    be some rough edges.

  * Support for project-local importation.

    An import without a project name is now treated as importation from the
    same project. For example, given the libhello project that exports the
    lib{hello} target, a buildfile for an executable in the same project
    instead of doing something like this:

    include ../libhello/
    exe{hello}: ../libhello/lib{hello}

    Can now do:

    import lib = lib{hello}
    exe{hello}: $lib

    Note that the target in project-local importation must still be exported
    in the project's export stub. In other words, project-local importation
    goes through the same mechanism as normal import.

    See the "Target Importation" section in the manual for details.

  * Support for ad hoc importation and "glue buildfiles".

    If the target being imported has no project name and is either absolute or
    is a relative directory, then this is treated as ad hoc importation.
    Semantically it is similar to normal importation but with the location of
    the project being imported hard-coded into the buildfile.

    In particular, this type of import can be used to create a special "glue
    buildfile" that "pulls" together several projects, usually for convenience
    of development. One typical case that calls for such a glue buildfile is a
    multi-package project.... More