Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
The cc.preprocessed variable can be 'none' (not preprocessed), 'includes' (no
depends on preprocessor, e.g., #ifdef, etc), and 'all' (the source is fully
preprocessed). Note that for 'all' the source can still contain comments and
line continuations.
|
|
This can be done from a buildfile for a scope (including project root scope)
and per target via cc.reprocess:
cc.reprocess = true
obj{hello}: cc.reprocess = false
As as well externally via config.cc.reprocess:
b config.cc.reprocess=true [configure]
|
|
|
|
With our utility library/until test approach this will probably be more
common than not.
|
|
Use in cc to make sure hint variables are already registered.
|
|
|
|
|
|
|
|
|
|
|
|
So now c and cxx modules can only be loaded in project root scope (normally
root.build). Also, the c.std and cxx.std must now be set *before* loading the
module to take effect. This means we won't be able to handle old buildfiles
anymore but old versions of build2 should be able to handle new *.std
placement.
|
|
Redesign library importing/exporting while at it.
|
|
|
|
A library dependency on another libraries is either "interface" or
"implementation". If it is interface, then everyone who links to this library
should also link to the interface dependency, explicitly. A good example of
an interface dependency is a library API that is called in inline functions.
Interface dependencies of a library should be explicitly listed in the
*.export.libs (where we can also list target names). So the typical usage
will be along these lines:
import int_libs = libfoo%lib{foo}
import int_libs += ...
import imp_libs = libbar%lib{bar}
import imp_libs += ...
lib{baz}: ... $int_libs $imp_libs
lib{baz}: cxx.export.libs = $int_libs
|
|
|
|
We are going to use cc.config for something else.
|
|
|
|
|
|
We now have two new modules: cc (c-common) and c.
|