-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-# MSys (...and cygwin with a mingw toolchain)
-SCRIPT_SHELL = $(shell cd /bin; pwd -W 2>/dev/null | echo "/bin")/sh
-else
-# Cygwin and Unix
-SCRIPT_SHELL = /bin/sh
-endif
-
-# Note 2
-# On MSys, we must use the following script for ghc-inplace:
-# exec /c/darcs/fc-branch-2/compiler/stage1/ghc -Bc:/darcs/fc-branch-2 "$@"
-# That is,
-# (a) You *must* use the /c/ form for the first arg to exec. Using the
-# c:/ form makes exec complain that it can't find $pwd/c:/darcs/.../ghc
-# The /c/ form is $(FPTOOLS_TOP_ABS)
-# (b) You *must* use the c:/ form for the -B argument, else the testsuite
-# doesn't work. I think that's something to do with ghc-inplace being
-# invoked by Python
-# The c:/ form is $(FPTOOLS_TOP_ABS_PLATFORM)
-
-$(odir)/ghc-inplace : $(GHC_PROG)
- @$(RM) $@
- echo '#!$(SCRIPT_SHELL)' >>$@
-# Re SCRIPT_SHELL, see note 1 above
- echo exec $(GHC_COMPILER_DIR_ABS)/$(GHC_PROG) \
- '-B$(subst \,\\,$(FPTOOLS_TOP_ABS_PLATFORM))' '"$$@"' >>$@
-# Re exec, see note 2 above
- chmod 755 $@
-
-ghc-inplace : stage1/ghc-inplace
- $(RM) -f $@ && $(LN_S) $< $@
-
-ifeq "$(stage)" "1"
-CLEAN_FILES += ghc-inplace
-endif
-
-CLEAN_FILES += $(odir)/ghc-inplace
-
-#-----------------------------------------------------------------------------
-# install
-
-# We don't want ghc treated as an ordinary executable,
-# but put it together with the libraries.
-# Also don't want any interface files installed
-
-DESTDIR = $(INSTALL_LIBRARY_DIR_GHC)
-
-ifneq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
-INSTALL_LIBEXECS += $(GHC_PROG)
-else
-INSTALL_PROGS += $(GHC_PROG)
-endif
-
-# ----------------------------------------------------------------------------
-# profiling.
-
-# rename/RnBinds_HC_OPTS += -auto-all
-# rename/RnEnv_HC_OPTS += -auto-all
-# rename/RnExpr_HC_OPTS += -auto-all
-# rename/RnHiFiles_HC_OPTS += -auto-all
-# rename/RnHsSyn_HC_OPTS += -auto-all
-# rename/Rename_HC_OPTS += -auto-all
-# rename/RnIfaces_HC_OPTS += -auto-all
-# rename/RnNames_HC_OPTS += -auto-all
-# rename/RnSource_HC_OPTS += -auto-all
-# rename/RnTypes_HC_OPTS += -auto-all
-#
-# typecheck/Inst_HC_OPTS += -auto-all
-# typecheck/TcBinds_HC_OPTS += -auto-all
-# typecheck/TcClassDcl_HC_OPTS += -auto-all
-# typecheck/TcDefaults_HC_OPTS += -auto-all
-# typecheck/TcDeriv_HC_OPTS += -auto-all
-# typecheck/TcEnv_HC_OPTS += -auto-all
-# typecheck/TcExpr_HC_OPTS += -auto-all
-# typecheck/TcForeign_HC_OPTS += -auto-all
-# typecheck/TcGenDeriv_HC_OPTS += -auto-all
-# typecheck/TcHsSyn_HC_OPTS += -auto-all
-# typecheck/TcIfaceSig_HC_OPTS += -auto-all
-# typecheck/TcInstDcls_HC_OPTS += -auto-all
-# typecheck/TcMatches_HC_OPTS += -auto-all
-# typecheck/TcMonoType_HC_OPTS += -auto-all
-# typecheck/TcMType_HC_OPTS += -auto-all
-# typecheck/TcPat_HC_OPTS += -auto-all
-# typecheck/TcRnDriver_HC_OPTS += -auto-all
-# #typecheck/TcRnMonad_HC_OPTS += -auto-all
-# #typecheck/TcRnTypes_HC_OPTS += -auto-all
-# typecheck/TcRules_HC_OPTS += -auto-all
-# typecheck/TcSimplify_HC_OPTS += -auto-all
-# typecheck/TcSplice_HC_OPTS += -auto-all
-# typecheck/TcTyClsDecls_HC_OPTS += -auto-all
-# typecheck/TcTyDecls_HC_OPTS += -auto-all
-# typecheck/TcType_HC_OPTS += -auto-all
-# typecheck/TcUnify_HC_OPTS += -auto-all
-
-coreSyn/CorePrep_HC_OPTS += -auto-all
-# parser/Parser_HC_OPTS += -fasm
-
-#-----------------------------------------------------------------------------
-# Building the GHC package
-
-# The GHC package is made from the stage 2 build. Fortunately the
-# package build system framework more or less does the right thing for
-# us here.
-
-# All this section is stage-2 only!
-ifeq "$(stage)" "2"
-
-PACKAGE = ghc
-HIERARCHICAL_LIB = NO
-VERSION = $(ProjectVersion)
-PKG_DEPENDS += base haskell98
-PACKAGE_CPP_OPTS += -DPKG_DEPENDS='$(PKG_DEPENDS)'
-
-# Omit Main from the library, the client will want to plug their own Main in
-LIBOBJS = $(filter-out $(odir)/main/Main.o $(odir)/parser/hschooks.o, $(OBJS))
-
-# disable splitting: it won't really help with GHC, and the specialised
-# build system for compiler/ isn't set up to handle it.
-SplitObjs = NO
-
-# the package build system likes to set WAYS=$(GhcLibWays), but we don't
-# really want to build the whole of GHC multiple ways... if you do,
-# set GhcCompilerWays instead.
-GhcLibWays = $(GhcCompilerWays)
-
-# override $(GhcLibHcOpts): we want GhcStage2HcOpts to take precedence
-GhcLibHcOpts =
-
-# override default definition of HS_IFACES so we can add $(odir)
-HS_IFACES = $(addsuffix .$(way_)hi,$(basename $(HS_OBJS)))
-
-# Haddock can't handle recursive modules currently, so we disable it for now.
-NO_HADDOCK_DOCS = YES
-
-# The stage 2 GHC binary itself is built by compiling main/Main.hs
-# (the same as used in stage 1) against the GHC package.
-#
-# This is done by compiling Main.hs separately and linking it with
-# -package ghc. This is done using a separate Makefile, Makefile.ghcbin
-# Why? See comments in Makefile.ghcbin
-
-all :: $(GHC_PROG)
-
-$(GHC_PROG) : libHS$(PACKAGE)$(_way).a main/Main.hs
- $(MAKE) -f Makefile.ghcbin $(MFLAGS) HS_PROG=$(GHC_PROG) $@
-
-# Propagate standard targets to Makefile.ghcbin
-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
-
-#-----------------------------------------------------------------------------
-# clean
-
-MAINTAINER_CLEAN_FILES += parser/Parser.info main/ParsePkgConf.info
-
-#-----------------------------------------------------------------------------
-# Include target-rule boilerplate
-
-# Don't use the default MKDEPENDHS stuff... we'll do our own, below
-MKDEPENDHS_SRCS =
-MKDEPENDC_SRCS =
-
-# Make doesn't work this out for itself, it seems
-parser/Parser.y : parser/Parser.y.pp
-EXTRA_SRCS += parser/Parser.y
-
-
-#-----------------------------------------------------------------------------
-# Source files for tags file generation
-#
-# We want to excluded derived sources, because they won't be in the source
-# tree, which is where we are going to move the TAGS file to.a
-
-TAGS_HS_SRCS = parser/Parser.y.pp $(filter-out $(DERIVED_SRCS) main/Config.hs parser/Parser.y, $(sort $(SRCS)))
-
-
-include $(TOP)/mk/target.mk
-
-# -----------------------------------------------------------------------------
-# Explicit dependencies
-
-# Some .hs files #include other source files, but since ghc -M doesn't spit out
-# these dependencies we have to include them manually.
-
-# We don't add dependencies on HsVersions.h, ghcautoconf.h, or ghc_boot_platform.h,
-# because then modifying one of these files would force recompilation of everything,
-# which is probably not what you want. However, it does mean you have to be
-# careful to recompile stuff you need if you reconfigure or change HsVersions.h.
-
-# Aargh, these don't work properly anyway, because GHC's recompilation checker
-# just reports "compilation NOT required". Do we have to add -no-recomp for each
-# of these .hs files? I haven't done anything about this yet.
-
-$(odir)/codeGen/Bitmap.$(way_)o : ../includes/MachDeps.h
-$(odir)/codeGen/CgCallConv.$(way_)o : ../includes/StgFun.h
-$(odir)/codeGen/CgProf.$(way_)o : ../includes/MachDeps.h
-$(odir)/codeGen/CgProf.$(way_)o : ../includes/Constants.h
-$(odir)/codeGen/CgProf.$(way_)o : ../includes/DerivedConstants.h
-$(odir)/codeGen/CgTicky.$(way_)o : ../includes/DerivedConstants.h
-$(odir)/codeGen/ClosureInfo.$(way_)o : ../includes/MachDeps.h
-$(odir)/codeGen/SMRep.$(way_)o : ../includes/MachDeps.h
-$(odir)/codeGen/SMRep.$(way_)o : ../includes/ClosureTypes.h
-$(odir)/ghci/ByteCodeAsm.$(way_)o : ../includes/Bytecodes.h
-$(odir)/ghci/ByteCodeFFI.$(way_)o : nativeGen/NCG.h
-$(odir)/ghci/ByteCodeInstr.$(way_)o : ../includes/MachDeps.h
-$(odir)/ghci/ByteCodeItbls.$(way_)o : ../includes/ClosureTypes.h
-$(odir)/ghci/ByteCodeItbls.$(way_)o : nativeGen/NCG.h
-$(odir)/main/Constants.$(way_)o : ../includes/MachRegs.h
-$(odir)/main/Constants.$(way_)o : ../includes/Constants.h
-$(odir)/main/Constants.$(way_)o : ../includes/MachDeps.h
-$(odir)/main/Constants.$(way_)o : ../includes/DerivedConstants.h
-$(odir)/main/Constants.$(way_)o : ../includes/GHCConstants.h
-$(odir)/nativeGen/AsmCodeGen.$(way_)o : nativeGen/NCG.h
-$(odir)/nativeGen/MachCodeGen.$(way_)o : nativeGen/NCG.h
-$(odir)/nativeGen/MachCodeGen.$(way_)o : ../includes/MachDeps.h
-$(odir)/nativeGen/MachInstrs.$(way_)o : nativeGen/NCG.h
-$(odir)/nativeGen/MachRegs.$(way_)o : nativeGen/NCG.h
-$(odir)/nativeGen/MachRegs.$(way_)o : ../includes/MachRegs.h
-$(odir)/nativeGen/PositionIndependentCode.$(way_)o : nativeGen/NCG.h
-$(odir)/nativeGen/PprMach.$(way_)o : nativeGen/NCG.h
-$(odir)/nativeGen/RegAllocInfo.$(way_)o : nativeGen/NCG.h
-$(odir)/typecheck/TcForeign.$(way_)o : nativeGen/NCG.h
-$(odir)/utils/Binary.$(way_)o : ../includes/MachDeps.h
-$(odir)/utils/FastMutInt.$(way_)o : ../includes/MachDeps.h
-
-# -----------------------------------------------------------------------------
-# Dependencies
-
-MKDEPENDHS_HC_OPTS = $(patsubst -i$(odir)/%, -i%, $(HC_OPTS))
-
-MKDEPENDHS=$(HC)
-
-# Must do this *after* including target.mk, because $(HS_SRCS) isn't set yet.
-depend :: $(STAGE_PLATFORM_H) $(HS_SRCS) $(C_SRCS)
- touch .depend-BASE
-ifneq "$(BootingFromHc)" "YES"
- $(MKDEPENDHS) -M -optdep-f -optdep.depend-BASE $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(foreach obj,$(MKDEPENDHS_OBJ_SUFFICES),-osuf $(obj)) $(MKDEPENDHS_OPTS) $(filter-out -split-objs, $(MKDEPENDHS_HC_OPTS)) $(HS_SRCS)
-endif
- $(MKDEPENDC) -f .depend-BASE $(MKDEPENDC_OPTS) $(foreach way,$(WAYS),-s $(way)) -- $(CC_OPTS) -- $(C_SRCS)
- $(PERL) -pe 'binmode(stdin); binmode(stdout); s@^(\S*\.o)@stage$(stage)/$$1@g; s@(\S*\.hi)@stage$(stage)/$$1@g; s@^.*/compat.*$$@@g;' <.depend-BASE >.depend-$(stage)
-# The binmode stuff tells perl not to add stupid ^M's to the output
-#
-# The /lib/compat replacement is to workaround a bug in the
-# -optdep--exclude-module flag in GHC 6.4. It is not required for any
-# other version of GHC, but doesn't do any harm.