X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=Makefile;h=f65f2bddee84858e5cd7c58814e28bb5f386c14a;hp=527707148aacdff75df6735e57a516490f1ad4bf;hb=4cc1ed3b25dd2c565341665b3b4175dfdbc4328f;hpb=c222ce6d2dcde7dcef36d95fc225fd65d56bdb63 diff --git a/Makefile b/Makefile index 5277071..f65f2bd 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 # @@ -59,12 +67,12 @@ include $(TOP)/mk/boilerplate.mk # We can't 'make boot' in libraries until stage1 is built ifeq "$(BootingFromHc)" "YES" -SUBDIRS_BUILD = gmp includes rts compat compiler docs utils driver +SUBDIRS_BUILD = includes rts compat compiler docs utils driver else -SUBDIRS_BUILD = gmp includes compat utils driver docs compiler rts libraries/Cabal/doc +SUBDIRS_BUILD = includes compat utils driver docs compiler rts libraries/Cabal/doc endif -SUBDIRS = gmp includes compat utils driver docs rts libraries compiler libraries/Cabal/doc +SUBDIRS = gmp libffi includes compat utils driver docs rts libraries compiler libraries/Cabal/doc # Sanity check that all the boot libraries are in the tree, to catch # failure to run darcs-all. @@ -90,6 +98,9 @@ endif endif stage1 : $(GCC_LIB_DEP) check-packages + $(MAKE) -C libraries boot + $(MAKE) -C gmp all + $(MAKE) -C libffi all $(MAKE) -C utils/mkdependC boot @case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \ for i in $(SUBDIRS_BUILD); do \ @@ -108,13 +119,20 @@ stage1 : $(GCC_LIB_DEP) check-packages $(MAKE) --no-print-directory -C $$i $(MFLAGS) all; \ if [ $$? -eq 0 -o $$x_on_err -eq 0 ] ; then true; else exit 1; fi; \ done - $(MAKE) -C libraries boot $(MAKE) -C libraries all +# When making distributions (i.e., whether with binary-dist or using the +# vanilla install target to create an installer package), 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 explicitly build a second version with the stage 1 +# compiler of all utils that get installed and of all extra support binaries +# includes in binary dists. stage2 : check-packages $(MAKE) -C compiler boot stage=2 $(MAKE) -C compiler stage=2 + stage3 : check-packages $(MAKE) -C compiler boot stage=3 $(MAKE) -C compiler stage=3 @@ -227,7 +245,7 @@ install-docs :: # ----------------------------------------------------------------------------- # Making a binary distribution # -# `dist' `binary-dist' `binary-dist-macos' +# `dist' `binary-dist' # Create a distribution tar file for this program. The tar file # should be set up so that the file names in the tar file start with # a subdirectory name which is the name of the package it is a @@ -244,30 +262,13 @@ install-docs :: # that are in the distribution, to make sure they are up to date in # the distribution. See Making Releases. # -# binary-dist is a GHC addition for binary distributions and -# binary-dist-macos is the Mac OS X-specific variant creating an -# installer package for GHC.framework. +# binary-dist is a GHC addition for binary distributions # binary-dist:: -rm -rf $(BIN_DIST_DIR) -$(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" binary-dist:: @@ -301,7 +302,7 @@ ifeq "$(darwin_TARGET_OS)" "1" BIN_DIST_TOP+=mk/fix_install_names.sh endif -.PHONY: binary-dist-pre% binary-dist binary-dist-macos +.PHONY: binary-dist-pre% binary-dist binary-dist:: binary-dist-pre @@ -347,7 +348,7 @@ binary-dist:: echo "HaveLibGmp = $(HaveLibGmp)" >> $(VARFILE) echo "GhcLibsWithUnix = $(GhcLibsWithUnix)" >> $(VARFILE) echo "GhcWithInterpreter = $(GhcWithInterpreter)" >> $(VARFILE) - echo "GhcHasReadline = $(GhcHasReadline)" >> $(VARFILE) + echo "GhcHasEditline = $(GhcHasEditline)" >> $(VARFILE) echo "BootingFromHc = $(BootingFromHc)" >> $(VARFILE) echo "XMLDocWays = $(XMLDocWays)" >> $(VARFILE) # We won't actually use xsltproc, but we need to know if it's "" or not @@ -419,36 +420,26 @@ publish-binary-dist :: binary-dist:: @echo "Mechanical and super-natty! Inspect the result and *if* happy; freeze, sell and get some sleep!" -ifeq "$(darwin_TARGET_OS)" "1" - -# Wrap a binary dist as a MacOS framework and put it into an installer package. +# ----------------------------------------------------------------------------- +# 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 -# The ProjectVersionInt is GHC's idea of an API version and hence determines -# the framework version. -FRAMEWORK_VERSION = $(ProjectVersionInt) +ifeq "$(darwin_TARGET_OS)" "1" -# Xcode requires CURRENT_PROJECT_VERSION to be an int or float. We use this -# only as the build version (aka CFBundleVersion). -CURRENT_PROJECT_VERSION = $(ProjectVersionInt).$(ProjectPatchLevel) +.PHONY: framework-pkg, framework-binary-dist -# The user-visible CFBundleShortVersionString is set to the standard GHC -# version number. -SHORT_VERSION_STRING = $(ProjectVersion) +framework-pkg: + $(MAKE) -C distrib/MacOS framework-pkg -# Instead of making 'binary-dist' a Makefile dependency, we let xcodebuild call -# 'make binary-dist'. This has the advantage that xcode knows the framework -# path into which the distribution should be installed and can instruct -# binary-dist to put it into the right place without copying the whole tree yet -# another time. -# -binary-dist-macos: - (cd distrib/MacOS; \ - xcodebuild CURRENT_PROJECT_VERSION=$(CURRENT_PROJECT_VERSION)\ - SHORT_VERSION_STRING=$(SHORT_VERSION_STRING)\ - FRAMEWORK_VERSION=$(FRAMEWORK_VERSION)\ - CURRENT_LIBRARY_VERSION=$(FRAMEWORK_VERSION)) - (cd distrib/MacOS; \ - !!!Call the packager!!! ) +framework-binary-dist: + $(MAKE) -C distrib/MacOS framework-binary-dist endif @@ -478,7 +469,7 @@ SRC_DIST_DIRS += mk docs distrib bindisttest $(filter-out docs distrib libraries SRC_DIST_FILES += \ configure.ac config.guess config.sub configure \ aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \ - ghc.spec.in extra-gcc-opts.in VERSION boot + ghc.spec.in ghc.spec extra-gcc-opts.in VERSION boot # ----------------------------------------------------------------------------- # Source distributions @@ -568,7 +559,7 @@ hc-file-bundle : CLEAN_FILES += hc-files-to-go *-hc.tar.gz DIST_CLEAN_FILES += config.cache config.status mk/config.h mk/stamp-h \ - ghc.spec docs/users_guide/ug-book.xml extra-gcc-opts + docs/users_guide/ug-book.xml extra-gcc-opts # don't clean config.mk: it's needed when cleaning stuff later on LATE_DIST_CLEAN_FILES += mk/config.mk