[m-rev.] for review: port Mercury to MSYS (MinGW)

Ian MacLarty maclarty at cs.mu.OZ.AU
Tue Oct 4 16:36:33 AEST 2005


For review by anyone.

Estimated hours taken: 7
Branches: main and 0.12

README.Cygwin:
README.MS-Windows:
README.MinGW:
	Move most of README.MS-Windows to README.Cygwin and make
	README.MS-Windows refer the user to README.Cygwin, README.MinGW or
	README.MS-VisualC.
	README.MinGW describes how to install the source distribution under
	MSYS.

configure.in:
	Configure Mercury for MinGW.  Most of the options are the same as
	Cygwin.

boehm_gc/Makefile:
	Add a workaround to a problem with cp not working properly just
	after a file is created on MinGW.
	If cygpath is not present (which it isn't on MSYS), then use
	/bin/sh to invoke the C compiler.

scripts/mmc.in:
	Do not use exec to invoke mercury_compile under MinGW.  exec
	doesn't seem to understand Windows like paths with a drive
	letter in front.

Index: README.Cygwin
===================================================================
RCS file: README.Cygwin
diff -N README.Cygwin
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ README.Cygwin	4 Oct 2005 05:55:50 -0000
@@ -0,0 +1,156 @@
+-----------------------------------------------------------------------------
+
+INTRODUCTION
+
+Mercury has been ported to Windows using the "Cygwin"
+(formerly also known as "Cygwin32" and "gnu-win32") Unix emulation
+package.  We've tested the port on Windows XP SP2,
+but it should work on Windows 95, 98, ME, 2000 and NT.
+
+This file documents how to install the binary distribution of
+Mercury on Windows and how to build the source distribution
+of Mercury on Windows using Cygwin.  This installation will use the GNU
+C compiler by default.  If you want to use the Microsoft Visual C
+compiler, please see the file README.MS-VisualC.
+
+-----------------------------------------------------------------------------
+
+PREPARATION
+
+To use or build Mercury on Windows, you need to first get Cygwin and
+install it.  Cygwin version 1.3.1 is buggy and should not be used, but
+Cygwin 1.1.* or Cygwin 1.3.2 or later should be OK.  Recent versions of
+Cygwin can be installed directly from:
+
+	http://sources.redhat.com/cygwin/setup.exe
+
+This program will download and install the required components.
+
+If you want more information on Cygwin, see the site:
+
+	http://sources.redhat.com/cygwin/
+
+If you're going to use a binary distribution of Mercury for Windows,
+you need to make sure that you get a version of Cygwin that is
+compatible with the one that the binary distribution was compiled
+with.  This will normally be specified in the filename of the
+Mercury binary distribution.  For example, if the file name is
+mercury-0.9.1.pc-windows-cygwin-1.1.4.tar.gz then you need version
+1.1.4 of Cygwin.  Later versions may work also, however it is always
+possible that compatibility might break at some point.  Cygwin will
+create a file C:\cygwin\setup.txt that lists the versions of every
+package installed.
+
+Before continuing, check that you can run Cygwin and get a command line
+shell, and that `gcc' (the GNU C compiler) works.
+
+For more information on Cygwin, see the Cygwin web site mentioned above.
+
+-----------------------------------------------------------------------------
+
+UNPACKING THE SOURCES
+
+After installing Cygwin, you should download the Mercury source or
+binary distribution, and unpack it.
+
+You should use Cygwin's tar program to unpack the Mercury distribution.
+From a cygwin command shell, use the `cd' command to change directory
+to the directory where you saved the source or binary distribution that
+you downloaded, and then use `tar zxf <filename>' to unpack it,
+where <filename> is the filename that you downloaded, e.g.
+mercury-compiler-<version>.tar.gz (for the source distribution), or
+mercury-<version>.i686-pc-cygwin-windows.tar.gz (for the binary distribution).
+
+Note that other programs which understand tar.gz files (e.g. WinZip)
+may not be able to unpack them in the correct manner for use with Cygwin.
+
+-----------------------------------------------------------------------------
+
+RUNNING CONFIGURE
+
+Use the `cd' command to change directory to the directory that you just
+unpacked, and then configure with
+
+	sh configure
+
+as described in the INSTALL file.
+On Windows 2000 or XP, it may start up the "Microsoft Management Console"
+program (the autoconfiguration process looks for a program named "mmc").
+If so, just close that application, e.g. by selecting "Exit" from
+the "Console" menu.
+
+-----------------------------------------------------------------------------
+
+RUNNING MAKE INSTALL
+
+Just type
+
+	make install
+
+-----------------------------------------------------------------------------
+
+USING MERCURY
+
+Once you've finished installing, you need to add the appropriate
+directory, normally /usr/local/mercury-<VERSION>/bin, to your PATH.
+If you are familiar with how to set the PATH for command-line programs
+in Windows you can add
+
+	C:\cygwin\usr\local\mercury-<VERSION>\bin
+
+to that path.
+
+Otherwise you can just set the path in Cygwin by creating a file called
+`.bashrc' in your Cygwin home directory that contains the line:
+
+	PATH=/usr/local/mercury-<VERSION>/bin:$PATH
+
+You Cygwin home directory can be found in C:\cygwin\home\username\
+if using Windows Explorer (Cygwin will call your home directory
+`/home/username' or simply `~').
+
+On Windows 2000, you need to make sure that this directory precedes
+the Windows system directory in the PATH, otherwise `mmc' will invoke the
+Microsoft Management Console rather than the Melbourne Mercury Compiler.
+In this case it might be a good idea to modify your path in your
+.bashrc rather than in the Windows PATH environment variable, so as to
+not confuse any other programs that might be looking for the Microsoft
+Management Console.
+
+You should be able to read the HTML version of the Mercury
+documentation, which by default gets installed in
+C:\cygwin\usr\local\mercury-<VERSION>\lib\mercury\html, using Netscape
+or MS Internet Explorer.  Or you can get a copy of GNU Emacs
+for NT and use it to browse the INFO version.
+
+If you use mmake files named `Mmake' rather than `Mmakefile',
+there can be some problems with case-insensitive filenames
+and the name clash between `mmake' and `Mmake'.  If you run into any
+such problems, rename your `Mmake' file to `Mmakefile'.
+
+To write Mercury programs, simply create a new .m file in your favourite
+editor.  Run `mmc <filename>.m' on the Cygwin command line to compile
+small programs, or use `mmake' to handle larger systems.  See the
+Mercury Users Guide for more information about the command line tools.
+There is currently no GUI for editing and compiling Mercury programs,
+although it is quite likely you can hook up a sophisticated editor to
+run `mmc' and/or `mmake' for you.
+
+-----------------------------------------------------------------------------
+
+OTHER PACKAGES YOU MIGHT NEED
+
+If you want to use the mtags tool from the Mercury distribution, you'll
+need to install perl.  A binary distribution of Perl is available at the
+Cygwin porting project:
+	http://www.student.uni-koeln.de/cygwin/
+
+If you want to build your own Mercury releases from the CVS sources, you
+will need a previously installed Mercury compiler (for example, one of
+the recent releases of the day).  You will also need GNU autoconf, which
+can be downloaded from
+	ftp://ftp.gnu.org/pub/gnu/autoconf/
+Autoconf should configure, build and install directly from the source
+package.
+
+-----------------------------------------------------------------------------
Index: README.MS-Windows
===================================================================
RCS file: /home/mercury1/repository/mercury/README.MS-Windows,v
retrieving revision 1.19
diff -u -r1.19 README.MS-Windows
--- README.MS-Windows	30 May 2004 22:59:33 -0000	1.19
+++ README.MS-Windows	4 Oct 2005 05:55:15 -0000
@@ -1,178 +1,27 @@
 -----------------------------------------------------------------------------

