Makefile 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # m2SDL — GNU Modula-2 bindings for SDL2
  2. GM2 ?= gm2
  3. SDLCONF := $(shell pkg-config --cflags sdl2 2>/dev/null)
  4. SDLLIBS := $(shell pkg-config --libs sdl2 2>/dev/null || echo -lSDL2)
  5. GM2FLAGS ?=
  6. SRC_DIR := src
  7. LIB_DIR := lib
  8. BLD := build
  9. OBJDIR := $(BLD)/objs
  10. OBJS := $(OBJDIR)/SDLRect.o $(OBJDIR)/SDLUtils.o
  11. INCLUDES := -I$(SRC_DIR) -I$(LIB_DIR)
  12. TESTS := test_init test_version test_rect test_window
  13. EXAMPLES := hello_window version event_loop
  14. .PHONY: all tests examples clean check
  15. all: tests examples
  16. $(OBJDIR):
  17. mkdir -p $(OBJDIR)
  18. $(BLD)/tests:
  19. mkdir -p $(BLD)/tests
  20. $(BLD)/examples:
  21. mkdir -p $(BLD)/examples
  22. $(OBJDIR)/SDLRect.o: $(SRC_DIR)/SDLRect.mod $(SRC_DIR)/SDLRect.def | $(OBJDIR)
  23. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  24. $(OBJDIR)/SDLUtils.o: $(LIB_DIR)/SDLUtils.mod $(LIB_DIR)/SDLUtils.def | $(OBJDIR)
  25. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  26. tests: $(BLD)/tests $(OBJS) $(addprefix $(BLD)/tests/,$(TESTS))
  27. $(BLD)/tests/%: tests/%.mod $(OBJS) | $(BLD)/tests
  28. $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS)
  29. examples: $(BLD)/examples $(OBJS) $(addprefix $(BLD)/examples/,$(EXAMPLES))
  30. $(BLD)/examples/%: examples/%.mod $(OBJS) | $(BLD)/examples
  31. $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS)
  32. check: tests
  33. ./tests/run_tests.sh
  34. clean:
  35. rm -rf $(BLD)