SLAC PEP-II
BABAR
SLAC<->RAL
Babar logo
HEPIC E,S & H Databases PDG HEP preprints
Organization Detector Computing Physics Documentation
Personnel Glossary Sitemap Search Hypernews
Unwrap page!
Comp. Search
Who's who?
Meetings
FAQ Homepage
Archive
Environment
Administration
New User Info.
Web Info/Tools
Monitoring
Training
Tools & Utils
Programming
C++ Standard
SRT, AFS, CVS
QA and QC
Remedy
Histogramming
Operations
PromptReco
Simulation Production
Online SW
Dataflow
Detector Control
Evt Processing
Run Control
Calibration
Databases
Offline
Workbook
Coding Standards
Simulation
Reconstruction
Prompt Reco.
BaBar Grid
Data Distribution
Beta & BetaTools
Kanga & Root
Analysis Tools
RooFit Toolkit
Data Management
Data Quality
Event display
Event Browser
Code releases
Databases
Check this page for HTML 4.01 Transitional compliance with the
W3C Validator
(More checks...)

Targets and Variables for BaBar Makefile system

The targets and variables used in BaBar's Makefile system.

Oct 24, 1999
[BaBar Home Page] [Computing] [Tools] [Release]


Maps:

Major Targets of top level GNUmakefile

    all       equivalent to 'lib', followed by 'bin'
              lib & bin are expected to do the usual things in
              all the subdirectories, so this is the usual build command

    allbin    bin + extrabin.

    bin	      build executables defined in BINS and BINSCRIPTS.

    bootstrap build basic packages that need to be built in special order

    clean     delete files in working directories for all architectures
	(where "working directories" are bin, lib, tmp, test, and results)

    cold      used when making a production release; builds the
              needed binary exectuables first with 'bootstrap'.

    extrabin  build extra binaries defined in EXTRABINS.

    installdirs   create needed directories.
	
    schema	generate schema for database

    <pkg>.bin  build 'bin' on a specific package

    <pkg>.lib  build 'lib' on a specific package


Secondary Targets of top level GNUmakefile

<target> build <target> in all packages (where <target> is arbitrary strings not containing a .) binscript build scripts defined in BINSCRIPTS. check do installation checks cleanarch delete files in working directories for current $BFARCH cleanbin delete executables in bin directories for current $BFARCH cleanlib delete library files in lib directories for current $BFARCH cleanarch delete files in working directories for current $BFARCH dep Does a dependency check of link_PACKAGE.mk file doc documentation. This is also included in the bin targer include create any include files needed man man pages. This is also included in the bin target <pkg>.echoMacro echo value of a macro. Macro to echo is spec'd in ECHOMACRONAME, e.g., gmake ECHOMACRONAME=BINS myPkg.echoMacro <pkg>.<target> build <target> in the <pkg> subdirectory siteinstall install scripts for remote site. Normally equal binscript. Typically, a newly created release within the BaBar system needs a gmake installdirs, followed by one or more gmakes. One can also do particular directories, like 'gmake stdhep.lib' or 'gmake HepTuple.bin', or a complete phase like 'gmake lib' The include path now starts with tmp/$BFARCH, then <>/$BFCURRENT/tmp so that locally created include files will be found preferentially

Major Build Options (ROPT=)

Options that can be set in BFARCH or ROPT. e.g. "gmake ROPT=-Time-Optimize" Use 'no' to turn off an option; e.g. ROPT=-noDebug. -Debug turn on debug option. e.g. add '-g' to CXXFLAGS. -NOBIN do not build binary except in bootstrap -Optimize turn on optimization. e.g. add '-O' to CXXFLAGS. -Production production release. Same as PRODUCTION_RELEASE=1. -Prunebin prune binary based on keep_xxx list. -Shared build shared library. =-Shared-Lshared-Lstatic. -Verbose Verbose mode, same as VERBOSE=1.

Secondary Build Options (ROPT=)

-Fastbuild collect .o to libfoo.a at end of lib target to save I/O. -Lshared put shared library in link library search path. -Lstatic put static library in link library search path, default. -native use native compiler. -Objy use Objectivity. -Showdir show detail directory level information "-> pkg.dir.target" -Skipdfile skip 'include .d files' -SkipSlaclog skip 'slaclog' when it hangs. -Static build static library, default. Exclusive with -Shared. -Time display CPU timing information.

Clean/Cleanarch Options

CLEANLIST full path of directories to be cleaned. e.g CLEANLIST='lib tmp/SunOS5' NOCLEAN top directories not to be cleaned. e.g. NOCLEAN='lib results' Note: *) CLEANLIST must be the full path while NOCLEAN is the top-level directory. *) This feature is available starting from 8.5.0

Major Directory Variables

Variables used to define general directories. TOPDIR top level directory of this production/test release. srcdir current directory in packages/sub-directories. PACKAGE name of package

Destination Directory Variables

bindir executable products docdir documentation includedir constructed include files libdir .a products mandir man files objdir .o for static library if -Fastbuild option is on. shobjdir .o for shared library. shworkdir .o and .d files for shared library build. srcdir source directory in packages/sub-directories. testdir test files workdir .o and .d files

Major Centrally Controlled List

binonly_sunos5 build 'bin' of this package on SunOS5 only. For online. keep_bin binaries to be kept in a -Prunebin build keep_pkg packages to be kept in a -Prunebin build nodebug_pkg packages to be build with -noDebug nokeep_bin binaries that should be pruned in all cases nokeep_bin_opt binaries that should be pruned in an -Optimize build nokeep_bin_noopt binaries that should be pruned in an -noOptimize build only_sunos5 build this package on SunOS5 only. For online build. skip_optimize do not optimize these packages in -Optimize build.

Secondary Centrally Controlled List

protect_dbdir database directory to be protected skip_bin skip bin stage skip_fastbuild ignore -Fastbuild option for these packages skip_include skip include stage skip_include_d skip include *.d files. e.g. bootstrap, clean skip_lib skip lib stage skip_nonstd do not use -fnonstd flag to dump upon FPE. skip_test skip test stage Note: See standard.mk for more variable definition/descriptions.

Major Debugging Options

VERBOSE=yes or 1 Dump of the rules and other verbose output. ROPT=-Verbose Verbose mode, same as VERBOSE=1.

Secondary Debugging Options

DEBUG=1 : debug ROPT, OPTIONS. DEBUG02=1 : debug schema information. DEBUG03=1 : debug subdirectory level, turn on 'set -x'. DEBUG04=1 : debug sub-make, MAKEOVERRIDES. See standard.mk. DEBUG05=1 : debug shared library. See standard.mk. DEBUG06=1 : debug ALLLIB of shared library, careful! long! See standard.mk. DEBUG07=1 : debug ROPT=-Prunebin option. DEBUG08=1 : debug SRCDIR, etc DEBUG10=1 : debug include .d files. See standard.mk. DEBUG11=1 : debug speed by monitoring PACKAGES, etc. DEBUG12=1 : debug checking links during installdirs DEBUG13=1 : debug display BIN1, LIBCCFILE1, etc. See standard.mk. DEBUG14=1 : debug corba. DEBUG15=1 : debug 'clean'. DEBUG16=1 : debug slaclog. Won't call slaclog. Use 'logopt=-debug' to debug. DEBUG17=1 : debug binonly-sunos5 list.

Major Variable in pkg/GNUmakefile

BINCCFILES C++ files to be compiled and linked for executable binary. Including files for BINS and EXTRABINS. BINS executable binaries and scripts to be built automatically. you must provide binary dependency. BINSCRIPTS shell script products LIB library products LIBCCFILES C++ files to be compiled into library. MANPAGES man pages. TESTSCRIPTS scripts for regression test.

Secondary Variable in pkg/GNUmakefile

ALLBINS BINS + EXTRABINS + BINSCRIPTS ALLLIB LOADLIBES plus SYSLIB. BINARIES BINS + EXTRABINS DOCS Files to copy to appropriate directories ECHOMACRONAME Determines which macro is selected for echoing by echoMacro: INC include file products (no rules yet) LIBCFILES C files to be compiled into library. LIBFFILES Fortran files to be compiled into library. LIBF90FILES FORTRAN-90 source to compile into library LIBDDLFILES DDL files to be processed/compiled into library. LIBIDLFILES IDL files to be processed/compiled into library. LIBTMPLFILES template class files. LOADLIBES SRT libraries SUBDIRS directories which should do recursive MAKEs SYSLIB non-SRT system-level libraries.

Shared Library Variable in pkg/GNUmakefile

LIBCCSTATICFILES C++ file to keep in static library for -Shared build LIBDDLSTATICFILES DDL file to keep in static library for -Shared build LIBIDLSTATICFILES IDL file to keep in static library for -Shared build

Extra Binaries in pkg/GNUmakefile

EXTRABINS executable binaries to be built manually. Define its source in BINCCFILES. You must provide extra binary dependency and rules.

Major Variables that is platform sensitive

Compiler/linker flags FCFLAGS Flags for the FORTRAN-77 compiler, for .f files. FFC FORTRAN-77 compiler, for .F files. FFCFLAGS Flags for the FORTRAN-77 compiler, for .F files. FFCPP pre-processor for .F files. FFCPPFLAGS Flags for the pre-processor of .F files. F90CFLAGS Flags for the FORTRAN-90 compiler Note: F-90 does _not_ use the FCFLAGS MFLAG ask preprocessor to make dependency file. Normally -M.

Secondary Variables that is platform sensitive

CC_SUFFIX suffix of C++ source, can be .cc or .cxx or .cpp

Maintained by Terry Hung. Send suggestions and additions to
terryh@slac.stanford.edu,