src = $(wildcard src/*.c)
obj = $(src:.c=.o)
lib_a = libpsys.a
lib_so = libpsys.so

CC = gcc
CFLAGS = -std=c89 -pedantic -Wall -g -fPIC -Isrc `pkg-config --cflags vmath`
LDFLAGS = `pkg-config --libs vmath`

.PHONY: all
all: $(lib_a) $(lib_so)

$(lib_a): $(obj)
	$(AR) rcs $@ $^

$(lib_so): $(obj)
	$(CC) $(CFLAGS) -shared -o $@ $^ $(LDFLAGS)

.PHONY: install
install: $(lib_a) $(lib_so)
	install -d $(PREFIX)/lib
	install -m 644 $(lib_a) $(lib_so) $(PREFIX)/lib
	install -d $(PREFIX)/include
	install -m 644 src/psys.h $(PREFIX)/include/psys.h
	install -d $(PREFIX)/lib/pkgconfig
	install -m 644 psys.pc $(PREFIX)/lib/pkgconfig/psys.pc

.PHONY: uninstall
uninstall:
	rm -f $(PREFIX)/lib/$(lib_a)
	rm -f $(PREFIX)/lib/$(lib_so)
	rm -f $(PREFIX)/include/psys.h
	rm -f $(PREFIX)/lib/pkgconfig/psys.pc

.PHONY: clean
clean:
	rm -f $(obj)

.PHONY: distclean
distclean:
	rm -f $(obj) $(lib_so) $(lib_a) Makefile psys.pc

.PHONY: dist
dist: distclean
	cd ..; tar czvf psys.tar.gz psys && mv psys.tar.gz psys/
