|
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 |