The XCDL project defines and implements a component framework, as a set of metadata and a collection of tools specifically designed to configure and build complex, package based, multi-variant (multi-architecture, multi-board, multi-toolchain) embedded projects. It is inspired by eCos CDL and also incorporates some ARM CMSIS Pack concepts. The primary projects to benefit from XCDL are:

The XCDL project was initially hosted on GitHub, but now it is part of the xPack project.


XCDL was definitely inspired by the eCos CDL, and many concepts are borrowed from it, including large excerpts from the eCos manuals, especially from The eCos Component Writer’s Guide.

The XCDL Eclipse implementation also maintains a good degree of compatibility with the current ARM CMSIS Packs (v1.x). More CMSIS Packs features are planned to be integrated, so that XCDL should be a superset of CMSIS Pack.

Reference implementations

The reference implementation will include several Eclipse plug-ins as graphical configuration tools (part of GNU ARM Eclipse), and several command line tools for non graphical environments (source code part of the XCDL project).

Although targeted to Eclipse, these specifications should not prevent other development environments to implement them, so, if needed, these specifications will be amended to make alternate implementations possible.

Component Writer’s Guide



How to use


Work in progress



The XCDL software is released under the MIT.

Remarks and criticism


  • eCos - The embedded configurable operating system by Cygnus Solutions (Wikipedia)
  • Manual: The eCos Component Writer’s Guide, by Bart Veer and John Dallaway, published in 2001, available from eCos Documentation.
  • Book: Embedded software development with eCos, by Anthony J. Massa, published in 2003 at Prentice Hall, available from Amazon
  • Book: Software Build Systems: Principles and Experience, by Peter Smith, published in 2011 at Addison Wesley, available from Amazon
  • IEEE Std 830-1998: IEEE Recommended Practice for Software Requirements Specifications, published in 1998
  • CMSIS-Pack - ARM mechanism to install software, device support, APIs, and example projects

Distribution management systems

IoT development environments

Build tools

For an exhaustive list, see Wikipedia.

  • Apache Maven (written in Java, XML configuration files)
  • SCons (configuration files are Python scripts)
  • RAKE - Ruby Make (tasks and dependencies in Ruby)
  • buildr - Apache Buildr is a build system for Java-based applications
  • Gradle (written in Groovy)
  • CMake (written in C++; uses native builders like make)
  • Waf (a build tool written in Python)
  • GNU Make (the classical tool; hopeless for folders with spaces)

Continuous integration

For an exhaustive list see Wikipedia.

  • Hudson (the original Sun project, donated by Oracle to the Eclipse Foundation)
  • Jenkins (the more active fork, backed by the project creator)
  • Travis (the GitHub prefered solution, very good integration)

JavaScript resources