The XCDL.py Software Requirements Specifications
From XCDL (eXtensible Component Definition Language) Wiki
Contents
Introduction
Purpose
This document is intended for software architects, designers, and developers, and should provide with the necessary input required during the design, implementation and maintenance of the XCDL framework.
Scope
This document refers to the XCDL configuration definitions and the associated build process.
Definitions and acronyms
- CDL - Configuration Definition Language, the configuration mechanism used by eCos
- XCDL - an extensible, XML based, configuration mechanism, inspired by CDL
References
Overview
Overall description
Product perspective
Product functions
User characteristics
Constraints
Assumptions and dependencies
Specific requirements
(To be ordered)
- must allow integration of source code from multiple repositories, even different svn/git/hg/etc
- must allow multiple variants (build configurations) for a project (Debug/Release); the build configs may run on identical or different hardware (different boards, different processors, different amounts of ram/flash, etc); an example of such a config was used for the Metrilog SDI-12 sensors, where the Debug config used a larger AVR than the Release.
- must store the complete build config in its own files (probably XMLs, but inspired from eCos CDT files)
- must run from the command line
- must allow integration with Eclipse CDT
- should allow integration with Xcode
- might allow integration with other IDEs like Visual Studio, NetBeans
- must not require special/non portable tools on the build platform; Python is prefered, Java is accepted
- must allow multiple toolchains
- must be C/C++ centric and must handle C/C++ dependencies automatically (obviously)
- should provide as much help as possible to specific steps like flash programming, debug, profiling
- might provide support for documentation generating tools (Doxygen)
- must provide support for testing (continuous integration)
- must provide support for custom build steps, using external tools (for example for adding a binary checksum, custom metadata, etc)
- should be reasonably short