Makefile 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # m2SDL3 — GNU Modula-2 bindings for SDL3
  2. GM2 ?= gm2
  3. GM2FLAGS ?=
  4. SRC_DIR := src
  5. LIB_DIR := lib
  6. BLD := build
  7. OBJDIR := $(BLD)/objs
  8. OBJS := $(OBJDIR)/SDL3Rect.o $(OBJDIR)/SDL3Utils.o $(OBJDIR)/SDL3Key.o
  9. # SDL3 sources shipped alongside (read-only, see README): headers in
  10. # SDL-release-3.4.16/include, prebuilt shared lib in .../build.
  11. SDL_SRC := SDL-release-3.4.16
  12. SDL_BLD := $(SDL_SRC)/build
  13. SDL_INC := -I$(SDL_SRC)/include
  14. SDL_LIB := -L$(SDL_BLD) -lSDL3 -Wl,-rpath,$(abspath $(SDL_BLD))
  15. INCLUDES := -I$(SRC_DIR) -I$(LIB_DIR) $(SDL_INC)
  16. TESTS := test_init test_version test_rect test_window test_key test_sysinfo test_clipboard
  17. EXAMPLES := hello_window version event_loop renderer_demo
  18. SHOWCASES := showcase_clear showcase_rectangles showcase_primitives showcase_snake showcase_lines showcase_points showcase_debug_text
  19. .PHONY: all tests examples showcases clean check
  20. all: tests examples showcases
  21. $(OBJDIR):
  22. mkdir -p $(OBJDIR)
  23. $(BLD)/tests:
  24. mkdir -p $(BLD)/tests
  25. $(BLD)/examples:
  26. mkdir -p $(BLD)/examples
  27. $(OBJDIR)/SDL3Rect.o: $(SRC_DIR)/SDL3Rect.mod $(SRC_DIR)/SDL3Rect.def | $(OBJDIR)
  28. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  29. $(OBJDIR)/SDL3Utils.o: $(LIB_DIR)/SDL3Utils.mod $(LIB_DIR)/SDL3Utils.def | $(OBJDIR)
  30. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  31. $(OBJDIR)/SDL3Key.o: $(SRC_DIR)/SDL3Key.mod $(SRC_DIR)/SDL3Key.def | $(OBJDIR)
  32. $(GM2) $(INCLUDES) $(GM2FLAGS) -c $< -o $@
  33. tests: $(BLD)/tests $(OBJS) $(addprefix $(BLD)/tests/,$(TESTS))
  34. $(BLD)/tests/%: tests/%.mod $(OBJS) | $(BLD)/tests
  35. $(GM2) $(INCLUDES) $(GM2FLAGS) $< $(OBJS) -o $@ $(SDL_LIB)
  36. examples: $(BLD)/examples $(OBJS) $(addprefix $(BLD)/examples/,$(EXAMPLES))
  37. $(BLD)/examples/%: examples/%.mod $(OBJS) | $(BLD)/examples
  38. $(GM2) $(INCLUDES) $(GM2FLAGS) $< $(OBJS) -o $@ $(SDL_LIB)
  39. $(BLD)/showcases:
  40. mkdir -p $(BLD)/showcases
  41. showcases: $(BLD)/showcases $(OBJS) $(addprefix $(BLD)/showcases/,$(SHOWCASES))
  42. $(BLD)/showcases/%: showcases/%.mod $(OBJS) | $(BLD)/showcases
  43. $(GM2) $(INCLUDES) $(GM2FLAGS) $< $(OBJS) -o $@ $(SDL_LIB)
  44. check: tests
  45. ./tests/run_tests.sh
  46. clean:
  47. rm -rf $(BLD)