From 8a52dd10fc105cce54afd3a0cf7a16b10990c9e2 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 7 Jun 2019 15:53:48 +0200 Subject: Update NEWS files --- NEWS | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/NEWS b/NEWS index e2a0196..4f9e20a 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,107 @@ +Version 0.11.0 + + * Initial work on header unit importation and include translation support. + + In particular, for GCC, the module mapper approach is now used to handle + header unit importation, include translation, and headers dependency + extraction, all with support for auto-generated headers. + + * Generalized target/prerequisite variable blocks. + + Target/prerequisite-specific variable blocks can now be present even if + there are prerequisites. For example, now instead of: + + exe{foo}: cxx{foo} + exe{foo}: cc.loptions += -rdynamic + + Or: + + exe{foo}: cxx{foo} + exe{foo}: + { + cc.loptions += -rdynamic + cc.libs += -ldl + } + + We can write: + + exe{foo}: cxx{foo} + { + cc.loptions += -rdynamic + cc.libs += -ldl + } + + This also works with dependency chains in which case the block applies + to the set of prerequisites (note: not targets) before the last ':'. For + example: + + ./: exe{foo}: libue{foo}: cxx{foo} + { + bin.whole = false # Applies to the libue{foo} prerequisite. + } + + * Support for ad hoc target groups. + + In certain cases we may need to instruct the underlying tool (compiler, + linker, etc) to produce additional outputs. For example, we may want to + request the compiler to produce an assembler listing and a linker to + produce a map file. While we can pass the required options, the resulting + files will not be part of the build state. Specifically, they will not be + cleaned and we cannot use them as prerequisites of other targets. + + Ad hoc target groups allow us to specify that updating a target produces + additional outputs, called ad hoc group members. For example: + + : cxx{hello} + { + cc.loptions += "-Wl,-Map=$out_base/hello.map" + } + + : + { + cc.coptions += "-Wa,-amhls=$out_base/hello.lst" + } + + Note also that all things ad hoc (prerequisites, targets, rules) are still + under active development so further improvements (such as not having to + repeat names twice) are likely. + + * New config.{c,cxx}.std configuration variables that, if present, override + {c,cxx}.std specified at the project level. + + In particular, this allows forcing a specific standard for all the projects + in a build configuration, for example: + + $ b create: exp-conf/,cc config.cxx=g++ config.cxx.std=experimental + + * New --dry-run|-n option instructs build rules to print command without + actually executing them. + + Note that commands that are required to create an accurate build state will + still be executed and the extracted auxiliary dependency information saved. + In other words, this is not the "don't touch the filesystem" mode but + rather "do minimum amount of work to show what needs to be done". In + particular, this mode is useful to quickly generate the compilation + database, for example: + + $ b -vn clean update |& compiledb + + * Ability to disable automatic rpath, support for custom rpath-link. + + Specifically, the new config.bin.rpath.auto variable can be used to disable + automatic addition of prerequisite library rpaths, for example: + + $ b config.bin.rpath.auto=false + + Note that in this case rpath-link is still added where normally required + and for target platforms that support it (Linux and *BSD). + + The new config.bin.rpath_link and config.bin.rpath_link.auto have the same + semantics as config.bin.rpath* but for rpath-link. + + * Enable MSVC strict mode (/permissive-) for experimental standard starting + from version 15.5. + Version 0.10.0 * Support for an alternative build file/directory naming scheme. -- cgit v1.1