xcode build target for fixed /Library/Frameworks inst
[ghc-hetmet.git] / Makefile
index bceef03..b89257f 100644 (file)
--- a/Makefile
+++ b/Makefile
 #      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,7 +257,7 @@ 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
@@ -299,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
 
@@ -365,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)
 
@@ -389,13 +397,12 @@ 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 "make binddisttest" before publishing the docs, as it
@@ -413,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: