NLMakesis: enhanced Makesis for Symbian OS
NLMakesis is a small utilities that improves the way Symbian OS Makesis works by adding two new capabilities for packaging your application with the possibility to:
have SDK independent pkg file
process your pkg file using the CPP preprocessor (thus ading macros and #ifdef, etc.... support to the original pkg syntax).
SDK Independent PKG file
A annoying features of the PKG file syntax is that, unless you mount drives to handle your development projects, the content of a PKG file is dependent of:
the SDK you have used to compile your project if written like this:
"\Symbian\8.1a\S60_2nd_FP3\epoc32\data\z\system\apps\HelloWorld\HelloWorld.rsc" -"!:\system\apps\HelloWorld\HelloWorld.rsc"
"\Symbian\8.1a\S60_2nd_FP3\epoc32\data\z\system\apps\HelloWorld\HelloWorld_caption.rsc" -"!:\system\apps\HelloWorld\HelloWorld_caption.rsc"
"\Symbian\8.1a\S60_2nd_FP3\epoc32\data\z\system\apps\HelloWorld\HelloWorld.aif" -"!:\system\apps\HelloWorld\HelloWorld.aif"
or the relative location of your project if written like that:
"..\..\..\epoc32\data\z\system\apps\HelloWorld\HelloWorld.rsc" -"!:\system\apps\HelloWorld\HelloWorld.rsc"
"..\..\..\epoc32\data\z\system\apps\HelloWorld\HelloWorld_caption.rsc" -"!:\system\apps\HelloWorld\HelloWorld_caption.rsc"
"..\..\..\epoc32\data\z\system\apps\HelloWorld\HelloWorld.aif" -"!:\system\apps\HelloWorld\HelloWorld.aif"
NLMakesis solves this by letting the makesis command know about your current SDK thus allowing you specify the files to include in your SIS file like this:
"\epoc32\data\z\system\apps\HelloWorld\HelloWorld.rsc" -"!:\system\apps\HelloWorld\HelloWorld.rsc"
"\epoc32\data\z\system\apps\HelloWorld\HelloWorld_caption.rsc" -"!:\system\apps\HelloWorld\HelloWorld_caption.rsc"
"\epoc32\data\z\system\apps\HelloWorld\HelloWorld.aif" -"!:\system\apps\HelloWorld\HelloWorld.aif"
No more dependencies with the SDK or project directories location!
Preprocessor support
If you rename your PKG file with a .pkgp extension, then NLMakesis will send it to the CPP preprocessor along with any -D or -I parameters it found on the command line.
The result of the preprocessing will be stored with a .pkg extension and processed as a standard package file.
Syntax
With cpp preprocessing:
nlmakesis [-h] [-v] [-s] [-ppassword] [-Dmacro[=val]][-Iincludepath] pkgpfile [sisfile]
Normal mode:
nlmakesis [-h] [-v] [-s] [-p password] pkgfile [sisfile]
Download and Installation
Current version: v1.4
![]()
nlmakesis.zip
Download the zip file above, and unzip its content in the Symbian common tools directories which should be located in :
C:\Program Files\<Common Files>\Symbian\tools
Note that the Common Files directory name is dependant of your locale (will be "Fichiers Communs" if you have a french version of Windows, etc...).
Compatibility
NLMakesis has been tested successfully with most Symbian OS v7 and v8 SDKs.
MLMakesis requires an update in the makesis command to work with S60 v3 or UIQ 3 SDKs yet. You can download the updated makesis from UIQ Developer website or get a mirrored version here [1]. Note that the makesis.exe file shall be written in your <YourSDK>/epoc32/tools directory. Not the C:\Program Files\Common Files\Symbian\tools one.
[1] Thanks to Marcus Groeber for pointing out the Symbian v9 makesis issue.
| Attachment | Size |
|---|---|
| makesis.zip | 266.15 KB |






Suggestion for another feature
One feature I found very useful in a makesis "wrapper" tool that I wrote for my own projects is the ability to pass .pkg files through the C pre-processor, allowing you to use directives such as #include, #define, #ifdef etc. in a package file.
This is especially helpful when using similar .pkg files for different platforms. It also allows you to use a single set of #include files, e.g. for version numbers, UIDs, or product names, within both the source code and the .pkg file.
Essentially I wrote a simple Ruby script that takes the usual makesis switches, plus additionally "-I dir" and "-Dmacro[=val]", and sends the .pkg file through cpp with a commandline such as
cpp -lang-asm -P -undef [-I and -D switches]
before calling the original makesis on the output. Using lang-asm seems to match the .pkg syntax best for comment recognition etc.
As a convention, I use the extension .pkgp for .pkg files that contain pre-processor directives.
I think integrating this function into NLMakesis could be worth looking at.
Suggestion for another feature
Symbian 9 SDKs
Symbian 9 SDKs
NLMakesis: update v1.3
v1.1: added support for Symbian v9 SDKs
v1.2: added cpp preprocessor support
v1.3: added support for SDK with an alias
NLMakesis: update v1.3