README
changeset 2 39c28ec933dd
child 4 1f8f87c60526
equal deleted inserted replaced
1:820b22e13ff1 2:39c28ec933dd
       
     1 # Copyright (c) 2010 Symbian Foundation Ltd
       
     2 # This component and the accompanying materials are made available
       
     3 # under the terms of the License "Eclipse Public License v1.0"
       
     4 # which accompanies this distribution, and is available
       
     5 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     6 #
       
     7 # Initial Contributors:
       
     8 # Mike Kinghan, mikek@symbian.org, for Symbian Foundation Ltd - initial
       
     9 # contribution.
       
    10 
       
    11 == Contents ==
       
    12 ==============
       
    13 - Intro
       
    14 - Strategy for building this package
       
    15 - Preparing to build this package on Linux
       
    16 - Preparing to build this package on Windows
       
    17 - Patch files for the upstream package
       
    18 
       
    19 == Intro ==
       
    20 ===========
       
    21 
       
    22 This README describes the status quo at a point in time and it may be out of
       
    23 date. See also the files TODO and NEWS for possibly more current information.
       
    24 This README will be updated from time to time.
       
    25 
       
    26 This package is a branch from the Symbian Build package
       
    27 (http://developer.symbian.org/oss/MCL/sftools/dev/build) at Mercurial revision
       
    28 mentioned in the file baseline.txt. The Build package "provides everything you
       
    29 need to build the Symbian platform." This branch work-in-progress toward
       
    30 enabling those tools to build without problems and run correctly on a
       
    31 conventional GNU/Linux host, as well Windows hosts.
       
    32  
       
    33 It fixes the upstream package so that:-
       
    34 
       
    35 * All targets will build without errors or warnings on a GNU/Linux host using
       
    36 the GCC 4.4.x toolchain and Standard C++ Library.
       
    37 * All targets will build without errors or warnings on a Windows host using the
       
    38 Mingw GCC 3.4.x toolchain Standard C++ Library, from a Symbian PDT 1.6
       
    39 installation.
       
    40 
       
    41 (There is one unimportant target that cannot be built. This is the sbsv2guide
       
    42 target, which merely exports documentation for Raptor. It cannot be fixed
       
    43 because the documentation is not present in the upstream package at the branched
       
    44 revision, bug #2607.)
       
    45 
       
    46 These fixes *do not* suffice to make all the tools fit for purpose on both Linux
       
    47 and Windows. That requires more work, which you are invited to undertake and
       
    48 conrtibute to this package. See the TODO and NEWS files.   
       
    49 
       
    50 == Strategy for building this package ==
       
    51 ========================================
       
    52 
       
    53 The strategy for building this package on Linux was:
       
    54 
       
    55 * Build Raptor, using the native GCC 4.4 toolchain and Standard Library.
       
    56 * Configure Raptor to use the native GCC toolchain and Standard Library, and
       
    57 compile according to the C++0x language standard.
       
    58 * Build the remaining targets conventionally using Raptor.
       
    59 * Fix the compilation errors and warnings that appeared in this environment in a
       
    60 way that is proved portable to the Windows build.
       
    61 
       
    62 The strategy for building the package on Windows was:
       
    63 * Install PDT 1.6 to get Raptor, with the Mingw GCC 3.4 toolchain and Standard
       
    64 Library
       
    65 * Configure Raptor to use the Mingw Standard Library.
       
    66 * Build the targets, except Raptor itself, conventionally using Raptor.
       
    67 * Fix the compilation errors and warnings that appeared in this environment in a
       
    68 way that is proved portable to the Linux build.
       
    69 
       
    70 The Windows and Linux fix/build cycles were alternated iteratively until both
       
    71 were error free. The Windows build was performed solely as a portability check,
       
    72 since all the tools in the package are provided for Windows in the PDT. The
       
    73 Windows build did not include the building of Raptor itself, since nothing
       
    74 needs fixed to build Raptor.
       
    75 
       
    76 For both Linux and Windows, the upstream Raptor configuration was amended to
       
    77 make GCC invoke the Standard Library installed with the toolchain, and not the
       
    78 retro STLPort implementation that is included in PDKs and which GCC is
       
    79 configured to use by default. The code dependencies on this STLPort library are 
       
    80 superficial and are fixed.
       
    81 
       
    82 If you contribute to this package, *please ensure your preverse portability
       
    83 between Windows and Linux*
       
    84 
       
    85 == Preparing to build this package on Linux ==
       
    86 ==============================================
       
    87 
       
    88 * Install the host GCC toolchain, if not already present.
       
    89 
       
    90 * Install preqrequisities for building Raptor.
       
    91   - bison
       
    92   - ncurses & its headers
       
    93   - libbz2 & its headers
       
    94 
       
    95 * Install the boost libraries and their headers. The upstream package bundles
       
    96 a defective copy of the boost libraries v1.39 for building the imgtools/imglib
       
    97 target. The headers of this copy compile for Windows (with one small fix)
       
    98 but are broken for Linux, so the Linux build is fixed to expect boost libraries
       
    99 from the system. v1.40 is OK.
       
   100   
       
   101 * Install libxml2 and its headers. These are also bundled with the upstream
       
   102 package for building the imgtools/imgcheck target, but there is no target that
       
   103 exports them so they are not found by the imgcheck build.
       
   104     
       
   105 * Clone, copy or extract this package into a directory that is going to be your
       
   106 EPOCROOT for Raptor builds.
       
   107 
       
   108 * Browse to the Symbian Developer website, http://developer.symbian.org
       
   109 * Navigate: Tools & Kits -> Download the Symbian^3 kits.
       
   110 * This package is built using Symbian headers from PDK 3.0.h. If that is not the
       
   111 current PDK listed under Downloads, then click "Previous releases" and navigate
       
   112 to the download page for PDK 3.0.h.
       
   113 * Download the following 3 zip archives from PDK 3.0.h and extract them into
       
   114 your EPOCROOT directory:
       
   115   - binaries_epoc.zip, 
       
   116   - binaries_epoc_sdk.zip 
       
   117   - tools_epoc.zip
       
   118 
       
   119 * Consult the README-LINUX file in the subdirectory cross-plat-dev-utils.
       
   120 
       
   121 == Preparing to build this package on Windows ==
       
   122 ================================================
       
   123 
       
   124 * Browse to the Symbian Developer website, http://developer.symbian.org
       
   125 * Navigate: Tools & Kits -> Download the PDT
       
   126 * For Windows, this package is built using Raptor 2.12.1 in PDT 1.6 If 1.6 is
       
   127 not the current PDT listed under Downloads, then click "Previous releases" and
       
   128 navigate to the download page for PDT 1.6.
       
   129 * Download and install PDT 1.6
       
   130 
       
   131 * Clone, copy or extract this package into a directory that is going to be your
       
   132 EPOCROOT for Raptor builds.
       
   133 
       
   134 * Browse to the Symbian Developer website, http://developer.symbian.org
       
   135 * Navigate: Tools & Kits -> Download the Symbian^3 kits.
       
   136 * This package is built using Symbian headers from PDK 3.0.h. If that is not the
       
   137 current PDK listed under Downloads, then click "Previous releases" and navigate
       
   138 to the download page for PDK 3.0.h.
       
   139 * Download the following 3 zip archives from PDK 3.0.h and extract them into
       
   140 your EPOCROOT directory:
       
   141   - binaries_epoc.zip, 
       
   142   - binaries_epoc_sdk.zip 
       
   143   - tools_epoc.zip
       
   144 * Consult the README-WINDOWS file in the subdirectory cross-plat-dev-utils.
       
   145 
       
   146 == Patch files for the upstream package ==
       
   147 ==========================================
       
   148 
       
   149 In the directory cross-plat-dev-utils/patch-files/diffs you will find one or
       
   150 more files with names like 'patch-dddddddddddd.patch', for digits 'd'.
       
   151 
       
   152 The patch file 'patch-dddddddddddd.patch' shows the diffs between the upstream
       
   153 package ((http://developer.symbian.org/oss/MCL/sftools/dev/build) at revision
       
   154 dddddddddddd and this package as baselined on that upstream revision. Only
       
   155 diffs relevant to changing the upstream package are included.
       
   156 
       
   157 You can also apply this patch file to the upstream package at revision
       
   158 dddddddddddd to make it the same as the revision of this package from which it
       
   159 was diffed. You can use the utility cross-plat-dev-tools/patch_upstream.pl to
       
   160 do this. 
       
   161