-INTRODUCTION
+MERCURY ON WINDOWS

-Mercury has been ported to Windows using the "Cygwin"
-(formerly also known as "Cygwin32" and "gnu-win32") Unix emulation
-package.  We've tested the port on Windows 2000,
-but it should work on Windows 95/98/ME and Windows NT too.
+Mercury has been ported to MS Windows.
+We've tested the port on Windows XP SP2,
+but it should work on Windows 95, 98, ME 2000 and NT.
+We don't have any plans for a port to Windows 3.1.

-This file documents how to install the binary distribution of
-Mercury on Windows and how to build the source distribution
-of Mercury on Windows using Cygwin.  This installation will use the GNU
-C compiler by default.  If you want to use the Microsoft Visual C
-compiler, please see the file README.MS-VisualC.
+The Mercury build process makes use of a number of Unix tools such as
+sh and make.  This means that a Unix emulation environment is required
+to build Mercury on Windows.

-(Note: we don't have any plans for a port to Windows 3.1.)
+Two such environments are supported:

------------------------------------------------------------------------------
+1. Cygwin (www.cygwin.com).  For instructions on how to install Mercury
+   under Cygwin see README.Cygwin.

-PREPARATION
+2. MSYS (www.mingw.org).  For instructions on how to install Mercury
+   under MSYS see README.MinGW.

-To use or build Mercury on Windows, you need to first get Cygwin and
-install it.  Cygwin version 1.3.1 is buggy and should not be used, but
-Cygwin 1.1.* or Cygwin 1.3.2 or later should be OK.  Recent versions of
-Cygwin can be installed directly from:
-
-	http://sources.redhat.com/cygwin/setup.exe
-
-This program will download and install the required components.
-
-If you want more information on Cygwin, see the site:
-
-	http://sources.redhat.com/cygwin/
-
-If you're going to use a binary distribution of Mercury for Windows,
-you need to make sure that you get a version of Cygwin that is
-compatible with the one that the binary distribution was compiled
-with.  This will normally be specified in the filename of the
-Mercury binary distribution.  For example, if the file name is
-mercury-0.9.1.pc-windows-cygwin-1.1.4.tar.gz then you need version
-1.1.4 of Cygwin.  Later versions may work also, however it is always
-possible that compatibility might break at some point.  Cygwin will
-create a file C:\cygwin\setup.txt that lists the versions of every
-package installed.
-
-Before continuing, check that you can run Cygwin and get a command line
-shell, and that `gcc' (the GNU C compiler) works.
-
-For more information on Cygwin, see the Cygwin web site mentioned above.
-
------------------------------------------------------------------------------
-
-UNPACKING THE SOURCES
-
-After installing Cygwin, you should download the Mercury source or
-binary distribution, and unpack it.
-
-You should use Cygwin's tar program to unpack the Mercury distribution.
-From a cygwin command shell, use the `cd' command to change directory
-to the directory where you saved the source or binary distribution that
-you downloaded, and then use `tar zxf <filename>' to unpack it,
-where <filename> is the filename that you downloaded, e.g.
-mercury-compiler-<version>.tar.gz (for the source distribution), or
-mercury-<version>.i686-pc-cygwin-windows.tar.gz (for the binary distribution).
-
-Note that other programs which understand tar.gz files (e.g. WinZip)
-may not be able to unpack them in the correct manner for use with Cygwin.
-
------------------------------------------------------------------------------
-
-RUNNING CONFIGURE
-
-Use the `cd' command to change directory to the directory that you just
-unpacked, and then configure with
-
-	sh configure
-
-as described in the INSTALL file.
-On Windows 2000, it may start up the "Microsoft Management Console"
-program (the autoconfiguration process looks for a program named "mmc").
-If so, just close that application, e.g. by selecting "Exit" from
-the "Console" menu.
-
------------------------------------------------------------------------------
-
-RUNNING MAKE INSTALL
-
-Just type
-
-	make install
-
------------------------------------------------------------------------------
-
-USING MERCURY
-
-Once you've finished installing, you need to add the appropriate
-directory, normally /usr/local/mercury-<VERSION>/bin, to your PATH.
-If you are familiar with how to set the PATH for command-line programs
-in Windows you can add
-
-	C:\cygwin\usr\local\mercury-<VERSION>\bin
-
-to that path.
-
-Otherwise you can just set the path in Cygwin by creating a file called
-`.bashrc' in your Cygwin home directory that contains the line:
-
-	PATH=/usr/local/mercury-<VERSION>/bin:$PATH
-
-You Cygwin home directory can be found in C:\cygwin\home\username\
-if using Windows Explorer (Cygwin will call your home directory
-`/home/username' or simply `~').
-
-On Windows 2000, you need to make sure that this directory precedes
-the Windows system directory in the PATH, otherwise `mmc' will invoke the
-Microsoft Management Console rather than the Melbourne Mercury Compiler.
-In this case it might be a good idea to modify your path in your
-.bashrc rather than in the Windows PATH environment variable, so as to
-not confuse any other programs that might be looking for the Microsoft
-Management Console.
-
-You should be able to read the HTML version of the Mercury
-documentation, which by default gets installed in
-C:\cygwin\usr\local\mercury-<VERSION>\lib\mercury\html, using Netscape
-or MS Internet Explorer.  Or you can get a copy of GNU Emacs
-for NT and use it to browse the INFO version.
-
-If you use mmake files named `Mmake' rather than `Mmakefile',
-there can be some problems with case-insensitive filenames
-and the name clash between `mmake' and `Mmake'.  If you run into any
-such problems, rename your `Mmake' file to `Mmakefile'.
-
-To write Mercury programs, simply create a new .m file in your favourite
-editor.  Run `mmc <filename>.m' on the Cygwin command line to compile
-small programs, or use `mmake' to handle larger systems.  See the
-Mercury Users Guide for more information about the command line tools.
-There is currently no GUI for editing and compiling Mercury programs,
-although it is quite likely you can hook up a sophisticated editor to
-run `mmc' and/or `mmake' for you.
-
------------------------------------------------------------------------------
-
-OTHER PACKAGES YOU MIGHT NEED
-
-If you want to use the mtags tool from the Mercury distribution, you'll
-need to install perl.  A binary distribution of Perl is available at the
-Cygwin porting project:
-	http://www.student.uni-koeln.de/cygwin/
-
-If you want to build your own Mercury releases from the CVS sources, you
-will need a previously installed Mercury compiler (for example, one of
-the recent releases of the day).  You will also need GNU autoconf, which
-can be downloaded from
-	ftp://ftp.gnu.org/pub/gnu/autoconf/
-Autoconf should configure, build and install directly from the source
-package.
-
------------------------------------------------------------------------------
-
-BUILDING WITH MINGW
-
-The above instructions describe how to build/install a version of
-the system that targets Cygwin.  It is also possible to build a version that
-targets Mingw, i.e. where the generated executables do not rely on Cygwin.
-
-- First, install the Cygwin version of Mercury, and put it in your PATH.
-- Second, configure the source distribution of Mercury using
-  --with-cc="gcc -mno-cygwin".
-- Third, run "make" and "make install".
-- Fourth, replace the following files in the installed Mingw Mercury
-  directories with copies of the corresponding file from the installed
-  Cygwin Mercury directories:
-        mercury_compile.exe (in <prefix>/lib/mercury/bin/<config>)
-        mercury_profile.exe (in <prefix>/lib/mercury/bin/<config>)
-        mdemangle.exe (in <prefix>/bin)
-        mkinit.exe (in <prefix>/bin)
+Mercury can also be built using the MS Visual C compiler, although one of
+the above environments is still required for the build process.  See
+README.MS-VisualC for instructions on how to build Mercury with the
+MS Visual C compiler.

 -----------------------------------------------------------------------------
