.PHONY : clean tests all manual

CFLAGS =		-std=c99 -Iinclude -pedantic
WARNINGS= 	-Wall -Wextra
LDFLAGS =		-fPIC -shared

TARGET = 	libflint.so
SRC !=		ls src/*.c
OBJ =			$(SRC:./src/$.c=./obj/%.o)

PREFIX =	$(DESTDIR)/usr/local
LIBDIR =	$(PREFIX)/lib

all: $(TARGET)
	./clanggen.sh

$(TARGET): $(OBJ)
	cc $(CFLAGS) $(WARNINGS) $(LDFLAGS) -o $(TARGET) $(OBJ)

./obj/%.o: ./src/%.c
	cc $(CFLAGS) -c $< -o $@

install: $(TARGET)
	cp $(TARGET) $(LIBDIR)

uninstall:
	rm -f $(LIBDIR)/$(TARGET)

clean:
	rm -f $(TARGET)
	rm -f testrunner
	rm -f tcptest
	rm -f netmanual
	rm -f compile_commands.json

tests:
	cc $(CFLAGS) -o testrunner tests/tests.c src/*.c
	cc $(CFLAGS) -o tcptest tests/tcptest.c src/*.c 
	./run_tests.sh

manual:
	cc $(CFLAGS) -o netmanual tests/netmanual.c src/*.c