Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.
GCCE compiler options
S60 3rd Edition platform SDK comes with GCCE toolchain that enables building for target.
RVCT (RealView Compilation Tools) is also available for S60 as a commercial product by ARM®. RVCT is able to generate more compact (up to -30%) and faster (up to 15%) code than GCCE. Unfortunately, evaluation version is only available by ordering a CD.
GCCE compiler options
It is possible to improve performance or reduce size of binaries with selecting the right compiler options. Optimization can be configured by command line switches. Here are the most important switches:
- O0 : No optimization
- O1 : Optimizing compilation takes somewhat more time, and a lot more memory for a large function.
- O2 : Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. The compiler does not perform loop unrolling or function inlining when you specify -O2. As compared to -O1, this option increases both compilation time and the performance of the generated code.
- O3 : Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -funswitch-loops and -fgcse-after-reload options.
- -Os : Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.
- The GCCE make file's location is: Epoc32\tools\compilation_config\gcce.mk (see REL_OPTIMISATION)
- In S60 3rd Edition FP1 O2 switch is used by default. It is not possible to improve performance significantly (only with compiler switches)
- In S60 3rd Edition Maintenance Release the default compiler option is O0 (i.e. optimization is off). It is not recommended to use O2 in this SDK version, because of some possible build problems. O1 should work fine
- More info about the switches are here.