summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2025-03-23 11:26:53 +0100
committerJesper Jensen <jesper@jnsn.dev>2025-03-23 11:26:53 +0100
commit6e1eaaf13a13584294c6a090ef40500cd786f56f (patch)
treef2234a8a6b1a6a150a7cac44ea43fbf5dd31d1eb /Makefile
Initial commit
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile41
1 files changed, 41 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..05ef562
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,41 @@
+SRC_DIR = src
+CMD_DIR = cmd
+TST_DIR = test
+
+OBJ_DIR = obj
+
+CMD_SRC = $(wildcard $(CMD_DIR)/*.c)
+CMD_OBJ = $(CMD_SRC:%=$(OBJ_DIR)/%.o)
+
+TST_SRC = $(wildcard $(TST_DIR)/*.c)
+TST_RUN = $(TST_SRC:$(TST_DIR)/%.c=$(OBJ_DIR)/test_runner/%)
+
+CC_SRC = $(wildcard $(SRC_DIR)/*.c)
+CC_OBJ = $(CC_SRC:%=$(OBJ_DIR)/%.o)
+
+CFLAGS = -Wall -I$(SRC_DIR)
+CFLAGS += -g
+LDFLAGS =
+
+$(OBJ_DIR)/%.c.o: %.c
+ @mkdir -p $(@D)
+ $(CC) $(CFLAGS) -o $@ -c $<
+
+app: $(CC_OBJ) $(CMD_OBJ)
+ @mkdir -p $(@D)
+ $(CC) $(LDFLAGS) $(CC_OBJ) $(CMD_OBJ) -o $@
+
+$(OBJ_DIR)/test_runner/%: $(OBJ_DIR)/$(TST_DIR)/%.c.o $(CC_OBJ)
+ @mkdir -p $(@D)
+ $(CC) $(LDFLAGS) $(CC_OBJ) $< -o $@
+
+.PHONY: test
+test: $(TST_RUN)
+ $(foreach var,$(TST_RUN),./$(var) &&) true
+
+.PHONY: all
+all: app $(TST_RUN)
+
+.PHONY: clean
+clean:
+ @$(RM) -rf obj/