# -----------------------------------------------------------------------------
# ghc-pkg.bin
+# Beyond stage 1, honour any Mac OS X depolyment target options. If we use
+# these options in stage 1 we get a linker error if the bootstrap compiler is
+# for a more recent OS version
+ifeq "$(stage)" "2"
+SRC_CC_OPTS += $(MACOSX_DEPLOYMENT_CC_OPTS)
+SRC_HC_OPTS += $(addprefix -optc, $(MACOSX_DEPLOYMENT_CC_OPTS))
+SRC_LD_OPTS += $(addprefix -optl, $(MACOSX_DEPLOYMENT_LD_OPTS))
+endif
+
SRC_HC_OPTS += -cpp -Wall -fno-warn-name-shadowing -fno-warn-unused-matches
# This causes libghccompat.a to be used:
# we must also build with $(GhcHcOpts) here:
SRC_HC_OPTS += $(GhcHcOpts) $(GhcStage1HcOpts)
+ifeq "$(Windows)" "NO"
+SRC_HC_OPTS += -package unix
+endif
+
ifeq "$(ghc_ge_607)" "YES"
SRC_HC_OPTS += -package containers
endif
# ($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.
+# on Windows, we need to take control of filename globbing ourselves
ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
HS_PROG = ghc-pkg.exe
INSTALL_PROGS += $(HS_PROG)
+EXCLUDE_SRCS += CRT_noglob.c
+NOGLOB_O = CRT_noglob.o
else
+
+# We have two version: the inplace version compiled by the bootstrap compiler
+# and the install version compiled by the stage 1 compiler.
+# When creating or using bindists we always want the final binary, as built
+# by the stage 1 compiler.
+ifeq "$(DOING_BIN_DIST)" "YES"
HS_PROG = ghc-pkg.bin
+else
+ifeq "$(stage)" "2"
+HS_PROG = ghc-pkg.bin
+else
+HS_PROG = ghc-pkg-inplace.bin
+endif
+endif
INSTALL_LIBEXECS += $(HS_PROG)
+NOGLOB_O =
+
endif
# -----------------------------------------------------------------------------
INPLACE_PROG=ghc-pkg-inplace
EXCLUDED_SRCS+=$(INPLACE_HS)
-$(INPLACE_HS): Makefile $(FPTOOLS_TOP)/mk/config.mk
+$(INPLACE_HS): Makefile $(FPTOOLS_TOP)/mk/config.mk $(NOGLOB_O)
echo "import System.Cmd; import System.Environment; import System.Exit" > $@
echo "main = do args <- getArgs; rawSystem \"$(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)/$(HS_PROG)\" (\"--global-conf\":\"$(FPTOOLS_TOP_ABS)/driver/package.conf.inplace\":args) >>= exitWith" >> $@
$(INPLACE_PROG): $(INPLACE_HS)
- $(HC) --make $< -o $@
+ $(HC) --make $< -o $@ $(LD_OPTS) $(NOGLOB_O)
all :: $(INPLACE_PROG)
LINK_TARGET = $(LINK)-$(ProjectVersion)
INSTALLED_SCRIPT=$(DESTDIR)$(bindir)/$(LINK_TARGET)
install::
+ $(INSTALL_DIR) $(DESTDIR)$(bindir)
$(RM) -f $(INSTALLED_SCRIPT)
echo "#!$(SHELL)" >> $(INSTALLED_SCRIPT)
echo "GHCPKGBIN=$(libexecdir)/$(HS_PROG)" >> $(INSTALLED_SCRIPT)