Index: README.MinGW
===================================================================
RCS file: README.MinGW
diff -N README.MinGW
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ README.MinGW	4 Oct 2005 06:12:03 -0000
@@ -0,0 +1,72 @@
+-----------------------------------------------------------------------------
+
+BUILDING WITH MINGW
+
+It is possible to build the Mercury compiler using the MinGW version of GCC.
+The advantage of using MinGW is that the generated executables will run
+natively on Windows without the need for any support environments like Cygwin.
+
+A Unix like environment is however still require to build the Mercury compiler.
+MSYS or Cygwin can be used for this purpose.
+
+-----------------------------------------------------------------------------
+
+BUILDING A MINGW COMPILER UNDER MSYS
+
+To build the source distribution under MSYS follow these steps:
+
+1.  Download and install MinGW and MSYS (available from www.mingw.org).
+    For MinGW install "the minimal set of packages required to build C/C++" and
+    "the full set of utility packages".
+
+2.  Open an MSYS session and unpack the source distribution with a command
+    like:
+    tar -xvzf mercury-compiler-rotd-2005-09-29-unstable.tar.gz
+
+3.  cd into the new directory and run configure:
+
+    ./configure --prefix=c:/mercury
+
+    It is important to specify the installation prefix as a full windows
+    path with a drive letter (except use `/' instead of `\').
+    Do not use a path like `/mercury', because that
+    will be interpretted differently by the MSYS shell than by the generated
+    executables, resulting in a broken installation.
+    On Windows 2000 or XP, you may get a dialog from the
+    "Micrsoft Management Console" with the message "The selected file cannot
+    be found.".  This is because configure looks for a program called "mmc".
+    Simply dismiss the dialog by clicking OK.
+
+4.  run: `make' and then `make install'.
+
+Add /c/mercury/bin (or whatever path you installed Mercury to) to the MSYS
+PATH (you cannot add `c:/mercury/bin' to the MSYS PATH because `:' is used to
+separate directories in the MSYS PATH).
+
+NOTE TO DEVELOPERS: The tools/bootcheck script does not work properly
+on MSYS at the moment -- it will build stage 3, but will not run the tests
+correctly.  To run the tests you should first install the compiler and add
+it to the PATH.  Next set the DIFF_OPTS environment variable to "-c -b".  This
+will cause the test scripts to ignore the extra carriage return character that
+gets added to the end of each line under MinGW.  Then run mmake from the tests
+directory.
+
+-----------------------------------------------------------------------------
+
+BUILDING A CYGWIN COMPILER WHICH TARGETS MINGW
+
+To build a compiler which targets MinGW from Cygwin do the following:
+
+- First, install the Cygwin version of Mercury, and put it in your PATH.
+- Second, configure the source distribution of Mercury using
+  --with-cc="gcc -mno-cygwin".
+- Third, run "make" and "make install".
+- Fourth, replace the following files in the installed Mingw Mercury
+  directories with copies of the corresponding file from the installed
+  Cygwin Mercury directories:
+        mercury_compile.exe (in <prefix>/lib/mercury/bin/<config>)
+        mercury_profile.exe (in <prefix>/lib/mercury/bin/<config>)
+        mdemangle.exe (in <prefix>/bin)
+        mkinit.exe (in <prefix>/bin)
+
+-----------------------------------------------------------------------------
Index: configure.in
===================================================================
RCS file: /home/mercury1/repository/mercury/configure.in,v
retrieving revision 1.434
diff -u -r1.434 configure.in
--- configure.in	23 Sep 2005 06:39:46 -0000	1.434
+++ configure.in	3 Oct 2005 11:11:11 -0000
@@ -141,6 +141,22 @@
 		;;
 esac
 #-----------------------------------------------------------------------------#
+# MMC_INVOKE_CMD is the the command used to invoke mercury_compile in
+# scripts/mmc.
+# On MSYS (MinGW) we cannot use exec, since exec will not find the file because
+# it will expect a path relative to the MSYS home directory and will not work
+# with a full Windows path.  A full Windows path, however must be used for the
+# prefix so that mercury_compile will find the standard library.
+#
+case "$host" in
+	*mingw*)
+		MMC_INVOKE_CMD=
+		;;
+	*)	MMC_INVOKE_CMD=exec
+		;;
+esac
+AC_SUBST(MMC_INVOKE_CMD)
+#-----------------------------------------------------------------------------#

 # Don't document this -- it's only used by the mercury_config script
 # to generate a new configuration for an already installed system.
