summaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
authorDaniel Hader <[email protected]>2026-06-14 12:58:14 -0500
committerDaniel Hader <[email protected]>2026-06-14 12:58:14 -0500
commit482ea0261cb9f0def49ce3df542b2a7f811262d1 (patch)
tree3bb961316b2ca856409b9f3b2145036ae9f5d704 /makefile
build and test environment using makefile and basic SDL3 setup
Diffstat (limited to 'makefile')
-rw-r--r--makefile66
1 files changed, 66 insertions, 0 deletions
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..76ee33e
--- /dev/null
+++ b/makefile
@@ -0,0 +1,66 @@
+
+CC := gcc
+CFLAGS := -Wall -MMD -MP -std=c99
+LFLAGS := -lSDL3 -lGL
+
+# ==============================================================================
+
+EXEC := game
+
+BUILD := build
+BIN := $(BUILD)/bin
+OBJ := $(BUILD)/obj
+
+SRC := src
+
+TEST := test
+TESTBIN := $(TEST)/bin
+TESTOBJ := $(TEST)/obj
+
+# ==============================================================================
+
+SRCS := $(shell find $(SRC) -name '*.c')
+OBJS := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SRCS))
+DEPS := $(OBJS:.o=.d)
+
+LIBOBJS = $(filter-out $(OBJ)/main.o, $(OBJS))
+
+TESTS := $(wildcard $(TEST)/*.c)
+TESTOBJS := $(patsubst $(TEST)/%.c, $(TESTOBJ)/%.o, $(TESTS))
+TESTBINS := $(patsubst $(TEST)/%.c, $(TESTBIN)/%, $(TESTS))
+TESTDEPS := $(TESTOBJS:.o=.d)
+
+# ==============================================================================
+
+$(BIN)/$(EXEC): $(OBJS)
+ @mkdir -p $(BIN)
+ $(CC) -o $@ $^ $(LFLAGS)
+
+$(OBJ)/%.o: $(SRC)/%.c
+ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+.PHONY: run
+run: ${BIN}/${EXEC}
+ ./${BIN}/${EXEC}
+
+.PHONY: test
+test: ${TESTBIN}/test_vec
+ ./run_tests.sh
+
+$(TESTBIN)/%: $(TESTOBJS) $(LIBOBJS)
+ @mkdir -p $(TESTBIN)
+ $(CC) -o $@ $^ $(LFLAGS)
+
+$(TESTOBJ)%.o: $(TEST)/%.c
+ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -c -I$(SRC) -o $@ $<
+
+-include $(DEPS)
+
+.PHONY: clean
+clean:
+ rm -rf ${BIN}
+ rm -rf ${OBJ}
+ rm -rf ${TESTBIN}
+ rm -rf ${TESTOBJ}