GSoC/GCI Archive
Google Code-in 2011 Haiku

Write a HOWTO-like manual for Haiku's 'makefile-engine' CLI developer helpers.

completed by: Peter Poláčik

mentors: Siarhei Zharski

The 'makefile-engine' helpers propose an easy way to create simple project for new Haiku applications, add-ons and libraries. It include two files you can found in /boot/develop/etc directory. The "makefile-engine" one is a working horse, performing most of functionality. The second file is the template for projects makefile, that should be copied in the local project directory and customized.

Your task is:

  • Install Haiku in Virtual Machine or on real hardware;
  • Create simple "Hello, World!" project using any sample available in the internet and makefile template from /boot/develop/etc/makefile;
  • Adjust the local copy of makefile and force the program compile and work. In case of problems - ask your mentor for help;
  • Add the localization into your sample by changing your program in the following manner:

    #include <Catalog.h>
    #define B_TRANSLATE_CONTEXT "HelloWorld"
       // replace the string literal with B_TRANSLATE()-ed one
       B_TRANSLATE("Hello, World!")

    and compile it;

  • Now use the "make catkeys" to collect localized strings. The result goes to ./locales/en.catkeys. Use this file as template to create another (./locales/xx.catkeys) one for your local language or the language you know at least. Translate your language files and add it into the project;
  • Now use the "make catalogs" to compile catalogs for your program and "make catalogsinstall" to installe them on your system. Test that your app is still working;
  • Write a HOWTO for using makefile-engine helpers and provide it as result of completing your task.

Requirements to resulting HOWTO document:

  • It should be provided in any textual format (like plain TXT, HTML, Haiku StyledText etc.);
  • The information should be structured. For example it can be the following:
    Preamble  - some words about ;
    Quick Start - steps to create new project;
    Configuring - detailed explanation of variables defined in makefile;
    Building - steps and targets used during building of the app;
    Localization - how to configure the makefile to support localization;
    Targets reference - a list of targets supported by makefile-engine and short description every one. Note that this is a sample - feel free to re-order information in the way you prefer;


  • Basic knowledge of makefiles and command-line building is welcomed but can be learned during the task;

Good luck!