You Are Here:

Community: Blogs

Harry Li's Forum Nokia Blog

Build Symbian C++ project with GNU make/autoconf

kcomex | 13 July, 2008 13:09

Everyone who develops native Symbian C++ application knows that we use BLD.INF and *.MMP files to define a project. This is used since the very ancient Nokia 9200 SDK. The reason that Symbian uses this approach is quite similar with the reason Symbian made other unique features : because mobile devices have unique characteristics other than desktop computers. There is no UID for each appilcation on a desktop OS, also there is no compile time check on global writable static data use.

However, when porting open source project like Mozilla to Symbian OS, it becomes very impractical to stick with the original BLD.INF plus *.MMP solution. There are a number of reasons:

  • Portability :
    Mozilla project is something we could treat it as a platform, framework or midware. So portability is something the community considers as the first requirement. The community maintains one code repository to generate binary executables for dozens of OS/CPU arch. combinations. So we can't say that you build everything except Symbian platform with GNU make while building Symbian targets with another tool chain. 
  • Community compatibility :
    We know the success of open source projects benefit from hundreds and thousands of developers around the world. The philosophy behind this doesn't mean we get software products without paying since they love contributing, it means they may be different experts on different sub-system. So we can't imagine that in future the FireFox for S60 has a security problem, a security expert has to learn how to build FireFox for S60 with BLD.INF and *.MMP for some time before he can get hands on the point of problem.
  • Large scale :
    Because the code base and the number of components are quite large, it would be very difficult to write a BLD.INF to build the whole platform which you might noticed in my earlier blog. That's also a nature of the scale limitation of Symbian's own build system compared with GNU make. As a derived reason we have to use Mozilla's build system, the community have to run a server to build the whole source tree every several hours because with such a large code base almost every hour there are codes checking into the repository, then the old Symbian's build method will have to be modified heavily to suite this automatically build monitoring system.
The reasons we have to move from Symbian's BLD.INF/*.MMP build method to GNU make are stated quite clear above. Yet it's not a good idea to talk about how to port the system and dive into Makefile lines in a blog article because the blog post is really something more literature rather than technical codes Wink. So I would like to give you two places to find the implementation and method behind all the immigration. First one is the [BUG 442706] where you could find detail patch about moving build system to GNU make/autoconf. The second one is Mozilla-Symbian project hosted on google-code which is a place for codes before they get checked into Mozilla main repository. With these two resources you could find solution of moving a Symbian project to GNU make/autoconf tool chain. Laughing

 

 
 

Rate This

 
 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fblogE2fgoranE2dsandersE2dforumE2dnokiaE2dblogE2fflashX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZBlogContentQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtypeQUqfntypeZBlogContentQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZBlogContentQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