Makefile 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. NAME = WalrusRPG
  2. DEBUG = FALSE
  3. CFLAGS_COMMON = -Wall -W -marm -fdiagnostics-color=always -DGIT_VERSION='"$(BRANCH_NAME)-$(COMMIT_NUMBER)"'
  4. ifeq ($(DEBUG),FALSE)
  5. CFLAGS_COMMON += -Ofast -flto
  6. else
  7. CFLAGS_COMMON += -O0 -g
  8. endif
  9. CC = nspire-gcc
  10. CFLAGS = $(CFLAGS_COMMON) -std=gnu11
  11. CPP = nspire-g++
  12. CPPFLAGS = $(CFLAGS_COMMON) -std=gnu++11
  13. LDFLAGS = $(CFLAGS_COMMON) -Wl,--gc-sections
  14. ZEHN = genzehn
  15. ZEHNFLAGS = --name "$(NAME)" --compress
  16. SRCDIR = src
  17. SOURCES_C = art/sprites.c $(wildcard $(SRCDIR)/*.c)
  18. SOURCES_CPP = $(wildcard $(SRCDIR)/*.cpp)
  19. OBJS = $(patsubst %.c,%.o,$(SOURCES_C)) $(patsubst %.cpp,%.o,$(SOURCES_CPP))
  20. INCLUDE = -I include -I art -I external/tinystl/include
  21. DISTDIR = bin
  22. ELF = $(DISTDIR)/$(NAME).elf
  23. EXE = $(DISTDIR)/$(NAME).tns
  24. all: versionning sprites $(EXE)
  25. .PHONY: format clean sprites all run versionning
  26. versionning:
  27. @$(SHELL) versionning.sh
  28. sprites:
  29. @$(MAKE) -C art/
  30. art/sprites.c: sprites
  31. %.o: %.c| sprites versionning
  32. @echo "CC: $@"
  33. @$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
  34. %.o: %.cpp| sprites versionning
  35. @echo "CPP: $@"
  36. @$(CPP) $(CPPFLAGS) $(INCLUDE) -c $< -o $@
  37. $(ELF): $(OBJS) |sprites
  38. @mkdir -p $(DISTDIR)
  39. @echo "CCLD: $@"
  40. @+$(CC) $(LDFLAGS) $^ -o $(ELF)
  41. $(EXE): $(ELF)
  42. @mkdir -p $(DISTDIR)
  43. @echo "ZEHN: $@"
  44. @$(ZEHN) --input $(ELF) --output $(EXE) $(ZEHNFLAGS)
  45. clean:
  46. rm -rf $(DISTDIR)
  47. rm -f $(OBJS)
  48. @$(MAKE) -C art/ clean
  49. format:
  50. clang-format -i -style=file src/*.c src/*.cpp include/*.h
  51. run: all
  52. tilp -ns $(EXE) > /dev/null