Makefile 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. DEBUG = FALSE
  2. GCC = nspire-gcc
  3. GCCFLAGS = -Wall -W -marm
  4. ifeq ($(DEBUG),FALSE)
  5. GCCFLAGS += -Ofast
  6. else
  7. GCCFLAGS += -O0 -g
  8. LDFLAGS += --debug
  9. endif
  10. AS = nspire-as
  11. GXX = nspire-g++
  12. LD = nspire-ld-bflt
  13. LDFLAGS =
  14. CPPOBJS = $(patsubst %.cpp,%.o,$(wildcard src/*.cpp))
  15. OBJS = $(patsubst %.c,%.o,$(wildcard src/*.c)) $(patsubst %.S,%.o,$(wildcard src/*.S)) $(CPPOBJS) art/sprites.o
  16. ifneq ($(strip $(CPPOBJS)),)
  17. LDFLAGS += --cpp
  18. endif
  19. HEADERS = $(patsubst %.o,%.h,$(OBJS))
  20. SOURCES = $(wildcard src/*.c) $(wildcard src/*.S) $(wildcard src/*.cpp) art/sprites.c
  21. EXE = pokespire.tns
  22. DISTDIR = bin
  23. vpath %.tns $(DISTDIR)
  24. all: $(EXE)
  25. %.o: %.c headers
  26. $(GCC) $(GCCFLAGS) -c $< -o $@
  27. %.o: %.cpp headers
  28. $(GXX) $(GCCFLAGS) -c $< -o $@
  29. %.o: %.S headers
  30. $(AS) -c $< -o $@
  31. headers: sprites
  32. makeheaders $(SOURCES)
  33. sprites:
  34. $(MAKE) -C art/
  35. $(EXE): $(OBJS)
  36. mkdir -p $(DISTDIR)
  37. $(LD) $^ -o $(DISTDIR)/$@ $(LDFLAGS)
  38. ifeq ($(DEBUG),FALSE)
  39. @rm -f $(DISTDIR)/*.gdb
  40. endif
  41. clean:
  42. rm -f *.elf $(DISTDIR)/*.gdb $(DISTDIR)/$(EXE) $(OBJS) $(HEADERS)
  43. $(MAKE) -C art/ clean
  44. run: all
  45. nspire-emu-send $(DISTDIR)/$(EXE)