Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
Currently we only support platform-independent versions that get appended
to the library name. The magic incantation is this:
lib{foo}: bin.lib.version = @-1.2
This will produce libfoo-1.2.so, libfoo-1.2.dll, etc.
In the future we will support things like this:
lib{foo}: bin.lib.version = linux@1.2.3 freebsd@1.2 windows@1.2
|
|
|
|
|
|
We also no longer pick shared/static file rather entering them as "our" lib{}
target. This way we use the link order of the importer "transitively".
|
|
|
|
|
|
|
|
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 now have two new modules: cc (c-common) and c.
|