Makefile 847 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. LD := gcc
  2. CC := clang
  3. CFLAGS := -O3
  4. LDFLAGS := -nostartfiles
  5. BFFLAGS :=
  6. BFILES := $(patsubst %.b,%,$(wildcard *.b))
  7. .PHONY: check clean
  8. .PRECIOUS: $(addsuffix .ll,$(BFILES)) $(addsuffix -opt.ll,$(BFILES)) \
  9. $(addsuffix -c.c,$(BFILES)) $(addsuffix -nayuki.c,$(BFILES))
  10. bf: bf.ml
  11. ocamlopt -o $@ -g -I /usr/lib/ocaml/llvm-3.4 llvm.cmxa str.cmxa $<
  12. rm -f $@.cmi $@.cmx $@.o
  13. %-nayuki: LDFLAGS=
  14. %: %.o
  15. $(LD) -o $@ $< $(LDFLAGS)
  16. %.o: %.c
  17. $(CC) $(CFLAGS) -o $@ -c $<
  18. %-nayuki.c: %.b
  19. python bfc.py $< $@
  20. %.o: %.ll
  21. llc -filetype obj -o $@ $<
  22. %.ll: %.bc
  23. llvm-dis -o $@ $<
  24. %-opt.ll: %.ll
  25. opt -O3 -S -o $@ $<
  26. %.ll: %.b bf
  27. ./bf $(BFFLAGS) < $< > $@
  28. %-c.c: %.b bf
  29. ./bf $(BFFLAGS) -c < $< > $@
  30. %.dump: %
  31. objdump -d -M intel $< > $@
  32. check: hello-opt
  33. ./$<
  34. clean:
  35. rm -f bf *.cmi *.cmx *.ll *.bc *.o *.c *-opt *-c *-nayuki $(BFILES) *.dump