New features
- Replace `system_package()` and `pkgconfig_package()` with a generic package
resolver: `package()`
- Add `headers` argument to `package()` to find header files and `libs` to
specify library names if *pkg-config* lookup fails
- Support Java/Scala
- Add support for user-defined arguments
- Add a `library()` function that builds shared and/or static libraries per the
user's preference
- Add support for generating *pkg-config* `.pc` files
- Allow executing files that require an interpreter or other wrapper via
`command()` or `test()`/`test_driver()` without explicitly specifying the
wrapper; supports all languages buildable by bfg9000, plus Lua, Perl, Python,
and Ruby
- Add `env.run()`, `env.execute()`, and `env.run_arguments()` to simplify
executing programs during configuration
- Add a `framework()` function to specify macOS frameworks to use for a build
- Improve detection of compiler flavors by checking version information
- Automatically colorize clang/gcc output under Ninja
- Add support for uninstalling builds
- Add `static_link_options` to `static_library()` to specify options to pass to
the static linker
- Add a `bfg9000 env` command to print the environment variables used during
configuration
- Automatically request sudo elevation when installing builds to a system
directory
Breaking changes
- `directory()` and `header_directory()` no longer automatically include all
files within them (pass `include='*'` for the old behavior)
- The `include` argument for compiling object files has been replaced by
`includes`
- When creating a static library, `link_options` now specifies options that will
be forwarded along to the dynamic linker, rather than options for the static
linker itself
- The `options` argument for `test()`/`test_driver()` has been deprecated; add
any options to the first argument (`cmd`) instead
- `test()` no longer converts its first argument to a `generic_file()`
- Splitting POSIX shell strings (used for compile and link options as well as
environment vars on POSIX like `CPPFLAGS`) no longer parses escape characters
Bug fixes
- Improve logging of syntax errors in `build.bfg` files
- Fix usage of nested shared libraries when linking with GNU ld (via
`-rpath-link`)
- Installing directories from the srcdir now correctly installs their contents
to the installation root for that type (e.g. a header directory of `foo/bar`
installs its contents to `$includedir`)
- Fix generation of dependencies for the `tests` target
- Improve escaping for paths when using Make on Windows (previously users had
to escape backslashes themselves)
- Fix an issue with quotation marks being stripped for some commands on Windows
with the Ninja backend
---