Interpret EINTR as G_IO_ERROR_AGAIN.
[platform/upstream/glib.git] / build-dll
index d3d5d54..3ad30ac 100644 (file)
--- a/build-dll
+++ b/build-dll
@@ -1,14 +1,14 @@
-#!/bin/sh
+#!/bin/bash
 
-# Temporary hack until building dlls or executables with exported
-# entry points is easier with gcc -mno-cygwin.
+# Temporary hack until building dlls is easier with gcc -mno-cygwin
+# ("mingw32").
 
 # This is usable with cygwin b20.1 and egcs-2.91.66 19990314
-# (egcs-1.1.2 release) as distributed by Mumit Khan. For other combinations,
-# no idea.
+# (egcs-1.1.2 release) or gcc-2.95(.2) as distributed by Mumit Khan. For
+# other combinations, no idea.
 
-GCC=gcc
-DLLTOOL=dlltool
+GCC="gcc"
+DLLTOOL="dlltool"
 AS=as
 
 library=$1; shift
@@ -25,15 +25,23 @@ dllfile=$libname.dll
 
 for F in $ldargs; do
     case $F in
-       *.o)    objs="$objs $F";;
+       *.[ao]) objs="$objs $F";;
     esac
 done
 
-$GCC -s -mdll -mno-cygwin -Wl,--base-file,$library.base -o $dllfile $ldargs
+$GCC -mdll -mno-cygwin -Wl,--base-file,$library.base -o $dllfile $ldargs &&
 $DLLTOOL --as=$AS --dllname $dllfile $defswitch --base-file $library.base --output-exp $library.exp $objs &&
-$GCC -s -mdll -mno-cygwin -Wl,--base-file,$library.base,$library.exp -o $dllfile $ldargs
+$GCC -mdll -mno-cygwin -Wl,--base-file,$library.base,$library.exp -o $dllfile $ldargs &&
 $DLLTOOL --as=$AS --dllname $dllfile $defswitch --base-file $library.base --output-exp $library.exp $objs &&
-$GCC -mdll -mno-cygwin -Wl,$library.exp -o $dllfile $ldargs
+$GCC -mdll -mno-cygwin -Wl,$library.exp -o $dllfile $ldargs &&
 $DLLTOOL --as=$AS --dllname $dllfile $defswitch --output-lib lib$libname.a $objs
 
+# Finally, also build import libraries for the Microsoft linker. You
+# will either need to have some decent version of MSVC, or get lib.exe
+# (and link.exe) from the (freely downloadable) Microsoft Platform SDK.
+
+if type -p lib.exe && [ -n "$def" -a "$def" != '-' ]; then
+    lib -name:$libname.dll -def:$def -out:$libname.lib
+fi
+
 rm $library.base $library.exp 2>/dev/null