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