A makefile can be defined as a collection of instructions (build steps) that are needed to build a program. The Symbian build process generates the required makefiles from project (.mmp) files, and these makefiles cater to all the usual build steps. There might be few build steps which are specific to your project, and are not catered for by the generated makefiles. These build steps are addressed by separate set of makefiles called extension makefiles. The need for extension makefiles purely depend on requirements of the project you are working with.
Since Symbian OS v9.3 the functionality and data for extension makefiles are kept separate. That is, extension makefiles with similar functionality can be generalised into a template makefile, which contains only the basic functionality. The same template can be used for various use cases by passing appropriate parameters (data). The parameters can be passed using the prj_extensions and prj_testextensions call mechanism in the bld.inf file, which deprecates the old approach of referring to the extension makefiles using the makefile or gnumakefile directive.
This template makefile approach reduces the number of makefiles, as the extension makefiles with similar functionality are generalized into a single template.
The following provides an overview of designing an extension makefile template. Details of the syntax are given in the reference topic Template extension makefiles.
Define the input variables used by the template. The values for these variables are passed through a component's bld.inf file. If necessary, assign the default values for these variables in the corresponding meta file (see Meta files).
Specify the set of targets that the makefile should respond to. An extension makefile responds to a few mandatory targets, apart from the project-specific targets. For more information on mandatory targets, refer to Extension makefile targets.
Specify the build steps to create/update the target. These build steps can include basic shell operations, called through platform independent variables, such as CP to copy a file, and RM to delete a file. Other than calling these basic shell commands, the makefile can call other tools required to complete the build step, such as calling a Perl program.
For more information on the syntax of template extension makefiles and variables, refer to Template extension makefiles.