@@ -503,10 +519,12 @@
 AC_PATH_PROG(INSTALL_INFO,install-info)
 AC_SUBST(INSTALL_INFO)
 #-----------------------------------------------------------------------------#
-# texi2dvi is currently broken on cygwin
+# texi2dvi is currently broken on cygwin and mingw
 case "$host" in
 	*-cygwin*)
 		TEXI2DVI="" ;;
+	*mingw*)
+		TEXI2DVI="" ;;
 	*)
 		AC_PATH_PROG(TEXI2DVI,texi2dvi) ;;
 esac
@@ -622,9 +640,9 @@

 	AC_MSG_CHECKING(whether we need to use -fno-strict-aliasing)
 	$CC -O2 -Wall -fno-strict-aliasing -c conftest.c \
-		</dev/null >&conftest1.out
+		</dev/null > conftest1.out 2>&1
 	$CC -O2 -Wall -c conftest.c \
-		</dev/null >&conftest2.out
+		</dev/null > conftest2.out 2>&1
 	# get the lines that exist only in conftest2.out
 	comm -13 conftest1.out conftest2.out > conftest.2only

@@ -814,6 +832,13 @@
 		LN_S=false
 	fi
 	;;
+    *mingw*)
+	MATH_LIB=
+	if test "$enable_symlinks_opt" != "yes"; then
+		MMC_USE_SYMLINKS_OPT=--no-use-symlinks
+		LN_S=false
+	fi
+	;;
 esac

 AC_SUBST(LN_S)
