wiki:BuildingQtOnSymbian

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

use --minimal only if you have to (test what you ship)

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 best built with Sbsv2 (aka Raptor). 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.6\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 want to freeze exports (i.e the .def get processed), pass CONFIG+=def_files as an argument to build-webkit as well
      • If you want faster rebuild times for your personal sandbox, pass --no-svg.
      • If you want even faster faster build times for a _very_ feature-stipped QtWebkit, use --minimal
      • To selectively turn on or of features, see features.pri
    • cd Source
    • Build for hardware: sbs -c armv6_urel -j8
    • [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 it bit rots often. Also needed is 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.
    • cd Source
    • sbs -c armv6_udeb -j8
    • [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, use sbs -c arm.v6.urel.rvct4_0 to compile any project with RVCT4.0. Symbian MCL supports RVCT4.0 out of the box.

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