aboutsummaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2019-06-07 15:53:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2019-06-07 15:53:48 +0200
commit8a52dd10fc105cce54afd3a0cf7a16b10990c9e2 (patch)
tree5a58a3439f41cbcb0a2f1f9c4357a1069c1de382 /NEWS
parent9097eda70f46ce7c15438409cbef56cbe2c058f8 (diff)
Update NEWS files
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS104
1 files changed, 104 insertions, 0 deletions
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:
+
+ <exe{hello} file{hello.map}>: cxx{hello}
+ {
+ cc.loptions += "-Wl,-Map=$out_base/hello.map"
+ }
+
+ <obje{hello} file{hello.lst}>:
+ {
+ 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.