The qrules.mk include file defines the macros used
for compiling.
You can inspect — and in some cases, also set —
the following macros when you use qrules.mk.
Since the
qtargets.mk file includes
qrules.mk, these are available there as well.
Don't modify those that are marked "(read-only)."
-
VARIANT_LIST (read-only)
- A space-separated list of the variant names
macro. Useful with the $(filter ...)
make
function for picking out individual variant names.
-
CPU
- The name of the target CPU.
Defaults to the name of the next directory up with all parent
directories stripped off.
-
CPU_ROOT (read-only)
- The full pathname of the directory tree up to and including the
OS level.
-
OS
- The name of the target OS.
Defaults to the name of the directory two levels up with all
parent directories stripped off.
-
OS_ROOT (read-only)
- The full pathname of the directory tree up to and including the
OS level.
-
SECTION
- The name of the section.
This is set only if there's a section level in the tree.
-
SECTION_ROOT (read-only)
- The full pathname of the directory tree up to and including the
section level.
-
PROJECT (read-only)
- The basename() of the directory containing the
common.mk file.
-
PROJECT_ROOT (read-only)
- The full pathname of the directory tree up to and including the
project level.
-
PRODUCT (read-only)
- The basename() of the directory above the project level.
-
PRODUCT_ROOT (read-only)
- The full pathname of the directory tree up to and including the
product level.
-
NAME
- The basename() of the executable or library being built.
Defaults to $(PROJECT).
-
SRCVPATH
- A space-separated list of directories to search for source files.
Defaults to all the directories from the current working directory up
to and including the project root directory.
You'd almost never want to set this; use EXTRA_SRCVPATH to
add paths instead.
-
EXTRA_SRCVPATH
- Added to the end of SRCVPATH.
Defaults to none.
-
INCVPATH
- A space-separated list of directories to search for include files.
Defaults to $(SRCVPATH) plus $(USE_ROOT_INCLUDE).
You'd almost never want to set this; use EXTRA_INCVPATH to
add paths instead.
-
EXTRA_INCVPATH
- Added to INCVPATH just before the $(USE_ROOT_INCLUDE).
Default is none.
-
LIBVPATH
- A space-separated list of directories to search for library files.
Defaults to:
. $(INSTALL_ROOT_support)/$(OS)/$(CPUDIR)/lib $(USE_ROOT_LIB).
You'll almost never want to use this; use EXTRA_LIBVPATH to add paths instead.
-
EXTRA_LIBVPATH
- Added to LIBVPATH just before $(INSTALL_ROOT_support)
/
$(OS)
/
$(CPUDIR)
/lib.
Default is none.
-
DEFFILE
- The name of an assembler define file created by mkasmoff.
Default is none.
-
SRCS
- A space-separated list of source files to be compiled.
Defaults to all *.s, *.S, *.c, and *.cc
files in SRCVPATH.
-
EXCLUDE_OBJS
- A space-separated list of object files not to be included in the link/archive step.
Defaults to none.
-
EXTRA_OBJS
- A space-separated list of object files to be added to the link/archive step even though
they don't have corresponding source files (or have been excluded by EXCLUDE_OBJS).
Default is none.
-
OBJPREF_
object,
OBJPOST_
object
- Options to add before or after the specified object:
OBJPREF_object = options
OBJPOST_object = options
The options string is inserted verbatim.
Here's an example:
OBJPREF_libc_cut.a = -Wl,--whole-archive
OBJPOST_libc_cut.a = -Wl,--no-whole-archive
-
LIBS
- A space-separated list of library stems to be included in the link.
Default is none.
-
LIBPREF_
library,
LIBPOST_
library
- Options to add before or after the specified library:
LIBPREF_library = options
LIBPOST_library = options
The options string is inserted verbatim.
You can use these macros to link some libraries statically
and others dynamically.
For example, here's how to bind libmystat.a and
libmydyn.so to the same program:
LIBS += mystat mydyn
LIBPREF_mystat = -Bstatic
LIBPOST_mystat = -Bdynamic
This places the -Bstatic option just before
-lmystat, and -Bdynamic right after it, so that
only that library is linked statically.
-
CCFLAGS
- Flags to add to the C compiler command line.
-
ASFLAGS
- Flags to add to the assembler command line.
-
LDFLAGS
- Flags to add to the linker command line.
-
VFLAG_
which
- Flags to add to the command line for C compiles, assemblies, and
links; see below.
-
CCVFLAG_
which
- Flags to add to C compiles; see below.
-
ASVFLAG_
which
- Flags to add to assemblies; see below.
-
LDVFLAG_
which
- Flags to add to links; see below.
-
OPTIMIZE_TYPE
- The optimization type; one of:
-
OPTIMIZE_TYPE=TIME — optimize for execution
speed
-
OPTIMIZE_TYPE=SIZE — optimize for executable
size (the default)
-
OPTIMIZE_TYPE=NONE — turn off optimization
Note that for the VFLAG_ which, CCVFLAG_ which,
ASVFLAG_ which, and LDVFLAG_ which macros, the
which part is the name of a variant.
This combined macro is passed to the appropriate command line.
For example, if there were a variant called "403," then
the macro VFLAG_403 would be passed to the C compiler,
assembler, and linker.
Note:
Don't use this mechanism to define a C macro constant that
you can test in the source code to see if you're in a
particular variant. The makefiles do that automatically for
you. Don't set the
*VFLAG_* macros for any of
the distinguished variant names (listed in the
"Recognized variant names"
section, above). The common makefiles will get confused if you do.