Commit 7caf75c4 authored by's avatar

Configure changes to make testsuite work better on MSys

Fri Jul 28 06:49:35 EDT 2006
parent a27271f9
......@@ -702,10 +702,47 @@ SRC_LD_OPTS += -no-link-chk
all :: $(odir)/ghc-inplace ghc-inplace
# MSys notes
# Note 1
# I'm exec'ing $(SCRIPT_SHELL), rather than the usual #!/bin/sh, to make
# sure that the right shell is invoked. If we use /bin/sh, then
# when ghc-inplace is invoked from a Cygwin Python (which is the only Python
# that seems to run the test-suite correctly), we get the Cygwin shell,
# and it in turn interprets the path-names in the second (exec) line
# differently to the MSys shell. That's bad, because ghc-inplace must
# also work when invoked from MSys shells
# To figure out what the MSys shell is, we cd to '/bin' and do 'pwd -W'
# On MSys, the -W flag prints out the directory in c:/msys/bin format
# (On other system, -W isn't a pwd flag at all.)
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
# MSys
SCRIPT_SHELL = $(shell cd /bin; pwd -W)/sh
# Cygwin and Unix
SCRIPT_SHELL = /bin/sh
# 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 '#!/bin/sh' >>$@
echo exec $(GHC_COMPILER_DIR_ABS)/$(GHC_PROG) '-B$(subst \,\\,$(FPTOOLS_TOP_ABS_PLATFORM))' '"$$@"' >>$@
echo '#!$(SCRIPT_SHELL)' >>$@
# Re SCRIPT_SHELL, see note 1 above
'-B$(subst \,\\,$(FPTOOLS_TOP_ABS_PLATFORM))' '"$$@"' >>$@
# Re exec, see note 2 above
chmod 755 $@
ghc-inplace : stage1/ghc-inplace
......@@ -615,7 +615,12 @@ case $HostPlatform in
hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
dnl OK, so we're in the MSYS case. hardtop looks like /c/....
dnl We want to make hardtop_plat into c:/...
dnl Stop using [] for quotes temporarily, so we can use [] in the sed regexp
changequote(, )dnl
hardtop_plat=`echo ${hardtop} | sed -e 's@^/\\([a-zA-Z]\\)/@\\1:/@g'`
changequote([, ])dnl
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment