Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Next the incDir and libDir are defined, which defines the installation directories.  These are the (include) and (lib) directories specified above.  Note that while the lib directory is flat, such that all libraries are stored without any subdirectories, the include directory has a structure where we have /include/<package>*.h  All public header files will be stored in the include directory.  In the case of a container package such as celestialSources, the structure would be /include/GRB/.h, so we omit the celestialSources, just as we do now with CMT.  We could expand our definition of installation directories to include pfiles, xml files, jobOptions, etc.

...

Then a function named registerObjects is defined, which accepts two arguments:  packageName and list of objects.  This function is called by each SConscript file within each package to register the package's objects.  Set up such that we can build any packagetarget, and SCons will be able to build any other required packages libraries as well as the requested packagetarget.

Finally, addSubPackages(topLevel, packages) causes all the SConscript files to be called.

...

Wiki Markup
*{_}registerObjects('facilities', {'libraries':\[facilitiesLib\], 'includes':\[glob.glob(os.path.join('facilities', '\*_{*}_._{*}{_}h'))_\*

Each package contains a tool,  <package>Lib.py which defines a python function according to SCons' specific form.  The facilitiesLib.py file contains two functions:
generate which does the work, and exists which provides the ability to turn off the tool.

def generate(env, **kw):  dictionary of keywords, which is not used now for ST where single libraries are created but GR will create packages where libraries may have different dependencies.

...

site_tools contains addLibrary
ordering in gcc matters for libs - can't find symbols otherwise.  The addLibrary tool  tool allows developers to avoid worrying about the order , and sets it up properlythemselves, since the tool reorders as necessary.   addLibrary makes sure the order is correct, if the item is not already the list, add it to the end, if it is already there, move it to the end.  Each library only appears once - this helps reduce the chance of creating a command line that is too long (which can occur when dealing with the Gaudi libraries).

Discussion

Wiki Markup
After building the libraries will exist in both the packages and in the installation lib directory.
 
&nbsp; After the build is completed, all we need is the include and lib directories for
runtime. 
 runtime.
_\[Actually this was true at the time of the discussion, but since then Navid has backed off having the SCons build perform the installation step and will copy the necessary files to the installation directories as a separate step.&nbsp; Aug 20, 2007\]_

Jim reminded us that it would be helpful to provide a mechanism for tags such as rh9_gcc32 and rhel4, similarly for opt and debug builds.  Navid could implement subdirectories with expanded English names as he's found some users are confused by our use of rh9_gcc32 for instance, something like redhat9_optimized.

Defining Applications using Likelihood as an example

For applications in the SConscript file:

...