CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -O2
LDFLAGS = -lpthread

TARGET = example
LOADTEST = loadtest
SOURCES = celerityapi.c example.c
HEADERS = celerityapi.h

.PHONY: all clean run debug test

all: $(TARGET) $(LOADTEST)

$(TARGET): $(SOURCES) $(HEADERS)
	$(CC) $(CFLAGS) -o $(TARGET) $(SOURCES) $(LDFLAGS)

$(LOADTEST): loadtest.c
	$(CC) $(CFLAGS) -o $(LOADTEST) loadtest.c $(LDFLAGS) -lm

debug: CFLAGS += -g -DDEBUG
debug: clean all

clean:
	rm -f $(TARGET) $(LOADTEST)

run: $(TARGET)
	./$(TARGET)

test: $(TARGET) $(LOADTEST)
	@echo "Starting server..."
	@./$(TARGET) --port 9000 &
	@sleep 2
	@echo "Running load test..."
	@./$(LOADTEST) -c 50 -d 5 http://127.0.0.1:9000/health
	@pkill -f "./$(TARGET) --port 9000" || true

valgrind: debug
	valgrind --leak-check=full --show-leak-kinds=all ./$(TARGET)
