Usage: cons-- Arguments can be any of the following, in any order: [targets] Build the specified targets. If [target] is a directory recursively build everything within that directory. +[pattern] Limit the cons scripts considered to just those that match [pattern]. Multiple + arguments are accepted. [name]=[val] Sets [name] to value [val] in the ARG hash passed to the top-level Construct file. -cc Show command that would have been executed, when retrieving from cache. No indication that the file has been retrieved is given; this is useful for generating build logs that can be compared with real build logs. -cd Disable all caching. Do not retrieve from cache nor flush to cache. -cr Build dependencies in random order. This is useful when building multiple similar trees with caching enabled. -cs Synchronize existing build targets that are found to be up-to-date with cache. This is useful if caching has been disabled with -cc or just recently enabled with UseCache. -d Enable dependency debugging. -g Enable Construct/Conscript debug print out -f [file] Use the specified file instead of "Construct" (but first change to containing directory of [file]). -i Don\'t force to search for include file in default include directory -lh Show a help message local to the current build if one such is defined, and exit. -o [file] Read override file [file]. -k Keep going as far as possible after errors. -p Show construction products in specified trees. -pa Show construction products and associated actions. -pw Show products and where they are defined. -q Be quiet about Installing and Removing targets. -wf [file] Write all filenames considered into [file]. -r Remove construction products associated with [targets] -R [repos] Search for files in [repos]. Multiple -R [repos] directories are searched in the order specified. -noR Do not search for files in repositories. -v Show cons version and continue processing. -V Show cons version and exit. -x Show this message and exit. -h Show this message and exit. Please report any bugs/fixes/suggestions through the cons-discuss@eng.fore.com mailing list. To subscribe, send mail to cons-discuss-request@eng.fore.com with body 'subscribe'. User documentation of cons is contained in cons and can be obtained by doing 'perldoc /path/to/cons'. The Official cons site is: http://www.dsmit.com/cons/
In top level directory (which contains pams or/and StRoot) type
cons . or simply cons ("." is default target)This build includes loop over all directories under pams, StRoot and asps/rexe (root4star).
+[pattern] Limit the cons scripts considered to just those that match [pattern]. Multiple + arguments are accepted. ThusPlease notice to select pams/tpc only it is need to use pattern +/tpc/.
cons +tpc
will be executed for tpc and ftpc directories.
..... Run Conscript-standard in StRoot/St_TLA_Maker for St_TLA_Maker ... .sun4x_56/lib/St_TLA_Maker.so .sun4x_56/obj/StRoot/St_TLA_Maker/St_TLA_Maker.so .sun4x_56/obj/StRoot/St_TLA_Maker/St_TLA_Maker.o .sun4x_56/obj/StRoot/St_TLA_Maker/St_TLA_Maker.cxx include/St_DataSetIter.h StRoot/St_base/St_DataSetIter.h include/St_DataSet.h StRoot/St_base/St_DataSet.h /afs/rhic/star/ROOT/2.23/ROOT/src/TNode.h /afs/rhic/star/ROOT/2.23/ROOT/src/TRotMatrix.h /afs/rhic/star/ROOT/2.23/ROOT/src/TNamed.h /afs/rhic/star/ROOT/2.23/ROOT/src/TString.h /afs/rhic/star/ROOT/2.23/ROOT/src/TRefCnt.h /afs/rhic/star/ROOT/2.23/ROOT/src/Rtypes.h /afs/rhic/star/ROOT/2.23/ROOT/src/DllImport.h /afs/rhic/star/ROOT/2.23/ROOT/src/RConfig.h /afs/rhic/star/ROOT/2.23/ROOT/src/RVersion.h /afs/rhic/star/ROOT/2.23/ROOT/src/TMath.h /afs/rhic/star/ROOT/2.23/ROOT/src/TList.h ...This option is quite useful to resolve requests to header files which don't exist.
cons is using soft links. The trouble with soft link that they still
exist when you have deleted original files.
To clean up these links you should add one more parameters in cons
cons LinksCheck=YES
The following list of parameters can be overwritten from cons command line :
cons parameter=value
cons is Perl-based. That is cons scripts:
files, the equivalent to makefiles -- are all written in Perl. Build of directory tree is organized by creating a hierarchy of build scripts. At the top of the tree is a script called Construct. The rest of the scripts, by convention, are each called Conscript. These scripts are connected together, very simply, by the Build, Export, and Import commands.
Construct
#!/opt/star/bin/perl use Env; ... $_ = $STAR_HOST_SYS; print "System: ", $_,"\n" unless ($param::quiet); if (/^i386_/) { $OSFID = "lnx Linux linux LINUX CERNLIB_LINUX CERNLIB_UNIX CERNLIB_LNX CERNLIB_QMLNX NEW_ARRAY_ON GNU_GCC ST_NO_NUMERIC_LIMITS ST_NO_EXCEPTIONS ST_NO_NAMESPACES"; $CXXFLAGS = "-fPIC -Wall"; $CFLAGS = "-fPIC -Wall"; $CPPFLAGS.= "f2cFortran"; $LDFLAGS = "-Wl,-Bstatic"; $EXEFLAGS = $CXXFLAGS . " -Wl,-Bdynamic"; $SOFLAGS = "-shared"; $CLIBS = "-L/usr/pgi/linux86/lib -L/usr/X11R6/lib -lXt -lXpm -lX11 -lpgc -lm -ldl -rdynamic"; ... } else { ... } .. env = new cons( 'CPPPATH' => $CPPPATH, 'CPPFLAGS' => $CPPFLAGS, 'DEBUG' => $DEBUG, 'FC' => $FC, 'FFLAGS' => $FFLAGS, 'FEXTEND' => $FEXTEND, 'FCPPPATH' => $FCPPPATH, 'Fout' => $Fout, ... 'ENV' => { 'PATH' => $PATH, 'STAR' => $STAR, 'CERN_ROOT' => $CERN_ROOT, 'STAF' => $STAF, 'STAR_BIN' => $STAR_BIN, 'STAR_SYS' => $STAR_HOST_SYS }, ); Export qw( env INCLUDE LIB BIN EXPORT BUILD OBJ); Build @Targets;
Conscript
Import qw ( env INCLUDE LIB BIN EXPORT BUILD OBJ); (my $build = $OBJ) =~ s/\#//g; $build =~ s/\\/\//g; # Account NT (my $ObjDir = DirPath '.') =~ s/\\/\//g; (my $Dir = $ObjDir) =~ s/$build\///g; my $pkg = basename($Dir); ... my @src = qw (CorrFctn/MinvCorrFctn.cxx CorrFctn/OpeningAngleCorrFctn.cxx CorrFctn/QinvCorrFctn.cxx CorrFctn/QvecCorrFctn.cxx CorrFctn/ExitSepCorrFctn.cxx … ); my $SO_PKG = $pkg . "." . $env->{SUFSOLIB} LinkedModule $env2 $SO_PKG, @src; Install $env2 $LIB, $SO_PKG;
What problems show up with C Ppreprocessor include path
The most often problem shows up when cons complains that it does know how to build include file like this:
cons: don't know how to construct "include/tables/St_gen_header_Table.h"To track down from which source code you get this complain just debug dependencies:cons -d +StEventMaker ... .i386_redhat51/lib/StEventMaker.so .i386_redhat51/obj/StRoot/StEventMaker/StEventMaker.so .i386_redhat51/obj/StRoot/StEventMaker/StEventMaker.o .i386_redhat51/obj/StRoot/StEventMaker/StEventMaker.cxx /afs/rhic/star/packages/StAF/SL99g/inc/fortranc.h .i386_redhat51/obj/StRoot/StEventMaker/StEventManager.hh include/tables/St_gen_header_Table.h cons: don't know how to construct "include/tables/St_gen_header_Table.h"The problem is due to the requirement that for all non system include files, i.e. files which includes using double quoted string
("string",instead of < string > for system header files)
cons has to know where to find this include files) or how to construct it. Right now in STAR library only three directories exported as C Preprocessor include path: