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:
- Top Level:
- Centrally Controlled List
- Per Package Level:
- Variables in pkg/GNUmakefile
- Architecture Specific Variables:
- Variables in pkg/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
<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
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.
-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.
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
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
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
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.
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.
VERBOSE=yes or 1 Dump of the rules and other verbose output.
ROPT=-Verbose Verbose mode, same as VERBOSE=1.
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.
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.
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.
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
EXTRABINS executable binaries to be built manually.
Define its source in BINCCFILES.
You must provide extra binary dependency and rules.
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.
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,
|