# m2SDL — GNU Modula-2 bindings for SDL2 GM2 ?= gm2 SDLCONF := $(shell pkg-config --cflags sdl2 2>/dev/null) SDLLIBS := $(shell pkg-config --libs sdl2 2>/dev/null || echo -lSDL2) GM2FLAGS ?= SRC_DIR := src LIB_DIR := lib BLD := build OBJDIR := $(BLD)/objs OBJS := $(OBJDIR)/SDLRect.o $(OBJDIR)/SDLUtils.o $(OBJDIR)/SDLKey.o INCLUDES := -I$(SRC_DIR) -I$(LIB_DIR) TESTS := test_init test_version test_rect test_window test_key EXAMPLES := hello_window version event_loop SHOWCASES := showcase_clear showcase_rectangles showcase_primitives showcase_snake .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)/SDLRect.o: $(SRC_DIR)/SDLRect.mod $(SRC_DIR)/SDLRect.def | $(OBJDIR) $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@ $(OBJDIR)/SDLUtils.o: $(LIB_DIR)/SDLUtils.mod $(LIB_DIR)/SDLUtils.def | $(OBJDIR) $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@ $(OBJDIR)/SDLKey.o: $(SRC_DIR)/SDLKey.mod $(SRC_DIR)/SDLKey.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) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS) examples: $(BLD)/examples $(OBJS) $(addprefix $(BLD)/examples/,$(EXAMPLES)) $(BLD)/examples/%: examples/%.mod $(OBJS) | $(BLD)/examples $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS) $(BLD)/showcases: mkdir -p $(BLD)/showcases showcases: $(BLD)/showcases $(OBJS) $(addprefix $(BLD)/showcases/,$(SHOWCASES)) $(BLD)/showcases/%: showcases/%.mod $(OBJS) | $(BLD)/showcases $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS) check: tests ./tests/run_tests.sh clean: rm -rf $(BLD)