| 1 | = S60WebKit: Getting and Compiling the Source = |
| 2 | |
| 3 | === Getting the Source === |
| 4 | |
| 5 | * Checkout a copy of S60WebKit from the WebKit Subversion repository: |
| 6 | |
| 7 | {{{ |
| 8 | cd <SDK installation path> |
| 9 | svn checkout svn://anonsvn.opensource.apple.com/svn/webkit/S60/trunk WebKit |
| 10 | }}} |
| 11 | |
| 12 | A couple of things to note: |
| 13 | |
| 14 | * By default, the SDK installation path is {{{C:\Symbian\9.1\S60_3rd}}} |
| 15 | |
| 16 | * You don't need to checkout to a directory named {{{WebKit}}}, any directory name will suffice. This allows you to checkout multiple working copies to the same location. |
| 17 | |
| 18 | === Building the Source === |
| 19 | |
| 20 | * Compile S60WebKit by changing directory to the top of the source tree and running the {{{build}}} script, for example: |
| 21 | |
| 22 | {{{ |
| 23 | cd <SDK installation path>\WebKit |
| 24 | build |
| 25 | }}} |
| 26 | |
| 27 | Please note that on rare occasions, when compiling for the very first time you may encounter the following error: |
| 28 | {{{ |
| 29 | No rule to make target \EPOC32\INCLUDE\WebKitIcons_sdk.mbg |
| 30 | }}} |
| 31 | This error only occurs once and can safely be ignored: running a target build via {{{build -t}}} (which has an execution time of a couple of seconds) will return no errors. See [http://bugs.webkit.org/show_bug.cgi?id=9289] for further information. |
| 32 | |
| 33 | Once you've clean compiled, the next step is to check out [wiki:S60Reindeer Reindeer] in the emulator. |
| 34 | |
| 35 | === So what does the build script do? === |
| 36 | |
| 37 | Here's a quick overview of what build.bat does: |
| 38 | |
| 39 | * Unless already done so, it will create the subst drive to <SDK path> for you |
| 40 | * Setups up your environment so that the Carbide and GCCE compiler suites are used by the SDK build system |
| 41 | * Extracts each of the zipfiles under <working copy>\S60Internals\*. These are mostly extracted to \epoc32 |
| 42 | * Synchronises the layout test (rsync type operation) in your working copy to \epoc32\winscw\c\LayoutTests |
| 43 | * Does a number of 'abld' commands, depending on what options you passed to the script |
| 44 | * The output from the 'abld' command is redirected to both STDOUT and <working copy>\build.log. This is |
| 45 | scanned for errors and a summary is output to the screen |
| 46 | |
| 47 | === Build options === |
| 48 | |
| 49 | The build script supports a number of options. Here's the full usage statement: |
| 50 | |
| 51 | {{{ |
| 52 | build.bat [OPTS] [COMPONENT] |
| 53 | -n Do not include clean in compile |
| 54 | -f run freeze phase and exit |
| 55 | -g GCCE compiler for hardware build |
| 56 | -w Code Warrior compiler for emulator build |
| 57 | -t Target build |
| 58 | -d Turn on debugging, forces udeb flavour |
| 59 | -e Export generated environment and exit |
| 60 | -r Remove S60Internal dependencies and exit |
| 61 | -s X Map drive to this letter. Defaults to x |
| 62 | -h View this message |
| 63 | }}} |
| 64 | |
| 65 | Requests welcome! |
| 66 | |
| 67 | === Build Examples === |
| 68 | |
| 69 | To compile all components for winscw: |
| 70 | {{{ |
| 71 | build -w |
| 72 | }}} |
| 73 | To compile all components for GCCE: |
| 74 | {{{ |
| 75 | build -g |
| 76 | }}} |
| 77 | To do a 'target', or incremental, build: |
| 78 | {{{ |
| 79 | build -t |
| 80 | }}} |
| 81 | To do build webcore, but don't execute the clean phase: |
| 82 | {{{ |
| 83 | build -n webcore |
| 84 | }}} |
| 85 | To fully rebuild the memory manager: |
| 86 | {{{ |
| 87 | build memman |
| 88 | }}} |
| 89 | Options can be bundled. For example, a GCCE target compile with debugging turned on (this forces udeb) for webkit: |
| 90 | {{{ |
| 91 | build -gtd webkit |
| 92 | }}} |
| 93 | |
| 94 | |
| 95 | |