X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=Makefile;h=b89257fe3804d37dc0fbb8b21259a616cc5406fa;hp=81437acf3a89dcbdeb3fca1ac00e1c7c9f5a30f6;hb=c72f2cb1f7eb299f9289b7a33233174d470cfa0f;hpb=9e1605d993c10a51cac09d7d5750d0f167b64c00 diff --git a/Makefile b/Makefile index 81437ac..b89257f 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,14 @@ # binary-dist # Builds a binary distribution # +# framework-pkg [MacOS only] +# Builds /Library/Frameworks/GHC.framework wrapped into a Mac +# installer package +# +# framework-binary-dist [MacOS only] +# Builds GHC.framework encapsulating a binary distribution +# (to give a relocatable framework) +# # hc-file-bundle # Builds an HC-file bundle, for bootstrapping # @@ -249,17 +257,22 @@ install-docs :: binary-dist:: -rm -rf $(BIN_DIST_DIR) - -$(RM) $(BIN_DIST_DIR).tar.gz + -$(RM) $(BIN_DIST_TARBALL) # When making bindists, we can have problems if some things (e.g. ghc-pkg) # are compiled with the bootstrapping compiler and some (e.g. the stage 2 # compiler) with the stage1 compiler. See #1860 for an example. # Thus we rebuild the utils with stage 1 here. This is a bit unpleasant, # as binary-dist really shouldn't actually build anything, but it works. +# We need to do the same for utilities used during library package installation. binary-dist:: $(MAKE) -C utils clean $(MAKE) -C utils UseStage1=YES boot $(MAKE) -C utils UseStage1=YES + $(RM) -f libraries/ifBuildable/ifBuildable + $(MAKE) -C libraries UseStage1=YES ifBuildable/ifBuildable + $(RM) -f libraries/installPackage/installPackage + $(MAKE) -C libraries UseStage1=YES installPackage/installPackage ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" @@ -294,7 +307,7 @@ 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-dist:: binary-dist-pre @@ -360,7 +373,7 @@ binary-dist :: tar-binary-dist .PHONY: tar-binary-dist tar-binary-dist: ( cd $(BIN_DIST_TOPDIR_ABS); tar cf - $(BIN_DIST_NAME) | bzip2 >$(BIN_DIST_TARBALL) ) - ( cd $(BIN_DIST_TOPDIR_ABS); bunzip2 -c $(BIN_DIST_TARBALL) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >bin-manifest-$(ProjectVersion) ) + ( cd $(BIN_DIST_TOPDIR_ABS); bunzip2 -c $(BIN_DIST_TARBALL) | tar tf - | sed "s/^ghc-$(ProjectVersion)/fptools/" | sort >$(FPTOOLS_TOP_ABS)/bin-manifest-$(ProjectVersion) ) PUBLISH_FILES = $(BIN_DIST_TARBALL) @@ -380,21 +393,21 @@ endif # Upload the distribution and documentation ifneq "$(PublishLocation)" "" -publish :: publish-binary-dist +publish :: + make publish-binary-dist 'prefix=$(BIN_DIST_INST_DIR)' endif +nTimes = set -e; for i in `seq 1 $(1)`; do echo Try "$$i: $(2)"; if $(2); then break; fi; done + .PHONY: publish-binary-dist publish-binary-dist :: - @for f in $(PUBLISH_FILES); do \ - for i in 0 1 2 3 4 5 6 7 8 9; do \ - echo "Try $$i: $(PublishCp) $$f $(PublishLocation)/dist"; \ - if $(PublishCp) $$f $(PublishLocation)/dist; then break; fi; \ - done \ + @for f in $(PUBLISH_FILES); \ + do $(call nTimes,10,$(PublishCp) $$f $(PublishLocation)/dist); \ done -# You need to first make binddisttest, and then run -# make publish 'prefix=$(BIN_DIST_INST_DIR)' -# for this to find the right place. +# You need to "make binddisttest" before publishing the docs, as it +# works by publish setting $(prefix) to inside the binddisttest +# directory so $(docdir) points to the right place. # We assume that Windows means Cygwin, as we can't just use docdir # unchanged or rsync (really SSH?) thinks that c:/foo means /foo on @@ -407,12 +420,35 @@ PUBLISH_DOCDIR = $(docdir) endif publish-binary-dist :: - $(PublishCp) -r $(PUBLISH_DOCDIR)/* $(PublishLocation)/docs + $(call nTimes,10,$(PublishCp) -r "$(PUBLISH_DOCDIR)"/* $(PublishLocation)/docs) binary-dist:: @echo "Mechanical and super-natty! Inspect the result and *if* happy; freeze, sell and get some sleep!" # ----------------------------------------------------------------------------- +# Building MacOS installer packages +# +# 'framework-pkg' +# Create an installer package for /Library/Frameworks/GHC.framework +# +# 'framework-binary-dist' +# Create an installer package for GHC.framework encapsulating a +# binary-dist to make it relocatable +# FIXME: This is only partially implemented so far + +ifeq "$(darwin_TARGET_OS)" "1" + +.PHONY: framework-pkg, framework-binary-dist + +framework-pkg: + $(MAKE) -C distrib/MacOS framework-pkg + +framework-binary-dist: + $(MAKE) -C distrib/MacOS framework-binary-dist + +endif + +# ----------------------------------------------------------------------------- # Building source distributions # # Do it like this: