Makefile 885 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. DEBUG = FALSE
  2. GCC = nspire-gcc
  3. GCCFLAGS = -Wall -W -marm
  4. ifeq ($(DEBUG),FALSE)
  5. GCCFLAGS += -Os
  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 *.cpp))
  15. OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) $(patsubst %.S,%.o,$(wildcard *.S)) $(CPPOBJS)
  16. ifneq ($(strip $(CPPOBJS)),)
  17. LDFLAGS += --cpp
  18. endif
  19. SOURCES = $(wildcard *.c) $(wildcard *.S) $(wildcard *.cpp)
  20. EXE = pokespire.tns
  21. DISTDIR = bin
  22. vpath %.tns $(DISTDIR)
  23. all: $(EXE)
  24. %.o: %.c headers
  25. $(GCC) $(GCCFLAGS) -c $<
  26. %.o: %.cpp headers
  27. $(GXX) $(GCCFLAGS) -c $<
  28. %.o: %.S headers
  29. $(AS) -c $<
  30. headers:
  31. makeheaders $(SOURCES)
  32. $(EXE): $(OBJS)
  33. mkdir -p $(DISTDIR)
  34. $(LD) $^ -o $(DISTDIR)/$@ $(LDFLAGS)
  35. ifeq ($(DEBUG),FALSE)
  36. @rm -f $(DISTDIR)/*.gdb
  37. endif
  38. clean:
  39. rm -f *.h *.o *.elf $(DISTDIR)/*.gdb $(DISTDIR)/$(EXE)