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