Here we build libusual as part of top-level tree. This gives the advantage of building only the modules that are actually used in main tree and without the intermediate libusual.a step.

This method is for projects that are developed in parallel with libusual. Not recommended for casual usage.

Configure libusual

Here we configure libusual, but do not build it.

$ git clone git://github.com/libusual/libusual.git lib
Cloning into 'lib'...
done.
$ cd lib
$ ./autogen.sh
[...]
$ ./configure
[...]
$ cd ..

Prepare own code

Here is the source that needs to be linked with libusual:

File: prog.c
#include <usual/hashing/crc32.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
        const char *data = "CECSFXX";
        uint32_t crc;

        crc = calc_crc32(data, strlen(data), 0);
        printf("crc: %08x\n", crc);
        return 0;
}

Build with Antimake.

Antimake is build framework on plain GNU Make that reads build instructons with Automake syntax. It has also hooks for libusual integration.

Here is Makefile that uses Antimake:

File: Makefile
# the automake-style build description for 'prog'
noinst_PROGRAMS = prog
prog_SOURCES = prog.c

# location of configured libusual
USUAL_DIR = lib

# mention that 'prog' wants embedded libusual
prog_EMBED_LIBUSUAL = 1

# Load Antimake plugin that handles libusual embedding
AM_FEATURES = libusual

# launch Antimake
include $(USUAL_DIR)/mk/antimake.mk

Build the project

$ make
     CC       prog.c
     CC       lib/usual/hashing/crc32.c
     CC       lib/usual/base.c
     CCLD     prog
$ ls
Makefile  lib  prog  prog.c
$ ./prog
crc: 12345678
$ make clean
     CLEAN    prog
$ ls
Makefile  lib  prog.c

Done