incubator-celix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Broekhuis <>
Subject Build files
Date Thu, 17 Nov 2011 10:40:56 GMT
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
* 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
    make clean -> removes all deployments, bundles, libraries etc
    make install-fw -> creates a 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

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message