Makefile 940 B

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