Difference between revisions of "User:Cip"
m (Work in progress) |
(Work in progress) |
||
Line 4: | Line 4: | ||
== Setup environment (Windows) == | == Setup environment (Windows) == | ||
=== Active Perl === | === Active Perl === | ||
5.6.1 or later, tested with 5.10.1.1007 | 5.6.1 or later, tested with 5.10.1.1007 | ||
Line 10: | Line 10: | ||
http://www.activestate.com/activeperl/downloads/ | http://www.activestate.com/activeperl/downloads/ | ||
=== S60 SDK=== | ===S60 SDK=== | ||
http://forum.nokia.com | http://forum.nokia.com | ||
Line 37: | Line 37: | ||
:http://get.qt.nokia.com/qt/source/qt-symbian-opensource-4.6.2.exe | :http://get.qt.nokia.com/qt/source/qt-symbian-opensource-4.6.2.exe | ||
=== | ===Open C/C++ plug-in=== | ||
http://forum.nokia.com | |||
Used version 1.6 | |||
:http://sw.nokia.com/id/fbe59b85-a621-404b-94d7-94ca818e576a/s60_open_c_cpp_plug_in_v1_6_en.zip | |||
===SVN client=== | ===SVN client=== | ||
Line 43: | Line 48: | ||
:http://tortoisesvn.net/downloads | :http://tortoisesvn.net/downloads | ||
== Patch SDK == | |||
Do the fix described in http://wiki.forum.nokia.com/index.php/KIS001022_-_Open_C:_Initializer_element_is_not_constant_error_on_GCCE_platform to the | |||
/Symbian/9.2/S60_3rd_FP1/EPOC32/include/e32def.h file. | |||
Else libzma won´t compile. (/Symbian/9.2/S60_3rd_FP1/EPOC32/include/e32def.h:2803: error: initializer element is not constant). | |||
TODO perhaps add patch for emulator as well here | |||
==Install sources== | ==Install sources== | ||
Line 71: | Line 85: | ||
are currently not supported on symbian. (And probably support does not make to much sense anyway). | are currently not supported on symbian. (And probably support does not make to much sense anyway). | ||
===TODO=== | Create a new project in carbide.c++ | ||
* File/New/Symbian OS C++ Project | |||
* Empty Project for Symbian | |||
* Project name: zimlib | |||
** Location should point to the xz containng the zimlib code | |||
* In SDK and build configurations select for S60_3rd_FP1: | |||
** Emulator Debug (WINSCW) [S60_3rd_FP1] | |||
** Phone Debug (GCCE) [S60_3rd_FP1] | |||
** Phone Release (GCCE) [S60_3rd_FP1] | |||
* Accept the default settings in the Empty Project Section. | |||
===liblzma= | |||
Used version: | |||
:http://tukaani.org/xz/xz-4.999.9beta.tar.gz | |||
Extract to carbide workspace and rename folder to xz. | |||
(Carbide does not like the - in the folder name.) | |||
Create a new project in carbide.c++ | |||
* File/New/Symbian OS C++ Project | |||
* Empty Project for Symbian | |||
* Project name: xz | |||
** Location should point to the xz containng the bzip2 code | |||
* In SDK and build configurations select for S60_3rd_FP1: | |||
** Emulator Debug (WINSCW) [S60_3rd_FP1] | |||
** Phone Debug (GCCE) [S60_3rd_FP1] | |||
** Phone Release (GCCE) [S60_3rd_FP1] | |||
* Accept the default settings in the Empty Project Section. | |||
There is also an embedded, more lightweight, version available, I have not tried that yet but | |||
may make sense to use it. However, also the regular version is running fine on the mobile | |||
phone. | |||
===libbz2=== | |||
Used version: | |||
:http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz | |||
Extract to carbide workspace bzip2/src. | |||
In Carbide.c++ create a new project bzip2 | |||
* File/New/Symbian OS C++ Project | |||
* Empty Project for Symbian | |||
* Project name: bzip2 | |||
** Location should point to the bzip2 containng the bzip2 code | |||
* In SDK and build configurations select for S60_3rd_FP1: | |||
** Emulator Debug (WINSCW) [S60_3rd_FP1] | |||
** Phone Debug (GCCE) [S60_3rd_FP1] | |||
** Phone Release (GCCE) [S60_3rd_FP1] | |||
* Accept the default settings in the Empty Project Section. | |||
===libzim=== | |||
==Port projects== | |||
Main porting effort is that symbian does not support autoconf. | |||
===Build configuration=== | |||
Symbian uses group/<projectname>.mmp and group/bld.inf to configure the build process. | |||
These files have to be copied from TODO to the projects group directory replacing | |||
the existing files for each of the libraries. Close carbide.c++ before doing this. | |||
When build errors occur later, it's a good idea to check whether the provided group | |||
file are actually used. | |||
Additionally for some of libraries (liblzma) config.h files, for unix builds generated with autoconfs have to be added. Copy them from TODO to into the projects in the symbian directory. ====config.h settings==== | |||
The config.h files have been generate in cygwin with autoconf and have been manually changed until build has been successul. Two changes worth to mention here: | |||
* xz/symbian/config.h | |||
Bool type definition changed to int. Should be checked why necessary and whether safe. | |||
* zimlib/symbian/config.h | |||
Change TODO | |||
===_WIN32 defines === | |||
Some (TODO) of the libs use _WIN32 to define some configurations. While this is not a problem for builds for the device, it causes problems in builds for the emulator, as it defines _WIN32 as well. | |||
Therefore the source files have to be changed so that in case __SYMBIAN32__ is defined _WIN32 is ignored. The following changes have to be done: | |||
* bzip2 | |||
** bzip2/src/bzlib.h | |||
Add | |||
// Symbian compiler defines _WIN32 in builds for emulator. | |||
#ifdef __SYMBIAN32__ | |||
#undef _WIN32 | |||
#endif | |||
before line | |||
#ifdef _WIN32 | |||
** bzip2/src/bzip2.c | |||
add after | |||
#define BZ_LCCWIN32 0 | |||
#if defined(_WIN32) && !defined(__CYGWIN__)&& !defined(__SYMBIAN32__) | |||
TODO removeunzcrash.c nessary? | |||
TODO | |||
* liblzma | |||
** xzsrcliblzmaapilzma.h | |||
Add | |||
// Symbian compiler defines _WIN32 in builds for emulator. | |||
#ifdef __SYMBIAN32__ | |||
#undef _WIN32 | |||
#endif | |||
before | |||
#ifndef LZMA_API_IMPORT | |||
*zimlib | |||
** zimlibincludezimzim.h | |||
Add | |||
// Symbian compiler defines _WIN32 in builds for emulator. | |||
#ifdef __SYMBIAN32__ | |||
#undef _WIN32 | |||
#endif | |||
before | |||
#ifdef _WIN32 | |||
TODO problem in uuid.getpid | |||
=== | |||
==Install on phone== | ==Install on phone== | ||
Revision as of 19:44, 14 March 2010
Work in progress
HOWTO build zimlib for Symbian
Setup environment (Windows)
Active Perl
5.6.1 or later, tested with 5.10.1.1007
http://www.activestate.com/activeperl/downloads/
S60 SDK
Used: S60 3rd Edition SDK, FP1
- newer should work, older versions won´t work for TODO application, while zimlb may work .
Also install arm tool chain, installer will ask you to do so
Carbide.c++
Used version 2.3
QT
QT is not required for the zimib, but used in the TODO application
http://qt.nokia.com/downloads/symbian-cpp
Used QT libraries 4.6.2 for Symbian (LGPL)
Open C/C++ plug-in
Used version 1.6
SVN client
Used tortoise svn
Patch SDK
Do the fix described in http://wiki.forum.nokia.com/index.php/KIS001022_-_Open_C:_Initializer_element_is_not_constant_error_on_GCCE_platform to the /Symbian/9.2/S60_3rd_FP1/EPOC32/include/e32def.h file.
Else libzma won´t compile. (/Symbian/9.2/S60_3rd_FP1/EPOC32/include/e32def.h:2803: error: initializer element is not constant).
TODO perhaps add patch for emulator as well here
Install sources
First open Nokia/Carbide.c++ to create workpace
E.g. c:SymbianCarbideworkspace
Following description assumes that source is installed to subfolders in this workspace.
zimlib
See also RELEASES
Use svn to get zimlib source.
This howto assumes that you have zimlib directly in the carbide workspace. (And not for example zim/zimlib).
If you are using tortoisesve, right click on workspace folder in windows explorer, select 'SVN Checkout...' and put the following into URL of repository:
Checkout directory should be automatically set to: c:SymbianCarbideworkspacezimlib
Note that zimreader and zimwriter are currently not supported on symbian. (And probably support does not make to much sense anyway).
Create a new project in carbide.c++
- File/New/Symbian OS C++ Project
- Empty Project for Symbian
- Project name: zimlib
- Location should point to the xz containng the zimlib code
- In SDK and build configurations select for S60_3rd_FP1:
- Emulator Debug (WINSCW) [S60_3rd_FP1]
- Phone Debug (GCCE) [S60_3rd_FP1]
- Phone Release (GCCE) [S60_3rd_FP1]
- Accept the default settings in the Empty Project Section.
==liblzma
Used version:
Extract to carbide workspace and rename folder to xz. (Carbide does not like the - in the folder name.) Create a new project in carbide.c++
- File/New/Symbian OS C++ Project
- Empty Project for Symbian
- Project name: xz
- Location should point to the xz containng the bzip2 code
- In SDK and build configurations select for S60_3rd_FP1:
- Emulator Debug (WINSCW) [S60_3rd_FP1]
- Phone Debug (GCCE) [S60_3rd_FP1]
- Phone Release (GCCE) [S60_3rd_FP1]
- Accept the default settings in the Empty Project Section.
There is also an embedded, more lightweight, version available, I have not tried that yet but may make sense to use it. However, also the regular version is running fine on the mobile phone.
libbz2
Used version:
Extract to carbide workspace bzip2/src.
In Carbide.c++ create a new project bzip2
- File/New/Symbian OS C++ Project
- Empty Project for Symbian
- Project name: bzip2
- Location should point to the bzip2 containng the bzip2 code
- In SDK and build configurations select for S60_3rd_FP1:
- Emulator Debug (WINSCW) [S60_3rd_FP1]
- Phone Debug (GCCE) [S60_3rd_FP1]
- Phone Release (GCCE) [S60_3rd_FP1]
- Accept the default settings in the Empty Project Section.
libzim
Port projects
Main porting effort is that symbian does not support autoconf.
Build configuration
Symbian uses group/<projectname>.mmp and group/bld.inf to configure the build process. These files have to be copied from TODO to the projects group directory replacing the existing files for each of the libraries. Close carbide.c++ before doing this. When build errors occur later, it's a good idea to check whether the provided group file are actually used.
Additionally for some of libraries (liblzma) config.h files, for unix builds generated with autoconfs have to be added. Copy them from TODO to into the projects in the symbian directory. ====config.h settings==== The config.h files have been generate in cygwin with autoconf and have been manually changed until build has been successul. Two changes worth to mention here:
- xz/symbian/config.h
Bool type definition changed to int. Should be checked why necessary and whether safe.
- zimlib/symbian/config.h
Change TODO
_WIN32 defines
Some (TODO) of the libs use _WIN32 to define some configurations. While this is not a problem for builds for the device, it causes problems in builds for the emulator, as it defines _WIN32 as well. Therefore the source files have to be changed so that in case __SYMBIAN32__ is defined _WIN32 is ignored. The following changes have to be done:
- bzip2
- bzip2/src/bzlib.h
Add
// Symbian compiler defines _WIN32 in builds for emulator.
- ifdef __SYMBIAN32__
#undef _WIN32
- endif
before line
- ifdef _WIN32
- bzip2/src/bzip2.c
add after
- define BZ_LCCWIN32 0
- if defined(_WIN32) && !defined(__CYGWIN__)&& !defined(__SYMBIAN32__)
TODO removeunzcrash.c nessary? TODO
- liblzma
- xzsrcliblzmaapilzma.h
Add
// Symbian compiler defines _WIN32 in builds for emulator.
- ifdef __SYMBIAN32__
#undef _WIN32
- endif
before
- ifndef LZMA_API_IMPORT
- zimlib
- zimlibincludezimzim.h
Add
// Symbian compiler defines _WIN32 in builds for emulator.
- ifdef __SYMBIAN32__
#undef _WIN32
- endif
before
- ifdef _WIN32
TODO problem in uuid.getpid
=
Install on phone
Tested on N82. Should work on all S60 3rd edition FP1 (e.g. N95), and later. 5th edition (5800, N97) may work as well, but not tested.
Install QT
Install qt.sis from qt installation directory or TODO
Note: Project also build a sis with integrated qt installer (TODO filename), using Nokia smart intaller, but installation did not work for me due to signing issue.