The straightforwardness(*) of the S60 API unfortunately requires changes in source code, MMP and PKG file based on an individual basis for each of the supported phone devices. Since my application runs on different phone which require different build configurations (e.g. use RRSensorAPI.lib or not, use sensrvclient.lib or not, link S60 3rd FP1 or FP2 libraries) I'm interested in finding out how an automated build system with configuration management is ought to be created.
Unfortunately, the S60 SDK help mentions the use of '#ifdef' statements in the MMP file, but doesn neither explain other statements nor the scope of those definitions. The only suitable way I found was a definition of an environment variable which is checked in the MMP file. Unfortunately, this way seems not to be usable for the PKG file! There is a way to use IF(...) ... ENDIF, but I have no access to the environment variables there.
The old-fashioned way would be a Makefile which dynamically generates the MMP and PKG files and starts the compile process for each of the configurations. This wouldn't make the process of modifying the MMP file for both interactive and automated build much easier.
How do you ease your pain to maintain a dozen of different configurations?
(*) E.g. E66 is FP1-based but requires the FP2 accelerator API, N96 is FP2-based but requires the FP1 autofocus API. How do you solve that?