@@ -848,6 +873,8 @@
 case "$host" in
 	*-cygwin*)
 		ac_cv_func_mprotect=no ;;
+	*mingw*)
+		ac_cv_func_mprotect=no ;;
 esac

 mercury_check_for_functions \
@@ -2438,6 +2465,19 @@
 		esac
 		;;

+	*mingw*)
+		THREAD_LIBS=""
+		case "$CC" in
+			*cl* | *CL*)	# cl is the Microsoft C compiler
+				CFLAGS_FOR_THREADS="-DMR_THREAD_SAFE -DWIN32_THREADS /MD"
+				LDFLAGS_FOR_THREADS="/MD"
+				LD_LIBFLAGS_FOR_THREADS="/MD"
+				;;
+			*)
+				CFLAGS_FOR_THREADS="-DGC_WIN32_THREADS -DMR_THREAD_SAFE" ;;
+		esac
+		;;
+
 	# Theoretically we should change this check to *apple*darwin*)
 	# as darwin should be the same whether or not we are on a powerpc or
 	# an i386, but since we don't have access to an i386 with darwin
@@ -3358,6 +3398,18 @@
 		EXT_FOR_LINK_WITH_PIC_OBJECTS=o
 		DEFAULT_LINKAGE=static
 		;;
+	*mingw*)
+		# disabled for now, since it hasn't been tested
+		# xxx_MSG_RESULT(yes)
+		# EXT_FOR_SHARED_LIB=dll
+		# USE_DLLS=yes
+		AC_MSG_RESULT(disabled for now because it is untested)
+
+		CFLAGS_FOR_PIC=
+		EXT_FOR_PIC_OBJECTS=o
+		EXT_FOR_LINK_WITH_PIC_OBJECTS=o
+		DEFAULT_LINKAGE=static
+		;;
 	*powerpc*apple*darwin*)
 		# If the compiler is gcc then use darwin style dynamic linking.
 		# Otherwise use static linking.
