Configure changes to make testsuite work better on MSys
[ghc-hetmet.git] / compiler / Makefile
index 4d4723b..653f4d1 100644 (file)
@@ -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
+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 '#!/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
+       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