diff options
| author | Daniel Hader <[email protected]> | 2026-06-14 12:58:14 -0500 |
|---|---|---|
| committer | Daniel Hader <[email protected]> | 2026-06-14 12:58:14 -0500 |
| commit | 482ea0261cb9f0def49ce3df542b2a7f811262d1 (patch) | |
| tree | 3bb961316b2ca856409b9f3b2145036ae9f5d704 /makefile | |
build and test environment using makefile and basic SDL3 setup
Diffstat (limited to 'makefile')
| -rw-r--r-- | makefile | 66 |
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} |
