Makefile 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 $(OBJDIR)/SDLKey.o
  11. INCLUDES := -I$(SRC_DIR) -I$(LIB_DIR)
  12. TESTS := test_init test_version test_rect test_window test_key
  13. EXAMPLES := hello_window version event_loop
  14. SHOWCASES := showcase_clear showcase_rectangles showcase_primitives showcase_snake
  15. .PHONY: all tests examples showcases clean check
  16. all: tests examples showcases
  17. $(OBJDIR):
  18. mkdir -p $(OBJDIR)
  19. $(BLD)/tests:
  20. mkdir -p $(BLD)/tests
  21. $(BLD)/examples:
  22. mkdir -p $(BLD)/examples
  23. $(OBJDIR)/SDLRect.o: $(SRC_DIR)/SDLRect.mod $(SRC_DIR)/SDLRect.def | $(OBJDIR)
  24. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  25. $(OBJDIR)/SDLUtils.o: $(LIB_DIR)/SDLUtils.mod $(LIB_DIR)/SDLUtils.def | $(OBJDIR)
  26. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  27. $(OBJDIR)/SDLKey.o: $(SRC_DIR)/SDLKey.mod $(SRC_DIR)/SDLKey.def | $(OBJDIR)
  28. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  29. tests: $(BLD)/tests $(OBJS) $(addprefix $(BLD)/tests/,$(TESTS))
  30. $(BLD)/tests/%: tests/%.mod $(OBJS) | $(BLD)/tests
  31. $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS)
  32. examples: $(BLD)/examples $(OBJS) $(addprefix $(BLD)/examples/,$(EXAMPLES))
  33. $(BLD)/examples/%: examples/%.mod $(OBJS) | $(BLD)/examples
  34. $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS)
  35. $(BLD)/showcases:
  36. mkdir -p $(BLD)/showcases
  37. showcases: $(BLD)/showcases $(OBJS) $(addprefix $(BLD)/showcases/,$(SHOWCASES))
  38. $(BLD)/showcases/%: showcases/%.mod $(OBJS) | $(BLD)/showcases
  39. $(GM2) $(INCLUDES) $(GM2FLAGS) $(SDLCONF) $< $(OBJS) -o $@ $(SDLLIBS)
  40. check: tests
  41. ./tests/run_tests.sh
  42. clean:
  43. rm -rf $(BLD)