The ROOT build issue
06/01/2010 15:46
This is a summary of efforts to incorporate ROOT packages into our CMT and
Gaudi-based system.
A ROOT package contains some or all ROOT-based classes, and has the following
requirements
- Some or all of the classes inherit from TObject, and the package must "use"
ROOT to access the header files.
- As a part of the build process, it must run the ROOT utility rootcint,
with dependence on all the header files. That is, if any header file is out of
date, rootcint must be rerun seamlessly
- The build process must construct a .dll/.so that can be loaded by ROOT and a
lib to describe it
- The path to the constructed binaries must be appended to LD_LIBRARY_PATH,
for use by ROOT and Gaudi.
- The header files and libraries are made public for client packages.
The issue is primarily how to incorporate the rootcint step into the build
process, with appropriate dependencies, and to insure that the resulting
source files are compiled and linked into the dll. We want the solution to be
encapsulated into a "policy" package, that, when "used" by a ROOT package, will
guarantee the appropriate build behavior.
We have defined the package RootPolicy for this purpose. It must provide:
- An appropriate makefile fragment and document definition for Linux
- Provision to add a "custom build" section to the Visual Studio project
that builds the library.
See the current
RootPolicy, which we think satisfies the requirements.
--Toby and Heather.