Symbian3/SDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita
changeset 0 89d6a7a84779
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?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>
\ No newline at end of file