Hi all,

The last few days I've been working on the CMake files and macros used to
build Celix.
The build has changed, and some targets are removed.

Main improvements are:
* When building a single target, only the requested library and bundle are
build. Previously all libraries where build prior to creating a single
bundle.
* When deploying a target, only the required dependencies are build,
previously all libraries where build
* No separate bundle and package target needed. This now is performed
implicitly by building a target
* Improved "up-to-date" usage, when target is deployed, dependencies are
only build when needed. Previously the bundles where always recreated. This
drastically improves the time needed to redeploy targets.
* Added bundles, packages and deployments to the clean target, previously
files remained when running a clean

Also, now a bundle can be made directly, instead of first adding a library
(add_library). To create a bundle, the following macro must be used:

     bundle({bundle_name} SOURCES {sources list} DIRECTORIES {optional
directories} FILES {optional files})

Previously this would have been:

     add_library({bundle_name} SHARED {sources list})
     bundle({bundle_name} DIRECTORIES {optional directories} FILES
{optional files})

All the include_directories and target_link_libraries remain the same.

Above bundle macro will result in a target with the same name
({bundle_name}). Running this target takes care of only building that
bundle (and required dependencies).

So the following targets are available:

    make all  -> build all libraries, bundles and packages
    make deploy -> deploys all deployments
    make {bundle_name} -> build a single bundle (and dependencies)
    make deploy_{deployment_name} -> deploys a single deployment (and
dependencies)
    make clean -> removes all deployments, bundles, libraries etc
    make install-fw -> creates a framework.zip file with the framework,
headers and optionally some bundles (this can be used to have a packaged
version of the framework)

Also it is possible to enter sub directories of the build and run the build
from there. So when running make from "build/shell" only the shell (and
dependencies) will be build. This is the same as running "make shell" in
the build root.

I will probably check this in later today, if there are any more problems
with, or any ideas to improve, the build, feel free to drop a message!

-- 
Met vriendelijke groet,

Alexander Broekhuis

Reply via email to