GHC new build system megapatch
[ghc-hetmet.git] / utils / ghc-pkg / ghc.mk
1 # -----------------------------------------------------------------------------
2 # Bootstrapping ghc-pkg
3
4 utils/ghc-pkg_dist_PROG = ghc-pkg
5
6 $(GHC_PKG_INPLACE) : utils/ghc-pkg/dist/build/$(utils/ghc-pkg_dist_PROG)$(exeext) $(MKDIRHIER)
7         $(MKDIRHIER) $(dir $(INPLACE_PACKAGE_CONF))
8         echo "[]" > $(INPLACE_PACKAGE_CONF)
9 ifeq "$(Windows)" "YES"
10         cp $< $@
11 else
12         $(RM) $@
13         echo "#!/bin/sh" >>$@
14         echo "PKGCONF=$(TOP)/$(INPLACE_PACKAGE_CONF)" >>$@
15         echo '$(TOP)/utils/ghc-pkg/dist/build/$(utils/ghc-pkg_dist_PROG) --global-conf $$PKGCONF $${1+"$$@"}' >> $@
16         chmod +x $@
17 endif
18
19 # depend on ghc-cabal, otherwise we build Cabal twice when building in parallel
20 utils/ghc-pkg/dist/build/$(utils/ghc-pkg_dist_PROG)$(exeext): utils/ghc-pkg/Main.hs utils/ghc-pkg/Version.hs $(GHC_CABAL_INPLACE) $(MKDIRHIER)
21         $(MKDIRHIER) bootstrapping
22         $(MKDIRHIER) utils/ghc-pkg/dist/build
23         $(GHC) --make utils/ghc-pkg/Main.hs -o $@ \
24                -Wall \
25                -DCABAL_VERSION=$(CABAL_VERSION) \
26                -odir  bootstrapping \
27                -hidir bootstrapping \
28                -iutils/ghc-pkg \
29                -XCPP -XExistentialQuantification -XDeriveDataTypeable \
30                -ilibraries/Cabal \
31                -ilibraries/filepath \
32                -ilibraries/extensible-exceptions \
33                -ilibraries/hpc
34
35 utils/ghc-pkg/Version.hs: mk/config.mk
36         $(RM) -f $@
37         echo "module Version where"                    >> $@
38         echo "version, targetOS, targetARCH :: String" >> $@
39         echo "version    = \"$(ProjectVersion)\""      >> $@
40         echo "targetOS   = \"$(TargetOS_CPP)\""        >> $@
41         echo "targetARCH = \"$(TargetArch_CPP)\""      >> $@
42
43 $(eval $(call clean-target,utils/ghc-pkg,dist,\
44    utils/ghc-pkg/dist \
45    utils/ghc-pkg/Version.hs))
46
47 # -----------------------------------------------------------------------------
48 # Building ghc-pkg with stage 1
49
50 utils/ghc-pkg_dist-install_PROG = ghc-pkg
51 utils/ghc-pkg_dist-install_MODULES = Main Version
52 utils/ghc-pkg_dist-install_DEPS = Cabal
53 utils/ghc-pkg_dist-install_SHELL_WRAPPER = YES
54 utils/ghc-pkg_dist-install_INSTALL_SHELL_WRAPPER = YES
55 utils/ghc-pkg_dist-install_INSTALL_SHELL_WRAPPER_NAME = ghc-pkg-$(ProjectVersion)
56 utils/ghc-pkg_dist-install_INSTALL_INPLACE = NO
57
58 $(eval $(call build-prog,utils/ghc-pkg,dist-install,1))
59
60 ifeq "$(Windows)" "NO"
61 install: install_utils/ghc-pkg_link
62
63 .PNONY: install_utils/ghc-pkg_link
64 install_utils/ghc-pkg_link: 
65         $(MKDIRHIER) $(DESTDIR)$(bindir)
66         $(RM) -f $(DESTDIR)$(bindir)/ghc-pkg
67         $(LN_S) ghc-pkg-$(ProjectVersion) $(DESTDIR)$(bindir)/ghc-pkg
68 endif
69