[project @ 2004-08-28 16:51:18 by panne]
[ghc-hetmet.git] / ghc / utils / ghc-pkg / Makefile
1 # -----------------------------------------------------------------------------
2
3 TOP=../..
4 include $(TOP)/mk/boilerplate.mk
5
6 # hack for ghci-inplace script, see below
7 INSTALLING=1
8
9 # -----------------------------------------------------------------------------
10 # ghc-pkg.bin
11
12 ghc_ge_504 = $(shell if (test $(GhcCanonVersion) -ge 504); then echo YES; else echo NO; fi)
13 ghc_le_600 = $(shell if (test $(GhcCanonVersion) -le 600); then echo YES; else echo NO; fi)
14
15 SRC_HC_OPTS      += -cpp -DPKG_TOOL -DWANT_PRETTY
16
17 ifeq "$(HOSTPLATFORM)$(ghc_le_600)" "i386-unknown-mingw32YES"
18 SRC_HC_OPTS += -D'GHC_PKG_VERSION=\"$(ProjectVersion)\"'
19 else
20 SRC_HC_OPTS += -D'GHC_PKG_VERSION="$(ProjectVersion)"'
21 endif
22
23 ifeq "$(ghc_ge_504)" "NO"
24 SRC_HC_OPTS +=  -package lang -package util -package text
25 endif
26
27 # On Windows, ghc-pkg is a standalone program
28 # ($bindir/ghc-pkg.exe), whereas on Unix it needs a wrapper script
29 # to pass the appropriate flag to the real binary
30 # ($libexecdir/ghc-pkg.bin) so that it can find package.conf.
31 ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
32 HS_PROG           = ghc-pkg.exe
33 INSTALL_PROGS    += $(HS_PROG)
34 else
35 HS_PROG           = ghc-pkg.bin
36 INSTALL_LIBEXECS += $(HS_PROG)
37 endif
38
39 # -----------------------------------------------------------------------------
40 # ghc-pkg script
41
42 ifeq "$(INSTALLING)" "1"
43 ifeq "$(BIN_DIST)"   "1"
44 GHCPKGBIN=$$\"\"libexecdir/$(HS_PROG)
45 PKGCONF=$$\"\"libdir/package.conf
46 else
47 GHCPKGBIN=$(libexecdir)/$(HS_PROG)
48 PKGCONF=$(libdir)/package.conf
49 endif # BIN_DIST
50 else
51 GHCPKGBIN=$(FPTOOLS_TOP_ABS)/ghc/utils/ghc-pkg/$(HS_PROG)
52 PKGCONF=$(FPTOOLS_TOP_ABS_PLATFORM)/ghc/driver/package.conf.inplace
53 endif
54
55 ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
56 INSTALLED_SCRIPT_PROG  = ghc-pkg-$(ProjectVersion)
57 endif
58 INPLACE_SCRIPT_PROG    = ghc-pkg-inplace
59
60 SCRIPT_OBJS       = ghc-pkg.sh
61 INTERP            = $(SHELL)
62 SCRIPT_SUBST_VARS = GHCPKGBIN PKGCONFOPT
63 ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
64 INSTALL_SCRIPTS  += $(SCRIPT_PROG)
65 endif
66 PKGCONFOPT        = -f $(PKGCONF)
67
68 ifeq "$(INSTALLING)" "1"
69 SCRIPT_PROG     =  $(INSTALLED_SCRIPT_PROG)
70 ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
71 LINK            =  ghc-pkg
72 endif
73 else
74 SCRIPT_PROG     =  $(INPLACE_SCRIPT_PROG)
75 endif
76
77 # -----------------------------------------------------------------------------
78 # don't recurse on 'make install'
79 #
80 ifeq "$(INSTALLING)" "1"
81 all :: $(HS_PROG)
82         $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@
83 clean distclean maintainer-clean ::
84         $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@
85 endif
86
87 # ghc-pkg is needed to boot in ghc/rts and library dirs
88 # Do a recursive 'make all' after generating dependencies, because this
89 # will work with 'make -j'.
90 ifneq "$(BootingFromHc)" "YES"
91 boot :: depend
92         $(MAKE) all
93 endif
94
95 include $(TOP)/mk/target.mk