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:
./configure --reconfigure
reruns configure with the same arguments
as the last run.Missing modules are downloaded automatically when required.
See mklove/modules
for the available modules.
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)