## MMP Editor Options Window

The MMP editor options window allows you to edit compiler, linker, and runtime settings. The MMP editor options window is shown in Figure 1.

Figure 1 - MMP Editor Options window

Name | Function
--- | ---
Runtime | This group allows you to define various runtime options. Capabilities - Click the Choose... button to select Capabilities. A capability is an access token that corresponds to permission to access sensitive system resources. Platform security permits access to sensitive APIs according to capabilities. Capabilities are used to specify what functionality an application is trusted to use; they are allocated to the application at build time and are policed at run time. Once the capabilities are assigned to the application, they cannot be changed. Thus an application has a set of unalterable capabilities that describe what access the application has to the APIs. There are three suggested ways to establish which capabilities an application requires. The first method is initially to allocate capabilities based on the general operations that the application performs. For example, an instant messaging application would probably require NetworkServices to access the Internet and ReadUserData to read the user’s contacts. The second method is to use the Symbian Developer Library, which lists the capabilities required by each API. Note that some APIs may be marked as “Dependent”, meaning that the need for the capability depends on the parameters being passed. For example, accessing a file in an application’s private data area requires no capabilities, but accessing a file in \sys\bin requires the AllFiles capability. The third method is to run the application in the emulator, analyzing the debug file (in the system temporary directory) for capability violations. The output will state the API that caused the violation and what capability was expected. Minimum heap size - Set the heap size that you need. Maximum heap size - Set the heap size that you need. Stack size - Set the stack size that you need. Process priority - Select the process priority from the dropdown list. Secure ID - Enter the Secure ID. The SID is used to determine which private directory a process can access. It is also used to identify the caller applications. An application's SID is defined within its .mmp file, and is used to uniquely identify the application. SID values are requested from the Symbian Signed Web site (www.symbiansigned.com). The Software Installer (SWI) is responsible for ensuring that SIDs are locally unique, i.e., that no two applications have the same SID value on a particular target device. Vendor ID - Enter the Vendor ID. This ID uniquely identifies the source of the application. If an application needs a VID, it must be certified. Noncertified applications must use a VID of 0 (KNullUid), which is the value applied by default. Enable debugging (Symbian OS 9.4+) - Activate to enable on-device debugging for Symbian OS 9.4 and later. When activated, the DEBUGGABLE_UDEBONLY flag is added to the project .MMP file. Paging Mode (Symbian OS 9.3+) - specify the paging mode to: not specified, paged, or unpaged.
Compiler Settings | User includes - Use the Add, Edit, and Remove buttons to add, edit, or remove the paths to the user header files used to compile source files. Use the Up and Down buttons to arrange the list of paths. System includes - Use the Add, Edit, and Remove buttons to add, edit, or remove the paths to the system header files used to compile source files. Use the Up and Down buttons to arrange the list of paths. Macros - Use the Add, Edit, and Remove buttons to add, edit, or remove a macro identifier. Use the Up and Down buttons to arrange the list of macro identifiers. Compiler options - Use the Add, Edit, and Remove buttons to add, edit, or remove compiler options. In the Edit Compiler Options dialog, select the tool chain (for example: ARMCC, CW, GCC, GCCE, or MSVC) and enter your custom options. Linker options - Use the Add, Edit, and Remove buttons to add, edit, or remove linker options. In the Edit Linker Options dialog, select the tool chain (for example: ARMCC, CW, GCC, GCCE, or MSVC) and enter your custom options. Per-variant include dependencies - Check this option to include dependencies for a specific variant when building a target. For example build a release variant with optimized code, a debug variant with debugging info and a profiling variant with timing hooks. Disable optimizations in debug builds - Check this option to disable optimizations when building a debug version of your application. Since optimization changes the code created by the compiler, it is best to optimize your code after you have fully tested and debugged it. If a program works in a debug build, but fails in a release build, it is likely that one of the compiler optimizations is exposing a defect in your source code. To isolate the problem, you should disable selected optimizations for each source code file, until you locate the file and the optimization that is causing the problem.
Linker | Linker definition file - Select a linker definition file or click Browse... to locate a definition file. Export unfrozen - Check this option to tell the build process that exports are not yet frozen. Don't export library - Check this option to not export a copy of the library. No strict .def file - Check this option to specify no strict linker definition file. Compress target executable - Check this option to compress the target executable. Link as internal name - Specify an internal name. Win32 base address - Specify the Win32 base address.
Kernel | ASSP ABI - Check this option to build the ASSP application binary interface. ASSP exports - Check this option to enable ASSP exports.

##### Related references

- MMP Editor
- MMP Editor Libraries window
- MMP Editor Sources window
- MMP File Window