Extension makefiles can be used where certain build steps are required
that are not catered for by the generated makefiles. Extension makefiles are
makefiles to be run by make.exe
(the GCC make utility) or
nmake.exe
(the Microsoft make utility). They must contain certain
make targets. During build activities, abld
will call the target
corresponding to the build activity that is being carried out. This will then
execute whatever commands your makefile specifies for that target.
The following table lists the required make targets:
|
All targets must be provided in an extension makefile. This should be done even if no commands are listed with a particular target, for the following two reasons:
The target will be called, during the build, whether commands are listed or not
nmake.exe
/make.exe
will generate an error
if the target cannot be found.
An example of a simple extension makefile is given below:
MAKMAKE :
echo this is an example
FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE :
This prints this is an example
to the console at the
makefile construction stage of an abld
, and does nothing for the
other targets.
Note that:
You can put multiple targets on the same line, as above.
You must have a space or a tab at the start of lines containing target commands.
Commands listed with each target can be calls to any tools or system commands that are available at build-time.
If different commands are required for the same target for different
platforms, special nmake.exe
/make.exe
syntax can be
used in conjunction with the $(PLATFORM)
and $(CFG)
macros that abld
defines to carry out the different commands.
$(CFG)
is defined as UDEB or UREL.
$(PLATFORM)
is WINS, ARMI, etc.
For example, the following nmake
makefile prints
ARMI MAKEMAKE COMMAND
at the makefile stage for the ARMI
target, or NOT ARMI BUILD
for any other platform:
!IF "$(PLATFORM)" == "ARMI"
MAKMAKE:
echo ARMI MAKEMAKE COMMAND
!ELSE
MAKMAKE:
echo NOT ARMI BUILD
!ENDIF
FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE :