SRC=src
OBJ=obj

CC=gcc
CFLAGS=-Wall -Wextra -fPIC -O3# -fsanitize=address -g

TARGET=libgravity.so
TEST_TARGET=testapp

SRCS=$(shell find $(SRC) -name '*.c')
OBJS=$(patsubst $(SRC)/%.c,$(OBJ)/%.o,$(SRCS))

$(TARGET): $(OBJS)
	$(CC) -shared $(OBJS) -o $(TARGET)

$(OBJ)/%.o: $(SRC)/%.c
	@mkdir -p $(dir $@)
	$(CC) $(CFLAGS) -c $< -o $@

$(TEST_TARGET): test.c $(TARGET)
	$(CC) $(CFLAGS) test.c -lgravity -L. -o $(TEST_TARGET)

test: $(TEST_TARGET)

setup:
	mkdir -p $(OBJ)

clean:
	find $(OBJ) -name '*.o' -delete
	rm $(TARGET)
	rm $(TEST_TARGET)

install: $(TARGET)
	sudo cp $(TARGET) /usr/local/lib/

.PHONY: setup clean test install