
= Test Antimake =


== Simplest usage ==


Here we avoid use of any autotools.


First, this is the source file:

.File: hello.c
[source,c]
-----------------------------------
#include <stdio.h>

int main(void)
{
	printf("Hello, world\n");
	return 0;
}
-----------------------------------

Here is corresponding Makefile:

.File: Makefile
[source,makefile]
-----------------------------------
# This is target list - it's name describes target type
# and how it is installed, it's value target files to be built.
# bin - the targets will be installed under $(bindir)
# PROGRAMS - the target is executable built from many sources
bin_PROGRAMS = hello

# The target 'hello'-s source file list.
hello_SOURCES = hello.c

# Run Antimake
include antimake.mk
-----------------------------------

Also install Antimake and we are ready to build:

---------------------------------
$ cp ../../antimake.mk .
$ ls
Makefile  antimake.mk  hello.c
---------------------------------

Build the project

---------------------------------
$ make
     CC       hello.c
     CCLD     hello
$ ls
Makefile  antimake.mk  hello  hello.c
$ ./hello
Hello, world
---------------------------------

We can even install it already:

---------------------------------
$ make install prefix=/opt DESTDIR=./inst
     INSTALL  hello ./inst/opt/bin
$ ls ./inst/opt/bin
hello
---------------------------------

For creating source package, we need to provide additional info:

.File: Makefile
[source,makefile]
-----------------------------------
# Package name and version for tarball filename
PACKAGE_NAME = myhello
PACKAGE_VERSION = 1.0

# Non-source files to put into tarball
EXTRA_DIST = Makefile antimake.mk

bin_PROGRAMS = hello
hello_SOURCES = hello.c
include antimake.mk
-----------------------------------

Now we can create package that can be given to others.

---------------------------------
$ make dist
     CHECK    dist-gzip
     MKDIR    myhello-1.0
     COPY     myhello-1.0
     PACK     myhello-1.0.tar.gz
$ ls
Makefile  antimake.mk  hello  hello.c  inst  myhello-1.0.tar.gz
$ tar tzf myhello-1.0.tar.gz | sort
myhello-1.0/
myhello-1.0/Makefile
myhello-1.0/antimake.mk
myhello-1.0/hello.c
---------------------------------

Clean the tree

---------------------------------
$ make clean
     CLEAN    hello
$ ls
Makefile  antimake.mk  hello.c	inst  myhello-1.0.tar.gz
---------------------------------

Done!

