Skip to content
garyo edited this page Dec 13, 2014 · 1 revision

Model programs and their Automake files

In order to concentrate on actually used features and on practical usage of Automake compatibility layer, I chose a few programs that currently use Automake, in order to make it possible to build them using SCons.

Since SCons lacks any Gettext support and adding it is non-trivial and not in scope of this project, as far as my project is concerned, if any of referenced programs uses Gettext, support for it will not be included in SConsified version.

Additional suggestions for model programs, both simple and (more important) complex, are welcome.

Simple projects

AMHello

Canonical 'Hello, World' example included with Automake as an example. Minimal project, a must-have.

No own home or project page. Browse sources : http://cvs.savannah.gnu.org/viewvc/automake/doc/amhello/?root=automake

configure.ac file : configure.ac

Makefile.am files : * Makefile.am * src/Makefile.am

SConstruct

Low-level API:

#!python 
proj = Project('amhello', '1.0', header='config.h')
proj.Distribute('configure.ac', 'Makefile.am', 'src/Makefile.am')
proj.AutoInstall(Program('src/hello', 'src/main.c'))

GNU cpio

Simple C program, referenced as an example throughout Automake manual, multiple directories, Texinfo documentation, library, header files. Home page : http://www.gnu.org/software/cpio/

Project page : http://savannah.nongnu.org/projects/cpio

Browse sources : http://cvs.savannah.gnu.org/viewvc/cpio/?root=cpio

configure.ac file : configure.ac

Makefile.am files : * Makefile.am * doc/Makefile.am * headers/Makefile.am * lib/Makefile.am * src/Makefile.am * tests/Makefile.am

Automake

Not a very complicated program, written in Perl (project not based on C language), non-trivial installation. Home page : http://www.gnu.org/software/automake/

Project page : http://savannah.nongnu.org/projects/automake

Browse sources : http://cvs.savannah.gnu.org/viewvc/automake/?root=automake

configure.ac file : configure.ac

Makefile.am files :

Fetchmail

Simple, C-based program. Unique feature to test is Lex and Yacc usage. Home page : http://fetchmail.berlios.de/

Project page : http://developer.berlios.de/projects/fetchmail/

Browse sources : http://mknod.org/svn/fetchmail/trunk/

configure.ac file : configure.ac

Makefile.am files :

SConstruct file: GSoC2007/MaciejPasternacki/ModelPrograms/FetchmailSConstruct

Complex projects

Nix

Complex, C++-based programs. Lots of subdirectories. Non-trivial installation. Home page : http://nix.cs.uu.nl/

Browse sources : https://svn.cs.uu.nl:12443/repos/trace/nix/trunk/

configure.ac file : configure.ac

Makefile.am files :

Gnucash

Complex GUI program, mixes Guile Scheme and C (SWIG bindings), and maybe some Perl.

I'm not sure if I will manage to actually convert it, since it uses libtool, which is very tightly integrated with Autotools and libtool support is out of immediate scope of this project. Even if I won't, usage patterns from Gnucash should be beneficial to the project. Home page : http://www.gnucash.org/

Browse sources : http://svn.gnucash.org/trac/browser/gnucash/trunk

configure.ac file : configure.in

Makefile.am files :

GRUB Legacy

Complex program; lots of documentation; conditional build; many custom build rules. Home page : http://www.gnu.org/software/grub/grub-legacy.en.html

Browse sources : http://cvs.savannah.gnu.org/viewvc/grub/?root=grub

configure.ac file : configure.ac

Makefile.am files :

Irssi

Complex program and complex build process (generated Makefile.am files!). C with embedded Perl. Heavy usage of conditional build. Home page : http://www.irssi.org/

Browse sources : http://svn.irssi.org/repos/irssi/trunk/

configure.ac file : configure.in

Makefile.am files :

Clone this wiki locally