# m2SDL3 — GNU Modula-2 bindings for SDL3 GM2 ?= gm2 GM2FLAGS ?= SRC_DIR := src LIB_DIR := lib BLD := build OBJDIR := $(BLD)/objs OBJS := $(OBJDIR)/SDL3Rect.o $(OBJDIR)/SDL3Utils.o $(OBJDIR)/SDL3Key.o # SDL3 sources shipped alongside (read-only, see README): headers in # SDL-release-3.4.16/include, prebuilt shared lib in .../build. SDL_SRC := SDL-release-3.4.16 SDL_BLD := $(SDL_SRC)/build SDL_INC := -I$(SDL_SRC)/include SDL_LIB := -L$(SDL_BLD) -lSDL3 -Wl,-rpath,$(abspath $(SDL_BLD)) INCLUDES := -I$(SRC_DIR) -I$(LIB_DIR) $(SDL_INC) TESTS := test_init test_version test_rect test_window test_key test_sysinfo test_clipboard EXAMPLES := hello_window version event_loop renderer_demo SHOWCASES := showcase_clear showcase_rectangles showcase_primitives showcase_snake showcase_lines showcase_points showcase_debug_text .PHONY: all tests examples showcases clean check all: tests examples showcases $(OBJDIR): mkdir -p $(OBJDIR) $(BLD)/tests: mkdir -p $(BLD)/tests $(BLD)/examples: mkdir -p $(BLD)/examples $(OBJDIR)/SDL3Rect.o: $(SRC_DIR)/SDL3Rect.mod $(SRC_DIR)/SDL3Rect.def | $(OBJDIR) $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@ $(OBJDIR)/SDL3Utils.o: $(LIB_DIR)/SDL3Utils.mod $(LIB_DIR)/SDL3Utils.def | $(OBJDIR) $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@ $(OBJDIR)/SDL3Key.o: $(SRC_DIR)/SDL3Key.mod $(SRC_DIR)/SDL3Key.def | $(OBJDIR) $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@ tests: $(BLD)/tests $(OBJS) $(addprefix $(BLD)/tests/,$(TESTS)) $(BLD)/tests/%: tests/%.mod $(OBJS) | $(BLD)/tests $(GM2) $(INCLUDES) $(GM2FLAGS) $< $(OBJS) -o $@ $(SDL_LIB) examples: $(BLD)/examples $(OBJS) $(addprefix $(BLD)/examples/,$(EXAMPLES)) $(BLD)/examples/%: examples/%.mod $(OBJS) | $(BLD)/examples $(GM2) $(INCLUDES) $(GM2FLAGS) $< $(OBJS) -o $@ $(SDL_LIB) $(BLD)/showcases: mkdir -p $(BLD)/showcases showcases: $(BLD)/showcases $(OBJS) $(addprefix $(BLD)/showcases/,$(SHOWCASES)) $(BLD)/showcases/%: showcases/%.mod $(OBJS) | $(BLD)/showcases $(GM2) $(INCLUDES) $(GM2FLAGS) $< $(OBJS) -o $@ $(SDL_LIB) check: tests ./tests/run_tests.sh clean: rm -rf $(BLD)