Symbian3/SDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 21 Jan 2010 18:18:20 +0000
changeset 0 89d6a7a84779
permissions -rw-r--r--
Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5" xml:lang="en"><title>The
Symbian build process</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>Symbian platform programs are initially developed for a Symbian emulator
running on Windows, and are then rebuilt for the ARM processor (native) targets
used in real Symbian platform phones. Building can be performed from the Windows
command line, or from within an IDE if one is available. The descriptions
given in this documentation set concentrate on command line building, as documentation
for using an IDE is normally distributed with the IDE itself. </p>
<p> <b>Note:</b> This page includes a description of the use of Symbian's
SBSv1 build system, which provides the <codeph>bldmake</codeph> and <codeph>abld</codeph> command
line tools. Symbian also provides a newer command line build system, called
SBSv2, in its Platform Developer Toolkit (PDT) product. SBSv2 can help achieve
improved build speed over SBSv1. </p>
<section><title>Build targets</title> <p>This section describes the tools
and compilers supported on the kits supplied by Symbian. Note that licensees
or third-parties may supply additional tools, or extend support to additional
compilers which are not described here. </p> <p>Symbian build their emulator
code with the Metrowerks CodeWarrior compiler. This is known as the <codeph>WINSCW</codeph> build
target. Binaries built with this compiler are put in the <filepath>epoc32\release\winscw</filepath> and <filepath>epoc32\winscw</filepath> directory
trees. </p> <p>You can build your programs for the Symbian emulator using
Metrowerks CodeWarrior. The build tools also have support for using the Microsoft
Visual Studio .NET 2003, or Microsoft Visual Studio v6 IDEs. See <xref href="GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita">The
Symbian emulator build targets</xref> for more details. </p> <p>To build code
for a phone, a compiler based on the Application Binary Interface (ABI) for
the ARM Architecture is needed. This is a standard for the interfaces of binary
code running in ARM environments, and is intended to allow inter-operation
of binaries produced by different compilers that conform to the standard.
The specification is published by ARM at <xref href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0038a/index.html" scope="external">http://infocenter.arm.com</xref>. </p> <p>The Symbian platform
build tools are configured to work with two compilers in particular: </p> <ul>
<li id="GUID-0F50C5D5-9C66-5414-9952-CFB0B6C3E88C"><p>ARM's own RealView Compiler
Tools (RVCT). This is particularly intended for licensee's building ROMs for
phones. For details, see ARM's website at <xref href="http://www.arm.com/products/DevTools/RealViewDevSuite.html" scope="external">http://www.arm.com</xref>. </p> <p>The situation
is complicated by there existing two versions of the ARM ABI, referred to
as v1 and v2 respectively. The toolchain allows either to be chosen. </p> </li>
<li id="GUID-231F1526-3BB8-5602-B867-12B6A7CD11D9"><p>A version of the GNU
Compiler Collection (GCC) that supports the ABI for the ARM Architecture.
This compiler is delivered on Symbian platform kits, and is freely available.
This target is known as <codeph>GCCE</codeph>. It can only be used to compile
code to v2 of the ARM ABI, not to the earlier v1. </p> </li>
</ul> <p>See <xref href="GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita">The native
build targets</xref> for more details. </p> </section>
<section><title>Project files</title> <p>Because of the variety of targets
and toolchains available, Symbian platform allows projects to be specified
in a form not specific to any. These neutral project files are then used by
Symbian platform tools to create toolchain-specific project files when these
are required. </p> <p>The key project files are: </p> <ul>
<li id="GUID-015E5371-C812-5654-84AF-E29715AF9356"><p>a project definition
file (<filepath>.mmp</filepath> file) that describes a project to be built.
This is an environment neutral file that can be used by the tools to produce
make files for any of the supported target environments. It also defines resource
file and application information files to be built. </p> </li>
<li id="GUID-1F3FEF0C-98BC-582F-B973-04D51F50E1D4"><p>a component description
file (<filepath>bld.inf</filepath>), which lists all the projects in a component,
and gives additional build instructions. </p> </li>
</ul> <p>When you create a new project, you write these files (or typically
copy existing similar files and modify them) in a text editor. IDE's may allow
new projects to be created from existing template projects. </p> <p>See <xref href="GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita">How to build GUI applications</xref>, <xref href="GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita">How to build DLLs</xref>,
and <xref href="GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita">How to build EXEs</xref> for
guidance on how to write project files for the three most common types of
program. See the <xref href="GUID-49397CFD-955A-5DF6-9251-368C44224966.dita">Build
tools reference</xref> for details on the file formats and syntax. </p> </section>
<section><title>Building from the command line</title> <p>You can build for
any target from the command line. The procedure is summarised below. </p> <ol id="GUID-6F57EEBA-7ECA-529C-AC4F-7B22AE90DFC3">
<li id="GUID-315A168A-926A-57D9-B1DF-CB36F6C8DED2"><p>Create a project specification
(<filepath>.mmp</filepath>) file. </p> </li>
<li id="GUID-F3C9187F-AAF6-5D4B-AE0E-135A152011CF"><p>Create a component definition
file (<filepath>bld.inf</filepath>). In many cases this will specify a single
project <filepath>mmp</filepath> file. </p> </li>
<li id="GUID-8641EE54-AA0C-5825-A510-43DA55B36D11"><p>Run <filepath>bldmake</filepath> from
the directory where the <filepath>bld.inf</filepath> file is located: </p> <p><userinput>bldmake
bldfiles</userinput> </p> <p>This creates a <filepath>abld.bat</filepath> batch
file, which you use in the next step. </p> </li>
<li id="GUID-B49FCB10-1058-5C0F-A0FD-216C2D1D8A9B"><p>Use <systemoutput>abld
build</systemoutput> to build the project. </p> <p>This builds the project
for all valid targets and both release and debug variants. To build for a
particular target and variant, use <systemoutput>abld                 build
target-name variant</systemoutput>, for example </p> <p><userinput>abld build
winscw udeb</userinput> </p> <p>to build for the debug variant of WINSCW. </p> </li>
</ol> <p>For more details on using the tools, see <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How
to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How
to use abld</xref>. </p> </section>
</conbody></concept>