Makefile 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. VERSION_SHORT = 0.1
  2. DEBUG = FALSE
  3. GCC = nspire-gcc
  4. GENZEHN = genzehn
  5. BUILD_DATE = $(shell date '+%Y-%m-%d')
  6. VERSION = $(shell git describe --always --dirty 2> /dev/null || echo $(VERSION_SHORT))
  7. GCCFLAGS = -std=gnu11 -Wall -Wextra -marm -fstrict-aliasing -fomit-frame-pointer -ffunction-sections -fdata-sections \
  8. -DBUILD_DATE=\"$(BUILD_DATE)\" -DVERSION=\"$(VERSION)\" -Wno-implicit-fallthrough -Wno-format-truncation
  9. LDFLAGS = -Wl,--gc-sections,--nspireio
  10. ZEHNFLAGS = --name "Duktape-nspire" --author "Legimet" --notice "JavaScript (ECMAScript) interpreter using Duktape"
  11. ifeq ($(DEBUG),FALSE)
  12. GCCFLAGS += -O3
  13. else
  14. GCCFLAGS += -O0 -g
  15. endif
  16. OBJS = $(patsubst %.c, %.o, $(shell find . -name \*.c))
  17. EXE = duktape
  18. DISTDIR = .
  19. vpath %.tns $(DISTDIR)
  20. vpath %.elf $(DISTDIR)
  21. all: $(EXE).tns
  22. %.o: %.c
  23. $(GCC) $(GCCFLAGS) -c $< -o $@
  24. module.o: module.c module.h
  25. $(GCC) $(GCCFLAGS) -c $< -o $@
  26. $(EXE).elf: $(OBJS)
  27. mkdir -p $(DISTDIR)
  28. $(GCC) $^ -o $@ $(LDFLAGS)
  29. $(EXE).zehn.tns: $(EXE).elf
  30. $(GENZEHN) --input $^ --output $@ $(ZEHNFLAGS)
  31. $(EXE).tns: $(EXE).zehn.tns
  32. make-prg $^ $@
  33. clean:
  34. rm -f $(OBJS) $(DISTDIR)/$(EXE).tns $(DISTDIR)/$(EXE).elf $(DISTDIR)/$(EXE).zehn.tns