Static autotools demo
Go to file
2015-02-06 20:25:03 +01:00
src Change to non-recursive makefiles 2015-01-28 23:15:42 +01:00
tests Add example g_add_test 2015-02-06 18:15:29 +01:00
.gitignore Example 'make check' 2015-02-06 17:10:11 +01:00
AUTHORS Initial commit 2015-01-26 21:17:24 +01:00
autogen.sh Use the --make options with autoreconf 2015-01-31 20:43:25 +01:00
ChangeLog Initial commit 2015-01-26 21:17:24 +01:00
configure.ac Add comments about make silent rules 2015-02-06 17:52:58 +01:00
COPYING Initial commit 2015-01-26 21:17:24 +01:00
Makefile.am Explain the DEPS_{CFLAGS,LDADD} 2015-02-06 20:25:03 +01:00
NEWS Initial commit 2015-01-26 21:17:24 +01:00
README Added documentation 2015-02-06 20:18:20 +01:00

# autotools-template
Template for an autotools (autoconf, automake) project

Introduction
============

Setting up an `Autotools` build system can be daunting. So I decided to 
create a template with the basics to use as the basis for my projects. 

It may be surprising to the novice that there is no `./configure` but
`./configure` is a generated file that it's shipped with the
distribution of your software  (the tarball that you get `make dist`). 
As such the `./configure` doesn't belong in the source control
repository. Running `autoreconf -f` will generate `./configure` and a
bunch of other files. 

To build from scrath you need to perform:

    autoreconf -i # Only needed if configure.ac or Makefile.am changes
    ./configure   # generates Makefiles and config.h
    make # build 
    make check # run the tests


I'm not an autotools expert by any means. So take my advice with a grain
of salt. 

There are two input files:

  * `configure.ac`: The `./configure` script will be generated from 
                    from it. Here is were you check for libraries,
                    headers, etc.
  * `Makefile.am`: This file will be transformed into `Makefile.in` that 
                   `./configure` will use to generate the `Makefile`.

What to do after cloning the repository
=======================================

configure.ac
------------

Edit configure.ac to change the FULL-PACKAGE-NAME, VERSION and 
BUG-REPORT-ADDRESS fields to match your project.

Makefile.am
-----------

Edit src/Makefile.am to say which "products" (executables, binaries) 
will be generated and what are the source files for each one. 

bin_PROGRAMS = executable1 executable2
executable1_SOURCES = sourcefile1.c sourcefile2.c
executable1_CFLAGS =  
executable2_SOURCES = sourcefile3.c sourcefile4.c
executable2_CFLAGS = 


Reference material
==================

Autotools: A Practitioner's Guide to GNU Autoconf, Automake, and Libtool by John Calcote
Autotools Mythbuster https://autotools.io/index.html