/mk/dist.mk

http://github.com/jruderman/rust · Makefile · 112 lines · 90 code · 19 blank · 3 comment · 4 complexity · 0f29db533d8e4a26db27b1b9043c146b MD5 · raw file

  1. ######################################################################
  2. # Distribution
  3. ######################################################################
  4. PKG_NAME := rust
  5. PKG_DIR = $(PKG_NAME)-$(CFG_RELEASE)
  6. PKG_TAR = $(PKG_DIR).tar.gz
  7. ifdef CFG_ISCC
  8. PKG_ISS = $(wildcard $(S)src/etc/pkg/*.iss)
  9. PKG_ICO = $(S)src/etc/pkg/rust-logo.ico
  10. PKG_EXE = $(PKG_DIR)-install.exe
  11. endif
  12. PKG_GITMODULES := $(S)src/libuv $(S)src/llvm
  13. PKG_FILES := \
  14. $(S)LICENSE.txt $(S)README.md \
  15. $(S)configure $(S)Makefile.in \
  16. $(S)man \
  17. $(S)doc \
  18. $(addprefix $(S)src/, \
  19. README.txt \
  20. cargo \
  21. rustc \
  22. compiletest \
  23. etc \
  24. fuzzer \
  25. libcore \
  26. libsyntax \
  27. libstd \
  28. rt \
  29. rustdoc \
  30. rustllvm \
  31. snapshots.txt \
  32. test) \
  33. $(PKG_GITMODULES) \
  34. $(filter-out Makefile config.stamp config.mk, \
  35. $(MKFILE_DEPS))
  36. UNROOTED_PKG_FILES := $(patsubst $(S)%,./%,$(PKG_FILES))
  37. ifdef CFG_ISCC
  38. LICENSE.txt: $(S)LICENSE.txt
  39. cp $< $@
  40. %.iss: $(S)src/etc/pkg/%.iss
  41. cp $< $@
  42. %.ico: $(S)src/etc/pkg/%.ico
  43. cp $< $@
  44. $(PKG_EXE): rust.iss modpath.iss LICENSE.txt rust-logo.ico \
  45. $(PKG_FILES) all rustc-stage3
  46. @$(call E, ISCC: $@)
  47. $(Q)"$(CFG_ISCC)" $<
  48. endif
  49. $(PKG_TAR): $(PKG_FILES)
  50. @$(call E, making dist dir)
  51. $(Q)rm -Rf dist
  52. $(Q)mkdir -p dist/$(PKG_DIR)
  53. $(Q)tar \
  54. -C $(S) \
  55. --exclude-vcs \
  56. --exclude=*~ \
  57. --exclude=*/llvm/test/*/*.ll \
  58. --exclude=*/llvm/test/*/*.td \
  59. --exclude=*/llvm/test/*/*.s \
  60. --exclude=*/llvm/test/*/*/*.ll \
  61. --exclude=*/llvm/test/*/*/*.td \
  62. --exclude=*/llvm/test/*/*/*.s \
  63. -c $(UNROOTED_PKG_FILES) | tar -x -C dist/$(PKG_DIR)
  64. $(Q)tar -czf $(PKG_TAR) -C dist $(PKG_DIR)
  65. $(Q)rm -Rf dist
  66. .PHONY: dist distcheck
  67. ifdef CFG_WINDOWSY
  68. dist: $(PKG_EXE)
  69. distcheck: dist
  70. @echo
  71. @echo -----------------------------------------------
  72. @echo $(PKG_EXE) ready for distribution
  73. @echo -----------------------------------------------
  74. else
  75. dist: $(PKG_TAR)
  76. distcheck: $(PKG_TAR)
  77. $(Q)rm -Rf dist
  78. $(Q)mkdir -p dist
  79. @$(call E, unpacking $(PKG_TAR) in dist/$(PKG_DIR))
  80. $(Q)cd dist && tar -xzf ../$(PKG_TAR)
  81. @$(call E, configuring in dist/$(PKG_DIR)-build)
  82. $(Q)mkdir -p dist/$(PKG_DIR)-build
  83. $(Q)cd dist/$(PKG_DIR)-build && ../$(PKG_DIR)/configure
  84. @$(call E, making 'check' in dist/$(PKG_DIR)-build)
  85. $(Q)+make -C dist/$(PKG_DIR)-build check
  86. @$(call E, making 'clean' in dist/$(PKG_DIR)-build)
  87. $(Q)+make -C dist/$(PKG_DIR)-build clean
  88. $(Q)rm -Rf dist
  89. @echo
  90. @echo -----------------------------------------------
  91. @echo $(PKG_TAR) ready for distribution
  92. @echo -----------------------------------------------
  93. endif