How to build the Syborg/QEMU baseport for Symbian^2.0.0 on Ubuntu Linux
From Symbian Developer Community
These instructions have been verified on Ubuntu 9.04
N.B Some prerequisites of these instructions are not yet widely available:-
You will need the proprietary ARM RVCT 2.2 compiler to build the Symbian kernel. A free (GCC) compiler that can build the kernel is in the pipeline but not yet available
You will need Nokia's Linux installer for the sbsv2 build system. This is in the pipeline for contribution to Symbian (so I've got a binary preview) but has not been contributed yet.
For everything that follows, you need to stay in the same shell.
Install sbsv2
I am assuming you have got the sbsv2 linux installer, ./sbs-2.9.3-source.run, in your current directory.
Install basic buiild tools:
$ sudo apt-get install build-essential
Install bison:
$ sudo apt-get install bison
Install the ncurses development package:
$ sudo apt-get install ncurses-dev
Run the installer and answer the prompts, accepting defaults:
$./sbs-2.9.3-source.run
All being well, you will now find sbsv2 installed in ~/raptor, which is a symlink to ~/raptor-293
Install RVCT 2.2
I am assuming you have a RVCT 2.2 installed in /opt/symbian/ARM
Install Mercurial
$ sudo apt-get install mercurial
On Ubuntu 9.04 or later you may also like to install the Mercurial TortoiseHG gui and nautilus integration:
$ sudo apt-get install mercurial-common
$ sudo apt-get install mercurial-tortoisehg
$ sudo apt-get install nautilus-mercurial-tortoisehg
Get PDK 2.0.0
Go to http://developer.symbian.org
If not already registered, then register.
Login
Navigate: Tools & Kits -> Download the Kits -> Symbian^2 Platform Release v2.0.0
Download:
- binaries_armv5.zip
- binaries_epoc.zip
- binaries_epoc_additional.zip
- tools_epoc.zip
Create a directory for the build. I assume ~/syborg:
$ mkdir ~/syborg
Copy all the downloaded zips into ~/syborg.
Extract all the downloaded zips:
$ cd ~/syborg
$ for file in *.zip; do unzip $file; done
Get the kernel sources from Mercurial
$ mkdir sf
$ mkdir sf/os
$ cd sf/os
$ hg clone -U https://developer.symbian.org/oss/MCL/sf/os/kernelhwsrv
$ cd kernelhwsrv
$ hg update -r PDK_2.0.0
(Login when prompted)
Get the QEMU sources from Mercurial
$ cd ~/syborg/sf
$ mkdir adaptation
$ cd adaptation
$ hg clone https://developer.symbian.org/oss/FCL/sf/adaptation/qemu
Fix case-sensitivity offender epoc32/include/ProductVariant.hrh
$ cd ~/syborg
$ mv epoc32/include/ProductVariant.hrh epoc32/include/productvariant.hrh
Fix case-sensitivity offender in sysborg's variant.mmh
$ sed -e 's|/sf/adaptation/qemu/baseport/syborg/specific|/sf/adaptation/QEMU/baseport/syborg/specific|g' -i sf/adaptation/qemu/baseport/syborg/variant.mmh
Setup environment for syborg build
$>export EPOCROOT=~/syborg/
$>export SBS_HOME=~/raptor
$>export RVCT22BIN=/opt/symbian/ARM/RVCT/Programs/2.2/308/linux-pentium
$>export RVCT22INC=/opt/symbian/ARM/RVCT/Data/2.2/308/include
$>export RVCT22LIB=/opt/symbian/ARM/RVCT/Data/2.2/308/lib
$>export RVCT22_ASMOPT=--licretry
$>export RVCT22_CCOPT=--licretry
$>export RVCT22_LINKOPT=--licretry
You need access to a license server for the RVCT compiler. Set ARMLMD_LICENSE_FILE to be a colon-punctuated list of those available:
$ export ARMLMD_LICENSE_FILE='8224@LON-ENGBUILD87.ad-sfpd.intra:8224@LON-ENGBUILD89.ad-sfpd.intra'
Somewhere down the tool stack, armasm gets invoked without reference to $RVCT22BIN, so we need it on the PATH
$ export PATH=$PATH:$RVCT22BIN
We need a Linux build of elf2e32 in our epoc32/tools directory. raptor supplies one in $SBS_HOME/test/epocroot/epoc32/tools/elf2e32. Symlink it from there to epoc32/tools.
$ if [ ! -e ${EPOCROOT}epoc32/tools/elf2e32 ]; then ln -s $SBS_HOME/test/epocroot/epoc32/tools/elf2e32 ${EPOCROOT}epoc32/tools/elf2e32; fi
Build the syborg baseport
$ cd ${EPOCROOT}sf/adaptation/qemu/baseport/syborg
$ $SBS_HOME/bin/sbs -c armv5
Sign in to comment…

