Mobile/Symbian/Build
Contents
WARNING
Great changes might be made in future.
Overview
Symbian OS uses a series of Perl scripts and proprietary tools for building application projects. While this has some advantages when building different targets and setting meta data such as application ID, it however can not fit into Mozilla technology philosophy. Because of the ease portability of Mozilla platform building tools, mainly GNU make and autoconf, we could use these tools to build our Mozilla products with Symbian OS SDK in Windows operating system. The only effort we should take is patching the configure.in scripts and related Makefile.in and rules.mk project files.
Building
Prerequisites
- Windows XP or compatible
- S60 SDK 3rd Edition FP1
- Prerequisites for S60 SDK: Active Perl EXACTLY V5.6.1.638, no earlier no later and JRE v1.5 (JRE is not required)
- Open C Plugin for S60 SDK
- Mozilla-build v1.3
- Visual C++ 2008 Express Edition
- Windows Vista SDK
- It isn't necessary to install "Sample Code" and "Documentation" to save space and time.
Procedures
- Install all prerequisites, I recommend installing everything on Drive C, default path.
- Add paths to environment variable $PATH, some of them are added by tools installation:
- c:\mingw\bin (MUST be the first, or at least earlier than any Symbian build tool chain related path)
- c:\program files\csl arm toolchain\bin (this should be added by GCCE tools installation)
- c:\symbian\9.2\s60_3rd_fp1\epoc32\tools (MUST place this earlier than "c:\program files\common\symbian\tools" which is added by SDK installation)
- c:\mozilla-build\svn-win32-1.4.2\bin
- c:\mozilla-build\moztools\bin
- Add environment variables:
SYMBIAN_SDK_DIR = /c/symbian/9.2/S60_3rd_FP1/ ACTIVE_PERL = /c/perl/bin/perl.exe CC_INSTALL_PATH = /c/program\ files/CSL\ ARM\ Toolchain/
- Fix a header file bug: in $EPOCROOT/Epoc32/include/e32def.h, change:
static const char* const KSuppressPlatSecDiagnostic = KSuppressPlatSecDiagnosticMagicValue;
into
#if defined(__cplusplus) static const char* const KSuppressPlatSecDiagnostic = KSuppressPlatSecDiagnosticMagicValue; #endif
- Deal with header files
c: cd \symbian\9.2\s60_3rd_fp1\epoc32\include move prtypes.h prtypes.h.orig move prcpucfg.h prcpucfg.h.orig cd variant copy Symbian_OS_v9.2.hrh Symbian_OS.hrh
- Start build environment by invoking the appropriate c:\mozilla-build\start-msvc*.bat file
e.g. if you have VC++ 9.0 then run c:\mozilla-build\start-msvc9.bat
- Checkout source
hg clone http://hg.mozilla.org/mozilla-central
- Assuming your source is checked out at c:\mozilla-central then:
For device(GCCE) build:
cd /c/ mkdir gobj cd gobj ../mozilla-central/nsprpub/configure --target=arm-none-symbianelf --enable-symbian-target=GCCE --disable-debug make cd pr/tests make
For emulator(WINSCW) build:
cd /c/ mkdir wobj cd wobj ../mozilla-central/nsprpub/configure --target=arm-none-symbianelf --enable-symbian-target=WINSCW make cd pr/tests make
More
The procedures above are also verified on S60 SDK 3rd Edition MR.
Completed
- NSPR has been patched already. See detail in Bug 442706.
In process
- NSS patching is in process now.