@@ -3569,6 +3621,9 @@

 case "$host" in
 	*-cygwin*)
+		EXT_FOR_EXE=".exe"
+		;;
+	*mingw*)
 		EXT_FOR_EXE=".exe"
 		;;
 	*)
Index: boehm_gc/Makefile
===================================================================
RCS file: /home/mercury1/repository/mercury/boehm_gc/Makefile,v
retrieving revision 1.59
diff -u -r1.59 Makefile
--- boehm_gc/Makefile	5 Sep 2005 06:48:49 -0000	1.59
+++ boehm_gc/Makefile	4 Oct 2005 06:02:49 -0000
@@ -474,6 +474,10 @@
 lib$(GC_GRADE)$(DLL_DEF_LIB).a: gc.a
 	rm -f lib$(GC_GRADE)$(DLL_DEF_LIB).a
 	# `ln -s' here doesn't work with gnu-win32, so we use `cp' instead
+	# The sleep is necessary on MinGW, otherwise cp sometimes reports
+	# that it cannot stat gc.a, even though it is there.  Waiting for
+	# a second first seems to help.
+	sleep 1
 	cp gc.a lib$(GC_GRADE)$(DLL_DEF_LIB).a

 base_lib gc.a: $(OBJS) dyn_load.o $(UTILS)
