edenhill / mklove

mklove - not autoconf
BSD 2-Clause "Simplified" License
53 stars 8 forks source link

mklove - not autoconf

mklove provides an auto-configuration and build environment for C/C++ applications and libraries.

It aims to be a lightweight drop-in compatible replacement to the overly bloated autoconf.

mklove has two prongs on its fork:

These can be used together or on their own. The configure script provides standard Makefile variable names in Makefile.config, while Makefile.base uses these standard names. Other than that there is no special magic tie between the two and you can use whichever part you like, or both, or none (which seems pointless).

mklove is used in popular open source projects and works with Debian's debhelper based autoconf package builders out of the box. See the following real-life uses for inspiration:

Why mklove and not autoconf/automake

Base design requirements for mklove

Hip features

Checks produce the following output

Modules

Missing modules are downloaded automatically when required.

See mklove/modules for the available modules.

Instructions

Run the setup.sh script from the mklove checkout directory (not from your project's mklove directory). Specify your project's top level directory as the only argument to setup.sh:

# Go to mklove checkout directory
cd mklove

# Run setup, specify the path to your project
./setup.sh ~/src/myproject

# Answer the questions and let mklove set up itself.

# Go to your project directory
cd ~/src/myproject

# Add your own options and checks by creating a configure.<projname> file.
emacs configure.myproject

# Update modules.
# This copies the required modules to your project's mklove/modules directory
# so that your project can be packaged and shipped with all required
# mklove files.
# Note: --update-modules will overwrite modules in <proj>/mklove.
./configure --update-modules

# Configure your project
./configure

# Build it
make (or whatever)