X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=utils%2Fghc-pkg%2FMakefile;h=e4c8b7494822333d17a0e40c126019b017b18ca9;hp=c8a075d5b76d5d896d6330eaf1f0df50c46d99dc;hb=430453c5131592b6147a80202dc5f7fbe3f3d5fd;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/utils/ghc-pkg/Makefile b/utils/ghc-pkg/Makefile index c8a075d..e4c8b74 100644 --- a/utils/ghc-pkg/Makefile +++ b/utils/ghc-pkg/Makefile @@ -1,9 +1,6 @@ TOP=../.. include $(TOP)/mk/boilerplate.mk -# hack for ghci-inplace script, see below -INSTALLING=1 - # ----------------------------------------------------------------------------- # ghc-pkg.bin @@ -12,14 +9,12 @@ SRC_HC_OPTS += -cpp -Wall -fno-warn-name-shadowing -fno-warn-unused-matches # This causes libghccompat.a to be used: include $(GHC_COMPAT_DIR)/compat.mk +SRC_HC_OPTS += $(PACKAGE_CABAL) + # This is required because libghccompat.a must be built with # $(GhcHcOpts) because it is linked to the compiler, and hence # we must also build with $(GhcHcOpts) here: -SRC_HC_OPTS += $(GhcHcOpts) - -ifeq "$(ghc_ge_504)" "NO" -SRC_HC_OPTS += -package lang -package util -package text -endif +SRC_HC_OPTS += $(GhcHcOpts) $(GhcStage1HcOpts) # On Windows, ghc-pkg is a standalone program # ($bindir/ghc-pkg.exe), whereas on Unix it needs a wrapper script @@ -33,7 +28,7 @@ HS_PROG = ghc-pkg.bin INSTALL_LIBEXECS += $(HS_PROG) endif -# -----------------------------------------------------------------------------= +# ----------------------------------------------------------------------------- # Create the Version.hs file VERSION_HS = Version.hs @@ -55,49 +50,36 @@ DIST_CLEAN_FILES += $(VERSION_HS) # ----------------------------------------------------------------------------- # ghc-pkg script -ifeq "$(INSTALLING)" "1" -ifeq "$(BIN_DIST)" "1" -GHCPKGBIN=$$\"\"libexecdir/$(HS_PROG) -PKGCONF=$$\"\"libdir/package.conf -else -GHCPKGBIN=$(libexecdir)/$(HS_PROG) -PKGCONF=$(libdir)/package.conf -endif # BIN_DIST +ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32" +# See "MSys Note 3" in compiler/Makefile +INPLACE_SCRIPT=ghc-pkg-inplace.bat +all:: + $(RM) -f $(INPLACE_SCRIPT) + echo '@call $(subst /,\,$(FPTOOLS_TOP_ABS_PLATFORM)/utils/ghc-pkg/$(HS_PROG)) --global-conf $(FPTOOLS_TOP_ABS_PLATFORM)/driver/package.conf.inplace %*' >> $(INPLACE_SCRIPT) + $(EXECUTABLE_FILE) $(INPLACE_SCRIPT) else -GHCPKGBIN=$(FPTOOLS_TOP_ABS)/utils/ghc-pkg/$(HS_PROG) -PKGCONF=$(FPTOOLS_TOP_ABS_PLATFORM)/driver/package.conf.inplace -endif - -ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32" -INSTALLED_SCRIPT_PROG = ghc-pkg-$(ProjectVersion) +INPLACE_SCRIPT=ghc-pkg-inplace +all:: + $(RM) -f $(INPLACE_SCRIPT) + echo "#!$(SHELL)" >> $(INPLACE_SCRIPT) + echo "GHCPKGBIN=$(FPTOOLS_TOP_ABS)/utils/ghc-pkg/$(HS_PROG)" >> $(INPLACE_SCRIPT) + echo "PKGCONF=$(FPTOOLS_TOP_ABS_PLATFORM)/driver/package.conf.inplace" >> $(INPLACE_SCRIPT) + echo 'exec $$GHCPKGBIN --global-conf $$PKGCONF $${1+"$$@"}' >> $(INPLACE_SCRIPT) + $(EXECUTABLE_FILE) $(INPLACE_SCRIPT) endif -INPLACE_SCRIPT_PROG = ghc-pkg-inplace +CLEAN_FILES += $(INPLACE_SCRIPT) -SCRIPT_OBJS = ghc-pkg.sh -INTERP = $(SHELL) -SCRIPT_SUBST_VARS = GHCPKGBIN PKGCONFOPT ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32" -INSTALL_SCRIPTS += $(SCRIPT_PROG) -endif -PKGCONFOPT = --global-conf $(PKGCONF) - -ifeq "$(INSTALLING)" "1" -SCRIPT_PROG = $(INSTALLED_SCRIPT_PROG) -ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32" -LINK = ghc-pkg -endif -else -SCRIPT_PROG = $(INPLACE_SCRIPT_PROG) -endif - -# ----------------------------------------------------------------------------- -# don't recurse on 'make install' -# -ifeq "$(INSTALLING)" "1" -all :: $(HS_PROG) - $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@ -clean distclean maintainer-clean :: - $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@ +LINK = ghc-pkg +LINK_TARGET = $(LINK)-$(ProjectVersion) +INSTALLED_SCRIPT=$(bindir)/$(LINK_TARGET) +install:: + $(RM) -f $(INSTALLED_SCRIPT) + echo "#!$(SHELL)" >> $(INSTALLED_SCRIPT) + echo "GHCPKGBIN=$(libexecdir)/$(HS_PROG)" >> $(INSTALLED_SCRIPT) + echo "PKGCONF=$(libdir)/package.conf" >> $(INSTALLED_SCRIPT) + echo 'exec $$GHCPKGBIN --global-conf $$PKGCONF $${1+"$$@"}' >> $(INSTALLED_SCRIPT) + $(EXECUTABLE_FILE) $(INSTALLED_SCRIPT) endif # ghc-pkg is needed to boot in rts/ and library dirs