From: Ian Lynagh Date: Fri, 9 Mar 2007 17:43:07 +0000 (+0000) Subject: Remove duplication in binary dist rules X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=410db5b555b74beb68aa39de950c2ca0e9c89f8e Remove duplication in binary dist rules Rather than building complex sh stuff and echoing what we're doing ourselves, use make rules to do the looping and let make print things out. --- diff --git a/Makefile b/Makefile index ab4f594..3b0ab36 100644 --- a/Makefile +++ b/Makefile @@ -241,40 +241,31 @@ ifeq "$(darwin_TARGET_OS)" "1" BIN_DIST_TOP+=mk/fix_install_names.sh endif -.PHONY: binary-dist-pre binary-dist binary-pack +.PHONY: binary-dist-pre% binary-dist binary-pack -binary-dist:: binary-dist-pre +BINARY_DIST_PRE_RULES=$(foreach d,$(BinDistDirs),binary-dist-pre-$d) + +binary-dist:: binary-dist-pre $(BINARY_DIST_PRE_RULES) binary-dist-pre:: ifeq "$(BIN_DIST)" "" - @echo "WARNING: To run the binary-dist target, you need to set BIN_DIST=1 in mk/build.mk" && exit 1 + @echo "WARNING: To run the binary-dist target, you need to set BIN_DIST=1 in mk/build.mk" + @false endif -rm -rf $(BIN_DIST_DIR) -$(RM) $(BIN_DIST_DIR).tar.gz - @for i in $(BinDistDirs); do \ - if test -d "$$i"; then \ - echo $(MKDIRHIER) $(BIN_DIST_DIR)/bin/$(TARGETPLATFORM); \ - $(MKDIRHIER) $(BIN_DIST_DIR)/bin/$(TARGETPLATFORM); \ - echo $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM); \ - $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM); \ - echo $(MKDIRHIER) $(BIN_DIST_DIR)/share; \ - $(MKDIRHIER) $(BIN_DIST_DIR)/share; \ - echo $(MAKE) -C $$i $(MFLAGS) $(INSTALL_STAGE) install \ - prefix=$(BIN_DIST_DIR) \ - exec_prefix=$(BIN_DIST_DIR) \ - bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \ - libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \ - libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \ - datadir=$(BIN_DIST_DIR)/share; \ - $(MAKE) -C $$i $(MFLAGS) $(INSTALL_STAGE) install \ - prefix=$(BIN_DIST_DIR) \ - exec_prefix=$(BIN_DIST_DIR) \ - bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \ - libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \ - libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \ - datadir=$(BIN_DIST_DIR)/share; \ - fi; \ - done + $(MKDIRHIER) $(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) + $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) + $(MKDIRHIER) $(BIN_DIST_DIR)/share + +$(BINARY_DIST_PRE_RULES): binary-dist-pre-%: + $(MAKE) -C $* $(MFLAGS) $(INSTALL_STAGE) install \ + prefix=$(BIN_DIST_DIR) \ + exec_prefix=$(BIN_DIST_DIR) \ + bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \ + libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \ + libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \ + datadir=$(BIN_DIST_DIR)/share binary-dist:: @for i in $(BIN_DIST_TOP); do \