wiki:BuildingQtOnSymbian

Version 21 (modified by siddharth.mathur@nokia.com, 13 years ago) (diff)

added compiler support libraries step

Note that these instructions are preliminary and work in progress...

These instructions assume that you have a Symbian development set up and that you have the source code checked out.

Requirements

  • QtWebKit is built with SBSv2 (aka Raptor) v2.15.1 or higher. This setup assumes the availability of it.
  • Please install the Bison, Flex, ActiveState Perl etc. tools from GnuWin32. See the instructions for building on Windows where to get these.
  • Make sure that the GnuWin32 tools are installed in a path without spaces, i.e. not Program Files\GnuWin32 but for example c:\GnuWin32.
  • You need to have \GnuWin32\bin and \Perl64\bin (if that's where your Perl is installed) in your %PATH% before the S60 SDK tools path.
  • In addition you need to have a native Windows compiler in your PATH, i.e. MSVC or MingW.
  • You can download Raptor from here: http://developer.symbian.org/wiki/index.php/Symbian_Build_System_v2

Building Qt

If you haven't done so already, try these instructions for a release build:

  • Clone Qt: git clone git://gitorious.org/qt/qt.git qt-4.7
  • Set up the 4.7 Branch:
    • cd qt-4.7
    • git checkout -b 4.7 origin/4.7
    • git branch -D master
  • Configure: configure -xplatform symbian-sbsv2
  • Build for arm with 8 cores: sbs -c armv6_urel -j8
  • Get a cup of tea/coffee.
  • [OPTIONAL, only needed for self-signed SIS packages] Patch capabilities and generate the sis package:
    cd src/s60installs
    perl ..\..\bin\patch_capabilities.pl Qt_template.pkg release-armv6
    make sis
  • Put the qt-4.7\bin directory in your %PATH%.

Building WebKit for release

  • Build the generated files and set up the build system:
    • cd where-your-webkit-sources-are
    • perl Tools\Scripts\build-webkit --qt --symbian
      • If you are a build master, manage .def export files, and/or want to freeze exports (i.e the .def files get processed), pass CONFIG+=def_files as an argument too
      • If you want faster rebuild times for your personal sandbox, pass --no-svg.
      • If you want even faster build times for a _very_ feature-stripped QtWebkit, use --minimal
      • To selectively turn on or off features, see features.pri
    • Build for hardware: sbs -c armv6_urel -j8 -b Source\bld.inf -b Tools\bld.inf
    • [OPTIONAL, only needed for self-signed SIS packages] Patch capabilities: perl %QTDIR%\bin\patch_capabilities.pl QtWebKit_template.pkg release-armv6
    • Create the sis file: make sis
    • Install it on the phone: "C:\Program Files\Nokia\Nokia PC Suite 7\ApplicationInstaller.exe" %CD%\qtwebkit.sis
      You can also Drag'n'drop the resulting .sis file onto Nokia PC Suite to install it.

Building WebKit for debug

  • To reduce size and number of object files, you need either --minimal or --no-svg for build-webkit. With --minimal, the debug-webkit-patch-sbsv2.py script below may not required as the latter bit rots often. You may likely need a 64-bit Windows OS and a 64-bit RVCT 4.1 linker (armlink.exe) binary. See next section for RVCT4.x notes
  • Almost the same as above:
    • You need to have Qt built for debug as well
    • cd where-your-webkit-sources-are
    • perl Tools\Scripts\build-webkit --qt --symbian --minimal --debug
    • Run the script debug-webkit-patch-sbsv2.py from git://gitorious.org/qtwebkit/tools.git. It was tested to work at least with Python 2.6
      This is necessary because the quantity of debug information in WebKit makes armlink fail. This script works around the problem.
    • sbs -c armv6_udeb.slimdebug -j8 -b Source\bld.inf -b Tools\bld.inf
    • [OPTIONAL, only needed for self-signed SIS packages]perl %QTDIR%\bin\patch_capabilities.pl QtWebKit_template.pkg debug-armv6
    • make sis

Using RVCT4.0 and 64-bit armlink.exe

  • RVCT4.0 is know to work nicely with Webkit.org trunk, particularly with UDEB mode where 2.2 often segfaults.
  • First set up your RVCT4.0 installation by obtaining the binaries and setting up environment variables per ARM's instructions (Nokians may use SymSEE to activate it)
  • If using with Symbian3 SDKs, you may have to compile the compiler support libraries first (or you will see linker errors) : sbs -b sf\os\kernelhwsrv\kernel\eka\compsupp\bld.inf -b sf\os\kernelhwsrv\kernel\eka\euser\bld.inf -c arm.v5.urel.rvct4_0 -c arm.v5.udeb.rvct4_0
  • To explicitly as SBSv2/Raptor to use RVCT4.0 with Symbian3 SDKS, use sbs -c arm.v5.urel.rvct4_0. Symbian MCL supports RVCT4.0 out of the box, therefore

In case your link stages run into OOM even with the .py script or with --minimal, you need a 64-bit Windows OS and a 64-bit linker (armlink.exe)

  • Back-up your armlink.exe from the 4.0 install
  • Obtain the RVCT4.1 toolchain from your organizations compiler tools team, or from ARM.com directly.
  • Extract the 64-bit armlink.exe and drop it over your 4.0 installation's armlink.exe
  • cd Source and them compile as ARMV5 or ARMV6 sbs -c arm.v6.udeb.rvct4_0