X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Futils%2Fghc-pkg%2FMakefile;h=1cad68944bbaf92746cf01c0d0c2edc3d8fa73ee;hb=78ec99690e5b21ca35017941fdd5f77b9008d98c;hp=e12187c0e9a661f72540e578c039e1c7a4640782;hpb=aa35c9d31be311972cc6b82250d913355f9bee9b;p=ghc-hetmet.git diff --git a/ghc/utils/ghc-pkg/Makefile b/ghc/utils/ghc-pkg/Makefile index e12187c..1cad689 100644 --- a/ghc/utils/ghc-pkg/Makefile +++ b/ghc/utils/ghc-pkg/Makefile @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------------- -# $Id: Makefile,v 1.7 2001/03/27 13:38:03 simonmar Exp $ +# $Id: Makefile,v 1.22 2003/06/04 15:18:29 panne Exp $ TOP=../.. include $(TOP)/mk/boilerplate.mk @@ -10,40 +10,60 @@ INSTALLING=1 # ----------------------------------------------------------------------------- # ghc-pkg.bin -HS_PROG = ghc-pkg.bin -SRC_HC_OPTS += -cpp -DPKG_TOOL -DWANT_PRETTY -package lang \ - -package util -package text +SRC_HC_OPTS += -cpp -DPKG_TOOL -DWANT_PRETTY + +ghc_ge_504 = $(shell if (test $(GhcCanonVersion) -ge 504); then echo YES; else echo NO; fi) + +ifeq "$(ghc_ge_504)" "NO" +SRC_HC_OPTS += -package lang -package util -package text +endif -INSTALL_LIBEXECS = $(HS_PROG) +# On Windows, ghc-pkg is a standalone program +# ($bindir/ghc-pkg.exe), whereas on Unix it needs a wrapper script +# to pass the appropriate flag to the real binary +# ($libexecdir/ghc-pkg.bin) so that it can find package.conf. +ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32" +HS_PROG = ghc-pkg.exe +INSTALL_PROGS += $(HS_PROG) +else +HS_PROG = ghc-pkg.bin +INSTALL_LIBEXECS += $(HS_PROG) +endif # ----------------------------------------------------------------------------- # ghc-pkg script ifeq "$(INSTALLING)" "1" ifeq "$(BIN_DIST)" "1" -GHCPKGBIN=$$\"\"libdir/$(HS_PROG) +GHCPKGBIN=$$\"\"libexecdir/$(HS_PROG) PKGCONF=$$\"\"libdir/package.conf else -GHCPKGBIN=$(libdir)/$(HS_PROG) +GHCPKGBIN=$(libexecdir)/$(HS_PROG) PKGCONF=$(libdir)/package.conf endif # BIN_DIST else GHCPKGBIN=$(FPTOOLS_TOP_ABS)/ghc/utils/ghc-pkg/$(HS_PROG) -PKGCONF=$(FPTOOLS_TOP_ABS)/ghc/driver/package.conf.inplace +PKGCONF=$(FPTOOLS_TOP_ABS_PLATFORM)/ghc/driver/package.conf.inplace endif +ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32" INSTALLED_SCRIPT_PROG = ghc-pkg-$(ProjectVersion) +endif INPLACE_SCRIPT_PROG = ghc-pkg-inplace SCRIPT_OBJS = ghc-pkg.sh INTERP = $(SHELL) SCRIPT_SUBST_VARS = GHCPKGBIN PKGCONFOPT +ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32" INSTALL_SCRIPTS += $(SCRIPT_PROG) +endif PKGCONFOPT = -f $(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 @@ -52,8 +72,18 @@ endif # don't recurse on 'make install' # ifeq "$(INSTALLING)" "1" -all clean distclean maintainer-clean :: +all :: $(HS_PROG) $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@ +clean distclean maintainer-clean :: + $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@ +endif + +# ghc-pkg is needed to boot in ghc/rts and library dirs +# Do a recursive 'make all' after generating dependencies, because this +# will work with 'make -j'. +ifneq "$(BootingFromHc)" "YES" +boot :: depend + $(MAKE) all endif include $(TOP)/mk/target.mk