Symbian Developer Library

SYMBIAN OS V6.1 EDITION FOR C++

[Index] [Glossary] [Previous] [Next]



Tools and file types used in the build process


Tools

We use tools from three suppliers:

Microsoft

Microsoft Visual C++ and associated development environment

Microsoft Visual C++ is a leading C++ development environment, with a good integrated development environment, which is used for 95% of all Symbian software development.

Symbian

Various tools for resource compilation, bitmap conversion, ROM building, downloading, project control, and organising other tools.

Cygnus

Cygnus maintains the GNU C++ compiler and associated tools.

These tools support the widest variety of hardware platforms of any single compiler tool set in the industry. GCC is a powerful C++ compiler with a generic front end and optimiser, and back-end code generators for a wide variety of CPUs.

Symbian commissioned Cygnus to bring the GNU tool chain up to industrial strength for ARM development, and uses the Win32-hosted, ARM-targeted, version of the tool chain for all its target machine development.

Aspects of this industrial strength include a full language implementation as found in the C++ Annotated Reference Manual, good support for DLLs, support for templates (including some complexities of the interaction between templates and DLLs), and the production of PE-format executables.

The following tools are used:

Tool

Supplier, language

Description

bldmake

Symbian

This tool processes a component description file (bld.inf), which describes various aspects of the component, and generates a batch file called abld.bat. This batch file is then used to drive the rest of the component build.

It also generates several build batch .make files.

abld

Symbian

Uses the build batch .make files, generated by the bldmake tool. It is used to carry out the various stages of the building of components which have been defined by a bldmake component description file (bld.inf).

makmake

Symbian, PERL

The makmake tool is used to build makefiles for use in various environments, which are then used for project development.

Takes a .mmp project file which lists the elements of the project, and produces a makefile for the platform specified.

Uses GNU cpp to evaluate dependencies. Generated headers from resource compilation and multi-bitmap compilation, etc., should be available before makmake is run.

gcc

Cygnus

GNU C++ Compiler. Compiles a C++ file (normally .cpp) and produces an object file (.o).

ar

Cygnus

GNU archiver. Turns a number of .o object files into an archive, .in

ranlib

Cygnus

Library munger. Turns archive into an ARM PE format.

dlltool

Cygnus

Extracts symbol definitions .def from an archive .in; also constructs import library .lib from an archive and a .def file

ld

Cygnus

GNU linker. Produces an executable.

petran

Symbian

Strips a PE format file for ARM target of its irrelevant symbol information. This makes DLLs much smaller. As a consequence, EPOC ARM targets only support linking by ordinal.

Petran is also responsible for adding UID information to executables.

cl

Microsoft

MSVC C++ compiler. Compiles C++ source (normally .cpp) to object .obj.

link

Microsoft

Microsoft linker. Links .obj into an executable.

bscmake

Microsoft

Debug information generator.

rcomp

Symbian

Resource compiler.

bmconv

Symbian

Bitmap converter. Takes one or more Microsoft bitmaps .bmp and generates a single multi-bitmap file .mbm, optimised for efficient runtime loading by the EPOC GDI. Also a header file .h with symbolic definitions for each bitmap in the file.

More specialised EPOC tools are available for particular types of development, e.g. for generating font and printer driver libraries.

[Top]


File types

The following file types are involved in the process

.mmp

makmake makefile project — specification of a project, input to makmake

.dsp

Built by makmake for the Microsoft Developer Studio (Visual C++ 6.0) — project file generated by makmake from a .mmp file

.dsw

Built by makmake for the Microsoft Developer Studio (Visual C++ 6.0) — project workspace file generated by makmake from a .mmp file

.wins

makefile, for use by command-line compilations for WINS, output from makmake

.armi

makefile, for use by command-line compilations for ARMI, output from makmake

.make

build batch makefile, for use by abld for the purposes of building, output from bldmake bldfiles

.cpp

C++ source file, input to Microsoft cl or GNU cpp

.h

header file, for inclusion in C++ file

.rss

resource source file, for input to rcomp

.rh

resource header, for inclusion in resource file

.hrh

common C++ or resource header, for inclusion in either type of source file

.rsg

generated resource header file, output from rcomp

.rsc

generated resource file, output from rcomp

.bmp

bitmap file, in Microsoft Windows format, input to bmconv (can also be output)

.mbm

multi-bitmap file, generated by Symbian bitmap compiler, output from bmconv (can also be input)

.obj

object code, from MSVC++ cl compiler

.o

object code, from GNU gcc compiler

.def

linker definition file, for input to link and dlltool, and can be output by deftool

.frz

freeze file, really a .def file containing the entry points which must be frozen, for input to deftool

.lib

static library containing stubs for DLL linking, output from link or dlltool, input to link or ld

.map

map of entities in an executable, output by link or ld

.exe

program — a type of executable, output by link or ld

.dll

dynamic link library or DLL — a type of executable, output by link or ld, dynamically loaded at run-time by the .exe loader, or by other executables under program control

.app

a GUI application — a DLL which implements the application architecture interface

.aif

Application information file, as defined by the application architecture, output by aiftool

[Top]


Location and installation of tools

Tools for EPOC development are found in two directories, which you should include in your path:

The SDK installation process does the path and registry settings for you.

[Top]


Syntax descriptions

All tools have command line syntax. Some additionally are compilers, with source file syntax. Syntax is described in this book using a modified BNF (Backus Naur Form).

Syntax fragments are given like this:

source-file : statement-list

At the top-left of every diagram is the construct that is being explained — in this case, source-file. The rest of the diagram explains the way a source-file is constructed.

In this case, a source-file is a statement-list. Anything followed by -list means zero or more items: thus, a source-file can be zero or more statements. You need to consult the diagram for statement to see what a statement can be:

statement : struct-statement | resource-statement | name-statement | offset-statement | system-statement

This illustrates the use of vertical bar to denote alternatives: a statement can be one of the five statement types shown.

offset-statement : OFFSET number

When some text is given in heavy monospaced type, it means it should be typed in literally. Thus, the offset-statement consists of the word OFFSET, followed by a number.

struct-statement : STRUCT struct-name [ BYTE | WORD ] { struct-member-list }

This diagram illustrates the use of square brackets to denote something that is optional. Also note the use of the vertical line to denote a choice to be made between mutually exclusive options.

array-initializer : { array-initializer-item-comma-list }

This shows the meaning of -comma-list: one or more items separated by commas. Thus, an array-initialiser could be of the form

{ aii , aii , aii }

Generally, the syntax diagrams do not show punctuation, newlines, whitespace etc. Such details would make the diagrams difficult to read, and introduce little useful information.