@@ -597,13 +601,15 @@
 	./if_mach IA64 "" $(CC) -c -o mach_dep1.o $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
 	./if_mach IA64 "" ld -r -o mach_dep.o mach_dep1.o ia64_save_regs_in_stack.o
 	-./if_not_there mach_dep.o $(CC) -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
-	./if_not_there mach_dep.o `cygpath -w /bin/sh` $(CC) -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
+	-./if_not_there mach_dep.o `cygpath -w /bin/sh` $(CC) -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
+	./if_not_there mach_dep.o /bin/sh $(CC) -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c

 mark_rts.o: $(srcdir)/mark_rts.c $(UTILS)
 	rm -f mark_rts.o
 	-./if_mach ALPHA OSF1 $(CC) -c $(CFLAGS) -Wo,-notail $(srcdir)/mark_rts.c
 	-./if_not_there mark_rts.o $(CC) -c $(CFLAGS) $(srcdir)/mark_rts.c
-	./if_not_there mark_rts.o `cygpath -w /bin/sh` $(CC) -c $(CFLAGS) $(srcdir)/mark_rts.c
+	-./if_not_there mark_rts.o `cygpath -w /bin/sh` $(CC) -c $(CFLAGS) $(srcdir)/mark_rts.c
+	./if_not_there mark_rts.o /bin/sh $(CC) -c $(CFLAGS) $(srcdir)/mark_rts.c
 #	Work-around for DEC optimizer tail recursion elimination bug.
 #  The ALPHA-specific line should be removed if gcc is used.

Index: scripts/mmc.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/mmc.in,v
retrieving revision 1.37
diff -u -r1.37 mmc.in
--- scripts/mmc.in	23 Dec 2004 04:19:36 -0000	1.37
+++ scripts/mmc.in	3 Oct 2005 09:51:19 -0000
@@ -22,6 +22,6 @@
 @SET_MACOSX_DEPLOYMENT_TARGET@

 case $# in
-	0) exec $MERCURY_COMPILER ;;
-	*) exec $MERCURY_COMPILER "$@" ;;
+	0) @MMC_INVOKE_CMD@ $MERCURY_COMPILER ;;
+	*) @MMC_INVOKE_CMD@ $MERCURY_COMPILER "$@" ;;
 esac

--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list