[project @ 2004-08-31 12:45:35 by simonmar]
[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
14 SRC_HC_OPTS      += -cpp -DPKG_TOOL -DWANT_PRETTY
15
16 ifeq "$(ghc_ge_504)" "NO"
17 SRC_HC_OPTS +=  -package lang -package util -package text
18 endif
19
20 # On Windows, ghc-pkg is a standalone program
21 # ($bindir/ghc-pkg.exe), whereas on Unix it needs a wrapper script
22 # to pass the appropriate flag to the real binary
23 # ($libexecdir/ghc-pkg.bin) so that it can find package.conf.
24 ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
25 HS_PROG           = ghc-pkg.exe
26 INSTALL_PROGS    += $(HS_PROG)
27 else
28 HS_PROG           = ghc-pkg.bin
29 INSTALL_LIBEXECS += $(HS_PROG)
30 endif
31
32 # -----------------------------------------------------------------------------=
33 # Create the Version.hs file
34
35 VERSION_HS = Version.hs
36 EXTRA_SRCS += $(VERSION_HS)
37
38 boot :: $(VERSION_HS)
39
40 Version.hs : $(TOP)/mk/version.mk
41         @$(RM) -f $(VERSION_HS)
42         @echo "Creating $(VERSION_HS) ... "
43         @echo "module Version where" >>$(VERSION_HS)
44         @echo "version = \"$(ProjectVersion)\"" >> $(VERSION_HS)
45
46 # -----------------------------------------------------------------------------
47 # ghc-pkg script
48
49 ifeq "$(INSTALLING)" "1"
50 ifeq "$(BIN_DIST)"   "1"
51 GHCPKGBIN=$$\"\"libexecdir/$(HS_PROG)
52 PKGCONF=$$\"\"libdir/package.conf
53 else
54 GHCPKGBIN=$(libexecdir)/$(HS_PROG)
55 PKGCONF=$(libdir)/package.conf
56 endif # BIN_DIST
57 else
58 GHCPKGBIN=$(FPTOOLS_TOP_ABS)/ghc/utils/ghc-pkg/$(HS_PROG)
59 PKGCONF=$(FPTOOLS_TOP_ABS_PLATFORM)/ghc/driver/package.conf.inplace
60 endif
61
62 ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
63 INSTALLED_SCRIPT_PROG  = ghc-pkg-$(ProjectVersion)
64 endif
65 INPLACE_SCRIPT_PROG    = ghc-pkg-inplace
66
67 SCRIPT_OBJS       = ghc-pkg.sh
68 INTERP            = $(SHELL)
69 SCRIPT_SUBST_VARS = GHCPKGBIN PKGCONFOPT
70 ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
71 INSTALL_SCRIPTS  += $(SCRIPT_PROG)
72 endif
73 PKGCONFOPT        = -f $(PKGCONF)
74
75 ifeq "$(INSTALLING)" "1"
76 SCRIPT_PROG     =  $(INSTALLED_SCRIPT_PROG)
77 ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
78 LINK            =  ghc-pkg
79 endif
80 else
81 SCRIPT_PROG     =  $(INPLACE_SCRIPT_PROG)
82 endif
83
84 # -----------------------------------------------------------------------------
85 # don't recurse on 'make install'
86 #
87 ifeq "$(INSTALLING)" "1"
88 all :: $(HS_PROG)
89         $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@
90 clean distclean maintainer-clean ::
91         $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@
92 endif
93
94 # ghc-pkg is needed to boot in ghc/rts and library dirs
95 # Do a recursive 'make all' after generating dependencies, because this
96 # will work with 'make -j'.
97 ifneq "$(BootingFromHc)" "YES"
98 boot :: depend
99         $(MAKE) all
100 endif
101
102 include $(TOP)/mk/target.mk