SourceForge.net LogoCALINKA TASKS
Download   Documentation   Source code   Forums

Purpose

The purpose of this tool is to enable compiling and linking of C++-programs using the same build tool as for the rest of the products in a java-centric environment, namely ant. Calinka aims to provide a straightforward and portable way to configure complex compiling and linking of C and C++ files without resorting to non-portable makefiles, bash-scripting or patching the build tool itself.

The idea

The basic principle is a set of ant tasks defining the actual commands that needs to be run for compilers and linkers for the different platforms which are going to be used. The actual build scripts can then be written with compile and link tasks in a platform neutral manner. Simple, but very effective.

Current status

It has been tested and is in use with msvc on Win32-Intel and g++ on Mac OSX PPC and Intel producing Fat binaries. Since they are quite different it is very likely that it will be possible to use it for other OSes/compilers as well. The tool has been in use at BWinGames for about a year and proven successful. We now continue to develop it in the open on sourceforge.

Related / similar projects

cpptasks: That project is very generic and hides a lot of control over compiler flags and directives which makes exact control over the compiler difficult. The model chosen also doesn't handle complex situations very well, like for example compiling fat binaries on OSX using two different compiler versions simoultanously. Other than that it's a great initiative, check it out.
nant: Another slightly related project is Nant, but that isn't as portable as calinka (.NET only). Seems to bea  very popoular alternative to ant in the Microsoft world. Also really worth considering if you don't need to be portable.
antcpp: Run a C/C++ preprocessor from ant.