# SCRAM FLAGS

SCRAM-based projects’ build rules provided via cmssw-config support many compilation/control flags. Scope of build/compilation flag are defined by the place they are defined in. e.g.

Project level flags

Any flag defined/provided via following are used for all build products of the project - top-level config/BuildFile.xml - compiler’s tools files (e.g. gcc-cxxcompiler.xml, gcc-cxxcom- piler.xml and gcc-f77compiler.xml) - via command-line USER_<flag>/SCRAM_<flag>

Tool level flags

Any flags defined in the tool file of an external are used for all the build products which directly or indirectly depends on that tool.

Product level flags

Any flags defined in the BuildFile.xml is used by the product(s) defined in that BuildFile.xml

Some flags (<class>[_REM]_<flag>) can be configured based on their product class e.g. available classes are

LIBRARY

For all shared library/edm plugin/edm capabilities plugin prod- ucts

BINARY

For all executables.

TEST

For all test executables.

TEST_LIBRARY

For all test shared libraires executables.

Some flags (<type>[_REM]_<flag>) can be configured based on the SCRAM- based area types e.g. available area types are

RELEASE

Only for compilation/build in the release area environment.

DEV

Only for compilation/build user development area.