CC?=gcc
AR?=ar
RANLIB=ranlib

# Linux flavour
# PREFIX?=/usr

# BSD flavour
# PREFIX?=/usr/local

# Debug flavour
PREFIX?=..

LIBDIR?=$(PREFIX)/lib

OPTS_debug=-D_DEBUG -g -ggdb
OPTS_production=-O3

CFLAGS+=-std=c99 -Wall -pipe -Wextra -I..

LIBRARY=msgpack
HEADERS=gcc_atomic.h  msgpack.h  object.h  pack.h  sbuffer.h  unpack.h  vrefbuffer.h  zbuffer.h  zone.h
SOURCES=objectc.c  unpack.c  version.c  vrefbuffer.c  zone.c

OBJECTS = $(SOURCES:%.c=%.o)
OBJECTS_debug = $(SOURCES:%.c=%.debug.o)

.SUFFIXES: .a .debug.a .o .debug.o .c .h

all: $(LIBRARY).a $(LIBRARY).debug.a

CFLAGS_production = $(CFLAGS) $(OPTS_production) $(FEATURES)
CFLAGS_debug = $(CFLAGS) $(OPTS_debug) $(FEATURES)

$(LIBRARY).a: $(OBJECTS)
	$(AR) cru $@ $^
	$(RANLIB) $@
$(LIBRARY).debug.a: $(OBJECTS_debug)
	$(AR) cru $@ $^
	$(RANLIB) $@

.c.debug.o : $(HEADERS)
	$(CC) -c -o $@ $(CFLAGS_debug) $(<:.debug.o=.c)

.c.o : $(HEADERS)
	$(CC) -c -o $@ $(CFLAGS_production) $<

clean:
	rm -f *.a *.o *~

install:
	install -m 755 $(LIBRARY) $(LIBDIR)
