summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJohnny Richard <johnnyricha@gmail.com>2021-04-17 01:27:27 +0200
committerJohnny Richard <johnnyricha@gmail.com>2021-04-17 01:27:27 +0200
commitd9e4bcd542f3efe97e6b8951ee47f10c223a6bf3 (patch)
treec5c7322b7629211dab22d2f50c83e7263d52db2b /Makefile
parentf3d0c2c7bb2dd82b677fe883212d7442b8acb49e (diff)
Add microunit test framework
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile42
1 files changed, 31 insertions, 11 deletions
diff --git a/Makefile b/Makefile
index 6c615f3..2433900 100644
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,25 @@
-TARGET ?= blast_attack
-SOURCE_DIR ?= ./src
-BUILD_DIR ?= ./build
-
-CFLAGS := -Wall
-OBJS := $(BUILD_DIR)/main.o \
- $(BUILD_DIR)/controller.o
+TARGET ?= blast_attack
+SOURCE_DIR ?= ./src
+TEST_DIR ?= ./test
+LIB_DIR ?= ./lib
+BUILD_DIR ?= ./build
+
+CFLAGS := -Wall
+CFLAGS_TEST := -Isrc -Ithird_party -Llib -lmunit
+SRCS := $(wildcard $(SOURCE_DIR)/*.c)
+SRCS_TEST := $(wildcard $(TEST_DIR)/*.c)
+OBJS := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRCS))
+TESTS := $(patsubst $(TEST_DIR)/%-test.c, $(TEST_DIR)/%, $(SRCS_TEST))
ifeq ($(OS),Windows_NT)
CC := gcc
CFLAGS += -lmingw32 -lSDL2main -lSDL2 \
-IG:\dev\mingw\include\SDL2
else
- CFLAGS += -Wall $(shell pkg-config sdl2 --cflags --libs)
+ CFLAGS += $(shell pkg-config sdl2 --cflags --libs)
endif
-.PHONY: build clean run $(TARGET)
+.PHONY: build clean run test $(TARGET)
all: $(TARGET)
@@ -24,12 +29,27 @@ $(TARGET): $(BUILD_DIR) $(OBJS)
$(BUILD_DIR):
@mkdir -p $@
+$(LIB_DIR):
+ @mkdir -p $@
+
$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
+$(TEST_DIR)/%-test: $(BUILD_DIR)/%.o $(TEST_DIR)/%-test.c
+ $(CC) $(CFLAGS) $(CFLAGS_TEST) $? -o $@
+
+$(TEST_DIR)/%: $(TEST_DIR)/%-test
+ ./$@-test
+
+test: lib/libmunit.so $(BUILD_DIR) $(TESTS)
+
+lib/libmunit.so: $(LIB_DIR) third_party/munit/munit.c
+ $(CC) -Wall -Werror -fpic -c third_party/munit/munit.c -shared -o lib/libmunit.so
+
clean:
- @rm -rf $(OBJS)
+ @rm -rf $(BUILD_DIR)
+ @rm -rf $(LIB_DIR)
@rm $(TARGET)
-run:
+run: all
./$(TARGET)