Platform-Specific Makefile

Describes how to write the platform-specific makefile to build the bootstrap.

The platform-specific makefile sets some variables for file and path names and then includes the generic makefile.

The makefile consists of a collection of variables divided into a mandatory set, which must have values assigned, and an optional set.

The values are used by the Symbian platform generic makefile.

Mandatory variables

NAME

This the name of the bootstrap binary file. The filename is NAME.bin and it appears in EPOCROOT/epoc32/release/PLATFORM where PLATFORM is e.g. ARM4, ARMV5 etc.

MEMMODEL

This specifies which memory model is to be used on the target platform. Valid values are:

  • direct

  • moving

  • multiple

Platforms that use an ARM architecture 4, 4T or 5 will use moving for the main bootstrap.

Platforms that use ARM architecture 6 will use multiple.

Usually, direct will only be used when building a bootloader.

SOURCES

Specifies a list of platform-dependent assembler source files, each separated by at least one space, needed to build the bootstrap. Only file names are required, not paths.

In the example of the template, there is a single source file, template.s.

INCLUDES

Specifies a list of platform-dependent assembler include files, each separated by at least one space, needed to build the bootstrap. Only file names are required, not paths.

In the example of the template, there is a single include file, config.inc.

E32PATH

Specifies the relative path from the directory containing the platform-specific makefile to the directory containing the e32 source tree. This is used to find the generic source and the generic include files required to build the bootstrap.

In the example of the template, the path is ../...

Optional variables

EXTRA_INC_PATH

Specifies a list of directories, each separated by at least one space, which should be searched for assembler include files (.inc), and possibly C/C++ header files (.h) to be translated into assembler syntax.

Each entry in this list is relative to the directory in which the platform-specific makefile resides.

EXTRA_SRC_PATH

Specifies a list of directories, each separated by at least one space, which should be searched for assembler source files (.s).

Each entry in this list is relative to the directory in which the platform-specific makefile resides.

GENINCLUDES

Specifies a list of additional C/C++ header files (.h), each separated by at least one space, which should be translated into assembler syntax include files (.inc) for inclusion in assembler source.

For example, if a file x.h is specified in this list, it will be translated to x.inc in the build directory, and it should be included as x.inc in any source file which requires it.

ASM_MACROS

Specifies a list of additional symbols, each separated by at least one space, which should be defined when assembling each source file. Values may not be assigned to the symbols; all that can be tested is whether a symbol is defined.