Makefile 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # Build the Scheme48 Reference Manual
  2. MAKEINFO=makeinfo
  3. MAKEINFO_INFO=$(MAKEINFO)
  4. MAKEINFO_HTML=$(MAKEINFO) --html --no-split
  5. MAKEINFO_PDF=$(MAKEINFO) --pdf
  6. TARGETS= scheme48
  7. scheme48_SOURCES:= scheme48.texi macros.texi intro-ack.texi \
  8. $(shell find -mindepth 2 -type f -name '*.texi')
  9. all: info html pdf
  10. info: $(TARGETS:=.info)
  11. html: $(TARGETS:=.html)
  12. pdf: $(TARGETS:=.pdf)
  13. %.info: %.texi $(%_SOURCES)
  14. @rm -f $@ $@-* $@.log
  15. $(MAKEINFO_INFO) $< -o $@ &>$@.log
  16. %.html: %.texi $(%_SOURCES)
  17. @rm -f $@ $@.log
  18. $(MAKEINFO_HTML) $< -o $@ &>$@.log
  19. %.pdf: %.texi $(%_SOURCES)
  20. # Rendering a PDF generates a huge amount of intermediate
  21. # garbage, so we use a temp directory, smoke, and mirrors.
  22. @rm -f $@ $@.log
  23. @tmp=$$(mktemp --tmpdir -d $@.XXXXX); \
  24. src=$$(realpath $<); \
  25. echo "$(MAKEINFO_PDF) $< -o $@ &>$@.log"; \
  26. ( cd $$tmp \
  27. && $(MAKEINFO_PDF) $$src -o $@ &>$@.log ) \
  28. && mv $$tmp/$@ .; \
  29. mv $$tmp/$@.log .; \
  30. rm -rf $$tmp
  31. @test -e $@
  32. clean:
  33. rm -f $(TARGETS:=.info) $(TARGETS:=.info-*) $(TARGETS:=.info.log)
  34. rm -f $(TARGETS:=.html) $(TARGETS:=.html.log)
  35. rm -f $(TARGETS:=.pdf) $(TARGETS:=.pdf.log)
  36. .PHONY: default all info html pdf clean