CC := gcc
CFLAGS := -Wall -Werror
LIBS := -lvector -lfile -llist
LIBSPATH := -L/usr/lib/odweta/
INCLUDEDIR := -I/usr/include/odweta/
PATCH := -Wl,-rpath=/usr/lib/odweta/

.PHONY: default install

default: demo

demo: demo.c libvector.so libfile.so liblist.so
	sudo $(CC) $(CFLAGS) -o $@ $< $(PATCH) $(INCLUDEDIR) $(LIBSPATH) $(LIBS)

libvector.so: src/vector.c
	sudo $(CC) -c -fpic $< -o /usr/lib/odweta/vector.o
	sudo $(CC) -shared -o /usr/lib/odweta/$@ /usr/lib/odweta/vector.o

libfile.so: src/file.c
	sudo $(CC) -c -fpic $< -o /usr/lib/odweta/file.o
	sudo $(CC) -shared -o /usr/lib/odweta/$@ /usr/lib/odweta/file.o

liblist.so: src/list.c
	sudo $(CC) -c -fpic $< -o /usr/lib/odweta/list.o
	sudo $(CC) -shared -o /usr/lib/odweta/$@ /usr/lib/odweta/list.o
install:
	sudo mkdir -p /usr/include/odweta/
	sudo mkdir -p /usr/lib/odweta/
	sudo cp src/vector.c src/file.c src/list.c include/vector.h include/file.h include/list.h /usr/include/odweta/
	sudo make libvector.so libfile.so liblist.so
	sudo ldconfig # update ldconfig cache

clean:
	sudo rm -f main /usr/lib/odweta/vector.o /usr/lib/odweta/file.o /usr/lib/odweta/libvector.so /usr/lib/odweta/libfile.so /usr/lib/odweta/list.o /usr/lib/odweta/liblist.so

cleanrepo:
	rm -fr ./demo
