summaryrefslogtreecommitdiffstats
path: root/README.s60-mkspec
blob: cee4b2f808e16352a24b0abfb07d489e1053f447 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
How to build Qt for Symbian using the Linux makespec.

Prerequisites:

  - Working RVCT 2.2 native Linux compiler. The new publicly
    available RVCT 4.0 compiler may work, but it hasn't been tested
    yet.

  - A working GnuPoc environment. See this page for details:
    http://www.martin.st/symbian/. Make sure you do the part about
    Wine setup as well.

  - Anderson Lizardo's patches for GnuPoc. Look for the
    qt_s60_gnupoc_v9.patch on this page:
    http://lizardo.wordpress.com/2009/09/24/installing-qt-for-s60-daily-snapshots-on-linux/
    and carry out the instructions under point 8: Installing Open C.

Compiling:

 1. First a few environment variables need to be set:

        export RVCT22INC=<s60-root>/epoc32/include
        export RVCT22INC=$RVCT22INC,<s60-root>/epoc32/include/rvct2_2
        export RVCT22INC=$RVCT22INC,<s60-root>/epoc32/include/variant
        export RVCT22INC=$RVCT22INC,<s60-root>/epoc32/include/stdapis
        export RVCT22INC=$RVCT22INC,<s60-root>/epoc32/include/stdapis/stlport
        export RVCT22LIB=<s60-root>/epoc32/release/armv5/lib
        export PATH=$PATH:<s60-root>/epoc32/tools
        export PATH=$PATH:<qt-root>/bin

    Replace the s60-root with the installation directory of your SDK,
    and the qt-root with the root of your Qt repository.
    These are good candidates for putting in a script somewhere.

 2. Switch out a few variables in profiles. Open
    mkspecs/symbian/linux-armcc/qmake.conf, search for
    "FIXME" and switch out the FIXME part with your SDK
    installation directory. You might have to switch the case of the
    Epoc32 directory as well.
    There may also be other FIXMEs.

 3. Run configure. It needs a bit more switches than usual, so here's
    the full line:

        ./configure -developer-build -platform linux-g++ -xplatform \
            symbian/linux-armcc -little-endian -host-little-endian \
            -arch symbian

 4. Compile the host tools. This unfortunately does not happen
    automatically.

        cd src/tools
        for i in bootstrap moc rcc uic; do make -C $i; done

 5. Compile QtCore.dll:

        cd ../corelib
        qmake -platform symbian/linux-armcc
        make

    and then wait for a while.

 6. Compile some helloworld application (I leave the details to you
    ;-)

        qmake -platform symbian/linux-armcc
        make

 7. Package and run on the phone. This is unfortunately a bit of a
    manual step at the moment. Your best bet is to look at a Windows
    build of the same application, and manually grab the .rsc files
    that it refers to and put them in the application directory on
    Linux. Then you can take the pkg_template.pkg file provided in
    the repository and tweak it to include the files you want. Note
    that due to limitations on how the makesis tool interprets file
    paths, all the files included need to be in the current directory
    (or a link from there).

    Assuming that all the files are in place, do this:

        cp <qt-root>/src/s60installs/selfsigned.* .
        winewrapper makesis.exe MyApp.pkg MyApp_unsigned.sis
        winewrapper signsis.exe MyApp_unsigned.sis MyApp.sis \
            selfsigned.cer selfsigned.key

 8. Enjoy QObjects and "hello world" on the phone!