diff --git a/makefile b/makefile index add062e3e9e297fc119f17c34cd008c0f4febfa5..972e713fd43e2d1a62e19f7e57e8b866a6c119c9 100644 --- a/makefile +++ b/makefile @@ -4,44 +4,42 @@ CC = gcc CFLAGS = -Wall -Wextra -std=gnu11 -g -fsanitize=address -fsanitize=leak LDFLAGS = -lm LIBS = -lSDL2 +VPATH:=vec2 gfx -TARGET = main BIN = bin -RUN = ./$(BIN)/$(TARGET) # Get source and object -SRCS = $(filter-out $(wildcard */test.c), $(wildcard *.c */*.c)) +SRCS = $(filter-out $(wildcard */*_tests.c */*test.c */*tests.c */*_test.c), $(wildcard *.c */*.c)) OBJS = $(addprefix $(BIN)/, $(SRCS:.c=.o)) +SRCS_TEST = $(filter-out $(wildcard main.c */main.c gfx/*), $(wildcard *.c */*.c)) +OBJS_TEST = $(addprefix $(BIN)/, $(SRCS_TEST:.c=.o)) -PHONY := $(TARGET) # Create the target -$(TARGET): $(OBJS) - $(CC) $(CFLAGS) -o $(BIN)/$@ $(OBJS) $(LIBS) $(LDFLAGS) +main: $(OBJS) + $(CC) $(CFLAGS) -o $(BIN)/$@ $^ $(LIBS) $(LDFLAGS) + ./$(BIN)/$@ # Convert the source in object, but before all, run `$(BIN)` aka mkdir $(BIN)/%.o: %.c mkdir -p $(@D) - $(CC) $(CFLAGS) -o $@ -c $< $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ -c $< $(LDFLAGS) -lSDL2 -PHONY += help # Echo the source and object values help: @echo "src: $(SRCS)" @echo "obj: $(OBJS)" + @echo "obj_test: $(OBJ_TEST)" -PHONY += run # Run the program run: $(RUN) -PHONY += clean clean: rm -rf $(BIN) -PHONY += test-draw test-draw: draw/test.c $(BIN)/draw/draw.o $(BIN)/gfx/gfx.o $(CC) $(CFLAGS) -o $(BIN)/draw/$@.o -c $< $(LDFLAGS) $(CC) $(CFLAGS) -o $(BIN)/draw/test $(BIN)/draw/$@.o $(BIN)/draw/draw.o $(BIN)/gfx/gfx.o $(LIBS) $(LDFLAGS) ./$(BIN)/draw/test -.PHONY: $(PHONY) +.PHONY: test-draw help clean main