all: libcexn.a libcexn.so

PREFIX = /usr/local
CC_FLAGS = -Wall -Wextra -ansi -std=c89 -O2 -fPIC -shared -pedantic

libcexn.a: cexn.o
	ar rcs $@ $<

libcexn.so: cexn.o
	${CC} ${CC_FLAGS} $< -o $@

cexn.o: cexn.c cexn.h
	${CC} ${CC_FLAGS} -c $<

.PHONY: install clean all tar uninstall

install: all
	mkdir -p ${PREFIX}/lib
	mkdir -p ${PREFIX}/include
	cp libcexn.so libcexn.a ${PREFIX}/lib
	cp cexn.h ${PREFIX}/include
	ldconfig

uninstall:
	rm -f ${PREFIX}/lib/libcexn.so
	rm -f ${PREFIX}/lib/libcexn.a
	rm -f ${PREFIX}/include/cexn.h
	rmdir -p --ignore-fail-on-non-empty ${PREFIX}/lib
	rmdir -p --ignore-fail-on-non-empty ${PREFIX}/include
	ldconfig

clean:
	rm -f *.o *.a *.so test
	cd benchmark && make clean
	cd examples && make clean

tar: cexn.tar.gz

cexn.tar.gz: clean
	tar -cvz --file $@ --exclude='cexn/*\~' --exclude='cexn/cexn.tar.gz' --exclude='cexn/*.swp' --directory .. cexn

run: test
	./test
