#
ifneq "$(way)" "dll"
ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-HS_PROG=$(odir)/ghc$(_way)-$(ProjectVersion)
+GHC_PROG=$(odir)/ghc$(_way)-$(ProjectVersion)
else
-HS_PROG=$(odir)/ghc$(_way)
+GHC_PROG=$(odir)/ghc$(_way)
endif
else
-HS_PROG=$(odir)/ghc-$(ProjectVersion)
+GHC_PROG=$(odir)/ghc-$(ProjectVersion)
+endif
+
+ifneq "$(stage)" "2"
+HS_PROG = $(GHC_PROG)
endif
# -----------------------------------------------------------------------------
ifeq "$(GhcWithInterpreter) $(bootstrapped)" "YES YES"
# Yes, include the interepreter, readline, and Template Haskell extensions
-SRC_HC_OPTS += -DGHCI -package template-haskell
+SRC_HC_OPTS += -DGHCI -DBREAKPOINT -package template-haskell
PKG_DEPENDS += template-haskell
# Use threaded RTS with GHCi, so threads don't get blocked at the prompt.
PKG_DEPENDS += readline
endif
else
-ifeq "$(GhcLibsWithReadline)" "YES"
+-include $(FPTOOLS_TOP)/libraries/readline/config.mk
+# readline's config.mk sets PACKAGE, which we don't want here
+PACKAGE=
+ifeq "$(READLINE_BUILD_PACKAGE)" "yes"
SRC_HC_OPTS += -package readline -DUSE_READLINE
PKG_DEPENDS += readline
endif
SRC_MKDEPENDHS_OPTS += -I$(GHC_INCLUDE_DIR)
# We need System.Posix (or Posix when ghc < 6.2)
-ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
+ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
+ifeq "$(bootstrapped)" "YES"
+SRC_HC_OPTS += -package Win32
+PKG_DEPENDS += Win32
+endif
+else
ifeq "$(bootstrapped) $(ghc_ge_601)" "NO NO"
SRC_HC_OPTS += -package posix
else
# ghc_strlen percolates through so many modules that it is easier to get its
# prototype via a global option instead of a myriad of per-file OPTIONS
-SRC_HC_OPTS += '-\#include "hschooks.h"'
+SRC_HC_OPTS += '-\#include "cutils.h"'
# ----------------------------------------------------------------------------
# Generate supporting stuff for prelude/PrimOp.lhs
all :: $(odir)/ghc-inplace ghc-inplace
-$(odir)/ghc-inplace : $(HS_PROG)
+$(odir)/ghc-inplace : $(GHC_PROG)
@$(RM) $@
echo '#!/bin/sh' >>$@
- echo exec $(GHC_COMPILER_DIR_ABS)/$(HS_PROG) '-B$(subst \,\\,$(FPTOOLS_TOP_ABS_PLATFORM))' '"$$@"' >>$@
+ echo exec $(GHC_COMPILER_DIR_ABS)/$(GHC_PROG) '-B$(subst \,\\,$(FPTOOLS_TOP_ABS_PLATFORM))' '"$$@"' >>$@
chmod 755 $@
ghc-inplace : stage1/ghc-inplace
DESTDIR = $(INSTALL_LIBRARY_DIR_GHC)
ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
-INSTALL_LIBEXECS += $(HS_PROG)
+INSTALL_LIBEXECS += $(GHC_PROG)
else
-INSTALL_PROGS += $(HS_PROG)
+INSTALL_PROGS += $(GHC_PROG)
endif
# ----------------------------------------------------------------------------
# Haddock can't handle recursive modules currently, so we disable it for now.
NO_HADDOCK_DOCS = YES
+
+# Don't build the GHC binary as normal, because we need to link it
+# against the GHC package. The GHC binary itself is built by
+# compiling Main.o separately and linking it with -package ghc. This is
+# done using a separate Makefile:
+
+all :: $(GHC_PROG)
+
+$(GHC_PROG) : libHS$(PACKAGE)$(_way).a main/Main.hs
+ $(MAKE) -f Makefile.ghcbin $(MFLAGS) HS_PROG=$(GHC_PROG) $@
+
+docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html chm HxS ps dvi txt::
+ $(MAKE) -f Makefile.ghcbin $(MFLAGS) $@
endif
#-----------------------------------------------------------------------------