--- runtime/Makefile.orig	2007-08-27 07:03:54.000000000 +1000
+++ runtime/Makefile		2008-04-28 10:19:06.000000000 +1000
@@ -11,11 +11,24 @@
 TARGET := self
 TARGET_ARCH := $(shell ../bin/host-arch)
 TARGET_OS := $(shell ../bin/host-os)
+
+ifeq ($(TARGET), self)
+GCC := gcc
+else
+GCC := $(TARGET)-gcc
+endif
+
+ifeq ($(TARGET_OS), mingw)
+RUN := wine
+else
+RUN :=
+endif
+
 GCC_MAJOR_VERSION :=						\
-	$(shell gcc -v 2>&1 | grep 'gcc version' | 		\
+	$(shell $(GCC) -v 2>&1 | grep 'gcc version' | 		\
 		sed 's/.*gcc version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1/')
 GCC_MINOR_VERSION :=						\
-	$(shell gcc -v 2>&1 | grep 'gcc version' | 		\
+	$(shell $(GCC) -v 2>&1 | grep 'gcc version' | 		\
 		sed 's/.*gcc version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\2/')
 GCC_VERSION := $(GCC_MAJOR_VERSION).$(GCC_MINOR_VERSION)
 
@@ -96,10 +109,9 @@
 else
 AR := $(TARGET)-ar rc
 RANLIB := $(TARGET)-ranlib
-FLAGS += -b $(TARGET)
 endif
 
-CC := gcc -std=gnu99
+CC := $(GCC) -std=gnu99
 CPPFLAGS :=
 CFLAGS := -I. -Iplatform $(FLAGS)
 OPTCFLAGS := $(CFLAGS) $(CPPFLAGS) $(OPTFLAGS)
@@ -247,7 +259,7 @@
 	cd gdtoa && $(CC) -o arithchk.out arithchk.c
 
 gdtoa/arith.h: gdtoa/arithchk.out
-	cd gdtoa && ./arithchk.out >arith.h
+	cd gdtoa && $(RUN) ./arithchk.out >arith.h
 
 libmlton.a: $(OBJS)
 	$(AR) libmlton.a $(OBJS)
@@ -265,7 +277,7 @@
 gen/c-types.h gen/c-types.sml gen/ml-types.h: gen/gen-types.c util.h util.o
 	$(CC) $(OPTCFLAGS) $(WARNCFLAGS) -o gen/gen-types gen/gen-types.c util.o
 	rm -f gen/c-types.h gen/c-types.sml gen/ml-types.h
-	cd gen && ./gen-types
+	cd gen && $(RUN) ./gen-types
 	rm -f gen/gen-types$(EXE)
 
 c-types.h ml-types.h: gen/c-types.h gen/ml-types.h
@@ -276,7 +288,7 @@
 gen/basis-ffi.h gen/basis-ffi.sml: gen/gen-basis-ffi.sml gen/basis-ffi.def
 	mlton -output gen/gen-basis-ffi gen/gen-basis-ffi.sml
 	rm -f gen/basis-ffi.h gen/basis-ffi.sml
-	cd gen && ./gen-basis-ffi
+	cd gen && $(RUN) ./gen-basis-ffi
 	rm -f gen/gen-basis-ffi
 
 basis-ffi.h: gen/basis-ffi.h
@@ -286,13 +298,13 @@
 gen/sizes: gen/gen-sizes.c libmlton.a
 	$(CC) $(OPTCFLAGS) $(WARNCFLAGS) -o gen/gen-sizes -I. -L. -lmlton gen/gen-sizes.c util.o
 	rm -f gen/sizes
-	cd gen && ./gen-sizes
+	cd gen && $(RUN) ./gen-sizes
 	rm -f gen/gen-sizes$(EXE)
 
 bytecode/opcodes: bytecode/print-opcodes.c bytecode/opcode.h
 	$(CC) $(OPTCFLAGS) $(WARNCFLAGS) -o bytecode/print-opcodes bytecode/print-opcodes.c
 	rm -f bytecode/opcodes
-	cd bytecode && ./print-opcodes > opcodes
+	cd bytecode && $(RUN) ./print-opcodes > opcodes
 	rm -f bytecode/print-opcodes$(EXE)
 
 
