Support for generation of .def files from .spec files

Dmitry Timoshkov dmitry at baikal.ru
Fri Feb 1 22:17:00 CST 2002


Hello.

Changelog:
    Dmitry Timoshkov <dmitry at codeweavers.com>
    Support for generation of .def files from .spec files.

diff -u cvs/hq/wine/Make.rules.in wine/Make.rules.in
--- cvs/hq/wine/Make.rules.in	Thu Jan 24 20:32:42 2002
+++ wine/Make.rules.in	Sat Feb  2 11:05:26 2002
@@ -92,7 +92,7 @@
 conf_manext     = 5
 includedir      = @includedir@/wine
 CLEAN_FILES     = *.o *.a *.so *.ln \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej \
-                  *.flc *.spec.c *.glue.c y.tab.c y.tab.h lex.yy.c core
+                  *.flc *.spec.c *.spec.def *.glue.c y.tab.c y.tab.h lex.yy.c core
 
 OBJS = $(SPEC_SRCS:.spec=.spec.o) $(C_SRCS:.c=.o) $(GEN_C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) \
        $(ASM_SRCS:.S=.o) $(GLUE:.c=.glue.o) $(EXTRA_OBJS)
@@ -101,7 +101,7 @@
 
 # Implicit rules
 
-.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.c .glue.c .pl .ok
+.SUFFIXES: .mc .rc .mc.rc .res .spec .spec.c .spec.def .glue.c .pl .ok
 
 .c.o:
 	$(CC) -c $(ALLCFLAGS) -o $@ $<
@@ -121,6 +121,9 @@
 .spec.spec.c:
 	$(LDPATH) $(WINEBUILD) @DLLFLAGS@ -L$(DLLDIR) -o $@ -spec $<
 
+.spec.spec.def:
+	$(LDPATH) $(WINEBUILD) @DLLFLAGS@ -L$(DLLDIR) -def $(MODULE).spec.def -o /dev/null -spec $<
+
 .c.glue.c:
 	$(LDPATH) $(WINEBUILD) @DLLFLAGS@ -o $@ -glue $<
 
@@ -253,6 +256,8 @@
 # Misc. rules
 
 $(SPEC_SRCS:.spec=.spec.c): $(WINEBUILD)
+
+$(SPEC_SRCS:.spec=.spec.def): $(WINEBUILD)
 
 $(GLUE:.c=.glue.c): $(WINEBUILD)
 
diff -u cvs/hq/wine/configure wine/configure
--- cvs/hq/wine/configure	Thu Jan 31 12:32:12 2002
+++ wine/configure	Sat Feb  2 11:52:39 2002
@@ -5174,8 +5174,58 @@
 fi
 
 
+echo $ac_n "checking whether stdcall symbols need to be decorated""... $ac_c" 1>&6
+echo "configure:5179: checking whether stdcall symbols need to be decorated" >&5
+if eval "test \"`echo '$''{'ac_cv_c_stdcall_decoration'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  saved_libs=$LIBS
+LIBS="conftest_asm.s $LIBS"
+if test "$ac_cv_c_extern_prefix" = "yes"
+then
+cat > conftest_asm.s <<EOF
+	.globl _ac_test at 0
+_ac_test at 0:
+EOF
+else
+cat > conftest_asm.s <<EOF
+	.globl ac_test at 0
+ac_test at 0:
+EOF
+fi
+cat > conftest.$ac_ext <<EOF
+#line 5198 "configure"
+#include "confdefs.h"
+extern void __attribute__((__stdcall__)) ac_test(void);
+int main() {
+ac_test(); return 0
+; return 0; }
+EOF
+if { (eval echo configure:5205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_c_stdcall_decoration="yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_c_stdcall_decoration="no"
+fi
+rm -f conftest*
+LIBS=$saved_libs
+fi
+
+echo "$ac_t""$ac_cv_c_stdcall_decoration" 1>&6
+if test "$ac_cv_c_stdcall_decoration" = "yes"
+then
+  cat >> confdefs.h <<\EOF
+#define NEED_STDCALL_DECORATION 1
+EOF
+
+fi
+
+
 echo $ac_n "checking whether assembler accepts .string""... $ac_c" 1>&6
-echo "configure:5179: checking whether assembler accepts .string" >&5
+echo "configure:5229: checking whether assembler accepts .string" >&5
 if eval "test \"`echo '$''{'ac_cv_c_asm_string'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5185,14 +5235,14 @@
 	.string "test"
 EOF
 cat > conftest.$ac_ext <<EOF
-#line 5189 "configure"
+#line 5239 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_asm_string="yes"
 else
@@ -5220,21 +5270,21 @@
 if test "$LIBEXT" = "so"
 then
   echo $ac_n "checking whether we can build a GNU style ELF dll""... $ac_c" 1>&6
-echo "configure:5224: checking whether we can build a GNU style ELF dll" >&5
+echo "configure:5274: checking whether we can build a GNU style ELF dll" >&5
 if eval "test \"`echo '$''{'ac_cv_c_dll_gnuelf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
   CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
   cat > conftest.$ac_ext <<EOF
-#line 5231 "configure"
+#line 5281 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:5238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_dll_gnuelf="yes"
 else
@@ -5255,21 +5305,21 @@
     LDDLLFLAGS="-Wl,-Bsymbolic"
   else
     echo $ac_n "checking whether we can build a UnixWare (Solaris) dll""... $ac_c" 1>&6
-echo "configure:5259: checking whether we can build a UnixWare (Solaris) dll" >&5
+echo "configure:5309: checking whether we can build a UnixWare (Solaris) dll" >&5
 if eval "test \"`echo '$''{'ac_cv_c_dll_unixware'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
     CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
     cat > conftest.$ac_ext <<EOF
-#line 5266 "configure"
+#line 5316 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:5273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_dll_unixware="yes"
 else
@@ -5333,7 +5383,7 @@
 wine_cv_libc_reentrant=no 
 
   echo $ac_n "checking for reentrant libc: __errno_location""... $ac_c" 1>&6
-echo "configure:5337: checking for reentrant libc: __errno_location" >&5
+echo "configure:5387: checking for reentrant libc: __errno_location" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r___errno_location'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5341,14 +5391,14 @@
   wine_cv_libc_r___errno_location=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 5345 "configure"
+#line 5395 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__errno_location(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:5352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r___errno_location=yes
 else
@@ -5371,7 +5421,7 @@
 
 
   echo $ac_n "checking for reentrant libc: __error""... $ac_c" 1>&6
-echo "configure:5375: checking for reentrant libc: __error" >&5
+echo "configure:5425: checking for reentrant libc: __error" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r___error'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5379,14 +5429,14 @@
   wine_cv_libc_r___error=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 5383 "configure"
+#line 5433 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__error(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:5390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r___error=yes
 else
@@ -5409,7 +5459,7 @@
 
 
   echo $ac_n "checking for reentrant libc: ___errno""... $ac_c" 1>&6
-echo "configure:5413: checking for reentrant libc: ___errno" >&5
+echo "configure:5463: checking for reentrant libc: ___errno" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r____errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5417,14 +5467,14 @@
   wine_cv_libc_r____errno=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 5421 "configure"
+#line 5471 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *___errno(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:5428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r____errno=yes
 else
@@ -5447,7 +5497,7 @@
 
 
   echo $ac_n "checking for reentrant libc: __thr_errno""... $ac_c" 1>&6
-echo "configure:5451: checking for reentrant libc: __thr_errno" >&5
+echo "configure:5501: checking for reentrant libc: __thr_errno" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r___thr_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5455,14 +5505,14 @@
   wine_cv_libc_r___thr_errno=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 5459 "configure"
+#line 5509 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__thr_errno(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:5466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r___thr_errno=yes
 else
@@ -5485,7 +5535,7 @@
 
 
   echo $ac_n "checking for reentrant libc: __errno""... $ac_c" 1>&6
-echo "configure:5489: checking for reentrant libc: __errno" >&5
+echo "configure:5539: checking for reentrant libc: __errno" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r___errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5493,14 +5543,14 @@
   wine_cv_libc_r___errno=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 5497 "configure"
+#line 5547 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__errno(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:5504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r___errno=yes
 else
@@ -5534,7 +5584,7 @@
 if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
 then
 echo $ac_n "checking for reentrant X libraries""... $ac_c" 1>&6
-echo "configure:5538: checking for reentrant X libraries" >&5
+echo "configure:5588: checking for reentrant X libraries" >&5
 if eval "test \"`echo '$''{'wine_cv_x_reentrant'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5583,19 +5633,19 @@
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:5587: checking for working alloca.h" >&5
+echo "configure:5637: checking for working alloca.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5592 "configure"
+#line 5642 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:5599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -5616,12 +5666,12 @@
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:5620: checking for alloca" >&5
+echo "configure:5670: checking for alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5625 "configure"
+#line 5675 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -5649,7 +5699,7 @@
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:5653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -5681,12 +5731,12 @@
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:5685: checking whether alloca needs Cray hooks" >&5
+echo "configure:5735: checking whether alloca needs Cray hooks" >&5
 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5690 "configure"
+#line 5740 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -5711,12 +5761,12 @@
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5715: checking for $ac_func" >&5
+echo "configure:5765: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5720 "configure"
+#line 5770 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5739,7 +5789,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5766,7 +5816,7 @@
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:5770: checking stack direction for C alloca" >&5
+echo "configure:5820: checking stack direction for C alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5774,7 +5824,7 @@
   ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 5778 "configure"
+#line 5828 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -5793,7 +5843,7 @@
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:5797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_stack_direction=1
 else
@@ -5855,12 +5905,12 @@
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5859: checking for $ac_func" >&5
+echo "configure:5909: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5864 "configure"
+#line 5914 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5883,7 +5933,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5967,17 +6017,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5971: checking for $ac_hdr" >&5
+echo "configure:6021: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5976 "configure"
+#line 6026 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6031: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6004,12 +6054,12 @@
 done
 
 echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:6008: checking whether stat file-mode macros are broken" >&5
+echo "configure:6058: checking whether stat file-mode macros are broken" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6013 "configure"
+#line 6063 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -6062,12 +6112,12 @@
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:6066: checking for working const" >&5
+echo "configure:6116: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6071 "configure"
+#line 6121 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -6116,7 +6166,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:6120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6170: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -6137,21 +6187,21 @@
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:6141: checking for inline" >&5
+echo "configure:6191: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 6148 "configure"
+#line 6198 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:6155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6205: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -6177,12 +6227,12 @@
 esac
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:6181: checking for ANSI C header files" >&5
+echo "configure:6231: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6186 "configure"
+#line 6236 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -6190,7 +6240,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6207,7 +6257,7 @@
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 6211 "configure"
+#line 6261 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -6225,7 +6275,7 @@
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 6229 "configure"
+#line 6279 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -6246,7 +6296,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 6250 "configure"
+#line 6300 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -6257,7 +6307,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:6261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -6281,12 +6331,12 @@
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:6285: checking for size_t" >&5
+echo "configure:6335: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6290 "configure"
+#line 6340 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6314,7 +6364,7 @@
 fi
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:6318: checking size of long long" >&5
+echo "configure:6368: checking size of long long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6322,10 +6372,9 @@
   ac_cv_sizeof_long_long=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 6326 "configure"
+#line 6376 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-#include <sys/types.h>
 main()
 {
   FILE *f=fopen("conftestval", "w");
@@ -6334,7 +6383,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:6338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -6355,12 +6404,12 @@
 
 
 echo $ac_n "checking whether linux/input.h is for real""... $ac_c" 1>&6
-echo "configure:6359: checking whether linux/input.h is for real" >&5
+echo "configure:6408: checking whether linux/input.h is for real" >&5
 if eval "test \"`echo '$''{'wine_cv_linux_input_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6364 "configure"
+#line 6413 "configure"
 #include "confdefs.h"
 
 	    #include <linux/input.h>
@@ -6373,7 +6422,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_linux_input_h=yes
 else
@@ -6397,12 +6446,12 @@
 
    
 echo $ac_n "checking whether we can use re-entrant gethostbyname_r Linux style""... $ac_c" 1>&6
-echo "configure:6401: checking whether we can use re-entrant gethostbyname_r Linux style" >&5
+echo "configure:6450: checking whether we can use re-entrant gethostbyname_r Linux style" >&5
 if eval "test \"`echo '$''{'wine_cv_linux_gethostbyname_r_6'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6406 "configure"
+#line 6455 "configure"
 #include "confdefs.h"
 
 #include <netdb.h>
@@ -6423,7 +6472,7 @@
     
 ; return 0; }
 EOF
-if { (eval echo configure:6427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6476: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_linux_gethostbyname_r_6=yes
 else
@@ -6449,12 +6498,12 @@
 if test "$ac_cv_header_linux_joystick_h" = "yes"
 then
    echo $ac_n "checking whether linux/joystick.h uses the Linux 2.2+ API""... $ac_c" 1>&6
-echo "configure:6453: checking whether linux/joystick.h uses the Linux 2.2+ API" >&5
+echo "configure:6502: checking whether linux/joystick.h uses the Linux 2.2+ API" >&5
 if eval "test \"`echo '$''{'wine_cv_linux_joystick_22_api'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6458 "configure"
+#line 6507 "configure"
 #include "confdefs.h"
 
 	#include <sys/ioctl.h>
@@ -6469,7 +6518,7 @@
 /*empty*/
 ; return 0; }
 EOF
-if { (eval echo configure:6473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_linux_joystick_22_api=yes
 else
@@ -6496,12 +6545,12 @@
 if test "$ac_cv_header_sys_vfs_h" = "yes"
 then
     echo $ac_n "checking whether sys/vfs.h defines statfs""... $ac_c" 1>&6
-echo "configure:6500: checking whether sys/vfs.h defines statfs" >&5
+echo "configure:6549: checking whether sys/vfs.h defines statfs" >&5
 if eval "test \"`echo '$''{'wine_cv_sys_vfs_has_statfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6505 "configure"
+#line 6554 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -6518,7 +6567,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_sys_vfs_has_statfs=yes
 else
@@ -6545,12 +6594,12 @@
 if test "$ac_cv_header_sys_statfs_h" = "yes"
 then
     echo $ac_n "checking whether sys/statfs.h defines statfs""... $ac_c" 1>&6
-echo "configure:6549: checking whether sys/statfs.h defines statfs" >&5
+echo "configure:6598: checking whether sys/statfs.h defines statfs" >&5
 if eval "test \"`echo '$''{'wine_cv_sys_statfs_has_statfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6554 "configure"
+#line 6603 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -6565,7 +6614,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_sys_statfs_has_statfs=yes
 else
@@ -6592,12 +6641,12 @@
 if test "$ac_cv_header_sys_mount_h" = "yes"
 then
     echo $ac_n "checking whether sys/mount.h defines statfs""... $ac_c" 1>&6
-echo "configure:6596: checking whether sys/mount.h defines statfs" >&5
+echo "configure:6645: checking whether sys/mount.h defines statfs" >&5
 if eval "test \"`echo '$''{'wine_cv_sys_mount_has_statfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6601 "configure"
+#line 6650 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -6612,7 +6661,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_sys_mount_has_statfs=yes
 else
@@ -6638,7 +6687,7 @@
 
 
 echo $ac_n "checking for statfs.f_bfree""... $ac_c" 1>&6
-echo "configure:6642: checking for statfs.f_bfree" >&5
+echo "configure:6691: checking for statfs.f_bfree" >&5
 if eval "test \"`echo '$''{'wine_cv_statfs_bfree'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6647,7 +6696,7 @@
         wine_cv_statfs_bfree=no
     else
     	cat > conftest.$ac_ext <<EOF
-#line 6651 "configure"
+#line 6700 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -6674,7 +6723,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_statfs_bfree=yes
 else
@@ -6698,7 +6747,7 @@
 fi
 
 echo $ac_n "checking for statfs.f_bavail""... $ac_c" 1>&6
-echo "configure:6702: checking for statfs.f_bavail" >&5
+echo "configure:6751: checking for statfs.f_bavail" >&5
 if eval "test \"`echo '$''{'wine_cv_statfs_bavail'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6707,7 +6756,7 @@
         wine_cv_statfs_bavail=no
     else
     	cat > conftest.$ac_ext <<EOF
-#line 6711 "configure"
+#line 6760 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -6734,7 +6783,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_statfs_bavail=yes
 else
@@ -6759,12 +6808,12 @@
 
 
 echo $ac_n "checking for msg_accrights in struct msghdr""... $ac_c" 1>&6
-echo "configure:6763: checking for msg_accrights in struct msghdr" >&5
+echo "configure:6812: checking for msg_accrights in struct msghdr" >&5
 if eval "test \"`echo '$''{'ac_cv_c_msg_accrights'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6768 "configure"
+#line 6817 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -6772,7 +6821,7 @@
 struct msghdr hdr; hdr.msg_accrights=0
 ; return 0; }
 EOF
-if { (eval echo configure:6776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_msg_accrights="yes"
 else
@@ -6795,12 +6844,12 @@
 
 
 echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6
-echo "configure:6799: checking for sa_len in struct sockaddr" >&5
+echo "configure:6848: checking for sa_len in struct sockaddr" >&5
 if eval "test \"`echo '$''{'ac_cv_c_sockaddr_sa_len'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6804 "configure"
+#line 6853 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -6809,7 +6858,7 @@
 static struct sockaddr addr; addr.sa_len = 1
 ; return 0; }
 EOF
-if { (eval echo configure:6813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6862: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_sockaddr_sa_len="yes"
 else
@@ -6832,12 +6881,12 @@
 
 
 echo $ac_n "checking for sun_len in struct sockaddr_un""... $ac_c" 1>&6
-echo "configure:6836: checking for sun_len in struct sockaddr_un" >&5
+echo "configure:6885: checking for sun_len in struct sockaddr_un" >&5
 if eval "test \"`echo '$''{'ac_cv_c_sockaddr_sun_len'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6841 "configure"
+#line 6890 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -6846,7 +6895,7 @@
 static struct sockaddr_un addr; addr.sun_len = 1
 ; return 0; }
 EOF
-if { (eval echo configure:6850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6899: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_sockaddr_sun_len="yes"
 else
@@ -6869,12 +6918,12 @@
 
 
 echo $ac_n "checking whether we need to define __i386__""... $ac_c" 1>&6
-echo "configure:6873: checking whether we need to define __i386__" >&5
+echo "configure:6922: checking whether we need to define __i386__" >&5
 if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6878 "configure"
+#line 6927 "configure"
 #include "confdefs.h"
 #if (defined(i386) || defined(__i386)) && !defined(__i386__)
 yes
diff -u cvs/hq/wine/configure.in wine/configure.in
--- cvs/hq/wine/configure.in	Thu Jan 31 12:32:12 2002
+++ wine/configure.in	Sat Feb  2 11:44:16 2002
@@ -652,6 +652,34 @@
             [Define if symbols declared in assembly code need an underscore prefix])
 fi
 
+dnl **** Check whether stdcall symbols need to be decorated ****
+
+AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
+               ac_cv_c_stdcall_decoration,
+[saved_libs=$LIBS
+LIBS="conftest_asm.s $LIBS"
+if test "$ac_cv_c_extern_prefix" = "yes"
+then
+cat > conftest_asm.s <<EOF
+	.globl _ac_test at 0
+_ac_test at 0:
+EOF
+else
+cat > conftest_asm.s <<EOF
+	.globl ac_test at 0
+ac_test at 0:
+EOF
+fi
+AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
+            [ac_test(); return 0],
+            ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
+LIBS=$saved_libs])
+if test "$ac_cv_c_stdcall_decoration" = "yes"
+then
+  AC_DEFINE(NEED_STDCALL_DECORATION, 1,
+            [Define if stdcall symbols need to be decorated])
+fi
+
 dnl **** Check for .string in assembler ****
 
 AC_CACHE_CHECK([whether assembler accepts .string],
diff -u cvs/hq/wine/include/config.h.in wine/include/config.h.in
--- cvs/hq/wine/include/config.h.in	Thu Jan 31 12:32:40 2002
+++ wine/include/config.h.in	Sat Feb  2 11:44:57 2002
@@ -1,4 +1,4 @@
-/* include/config.h.in.  Generated automatically from configure.in by autoheader 2.13.  */
+/* include/config.h.in.  Generated automatically from configure.in by autoheader.  */
 
 /* Define if using alloca.c.  */
 #undef C_ALLOCA
@@ -501,6 +501,9 @@
 
 /* Define if symbols declared in assembly code need an underscore prefix */
 #undef NEED_UNDERSCORE_PREFIX
+
+/* Define if stdcall symbols need to be decorated */
+#undef NEED_STDCALL_DECORATION
 
 /* Define to use .string instead of .ascii */
 #undef HAVE_ASM_STRING
diff -u cvs/hq/wine/tools/winebuild/build.h wine/tools/winebuild/build.h
--- cvs/hq/wine/tools/winebuild/build.h	Mon Dec 24 13:30:27 2001
+++ wine/tools/winebuild/build.h	Sat Feb  2 11:06:35 2002
@@ -153,6 +153,7 @@
 extern void BuildRelays32( FILE *outfile );
 extern void BuildSpec16File( FILE *outfile );
 extern void BuildSpec32File( FILE *outfile );
+extern void BuildDef32File( FILE *outfile );
 extern SPEC_TYPE ParseTopLevel( FILE *file );
 
 /* global variables */
diff -u cvs/hq/wine/tools/winebuild/main.c wine/tools/winebuild/main.c
--- cvs/hq/wine/tools/winebuild/main.c	Fri Dec 14 15:16:11 2001
+++ wine/tools/winebuild/main.c	Sat Feb  2 11:34:37 2002
@@ -28,6 +28,7 @@
 int Limit = 0;
 int DLLHeapSize = 0;
 int UsePIC = 0;
+int DoDEF = 0;
 int stack_size = 0;
 int nb_entry_points = 0;
 int nb_names = 0;
@@ -50,9 +51,11 @@
 
 const char *input_file_name;
 const char *output_file_name;
+const char *output_def_file_name;
 
 static FILE *input_file;
 static FILE *output_file;
+static FILE *output_def_file;
 
 /* execution mode */
 static enum { MODE_NONE, MODE_SPEC, MODE_GLUE, MODE_RELAY16, MODE_RELAY32 } exec_mode = MODE_NONE;
@@ -72,6 +75,7 @@
 static void cleanup(void)
 {
     if (output_file_name) unlink( output_file_name );
+    if (output_def_file_name) unlink( output_def_file_name );
 }
 
 
@@ -87,6 +91,7 @@
     const char *usage;
 };
 
+static void do_def(const char *arg);
 static void do_pic(void);
 static void do_output( const char *arg );
 static void do_usage(void);
@@ -105,12 +110,26 @@
     { "-o",       1, do_output,  "-o name          Set the output file name (default: stdout)" },
     { "-sym",     1, do_sym,     "-sym file.o      Read the list of undefined symbols from 'file.o'" },
     { "-spec",    1, do_spec,    "-spec file.spec  Build a .c file from a spec file" },
+    { "-def",     1, do_def,     "-def file.def    Build a .def file from a spec file" },
     { "-glue",    1, do_glue,    "-glue file.c     Build the 16-bit glue for a .c file" },
     { "-relay16", 0, do_relay16, "-relay16         Build the 16-bit relay assembly routines" },
     { "-relay32", 0, do_relay32, "-relay32         Build the 32-bit relay assembly routines" },
     { NULL,       0, NULL,      NULL }
 };
 
+static void do_def(const char *arg)
+{
+    DoDEF = 1;
+
+    if (!(output_def_file = fopen( arg, "w" )))
+    {
+        fprintf( stderr, "Unable to create output file '%s'\n", arg );
+        exit(1);
+    }
+    output_def_file_name = arg;
+    atexit( cleanup );  /* make sure we remove the output file on exit */
+}
+
 static void do_pic(void)
 {
     UsePIC = 1;
@@ -118,11 +137,6 @@
 
 static void do_output( const char *arg )
 {
-    if ( ( unlink ( arg ) ) == -1 && ( errno != ENOENT ) ) 
-    {
-        fprintf ( stderr, "Unable to create output file '%s'\n", arg );
-        exit (1);
-    }
     if (!(output_file = fopen( arg, "w" )))
     {
         fprintf( stderr, "Unable to create output file '%s'\n", arg );
@@ -240,6 +254,8 @@
                 break;
             case SPEC_WIN32:
                 BuildSpec32File( output_file );
+                if (DoDEF)
+                    BuildDef32File( output_def_file );
                 break;
             default: assert(0);
         }
@@ -261,6 +277,11 @@
     {
         fclose( output_file );
         output_file_name = NULL;
+    }
+    if (output_def_file_name)
+    {
+	fclose( output_def_file );
+	output_def_file_name = NULL;
     }
     return 0;
 }
diff -u cvs/hq/wine/tools/winebuild/parser.c wine/tools/winebuild/parser.c
--- cvs/hq/wine/tools/winebuild/parser.c	Mon Dec 24 13:30:27 2001
+++ wine/tools/winebuild/parser.c	Sat Feb  2 11:14:59 2002
@@ -510,7 +510,6 @@
 	else if (strcmp(token, "file") == 0)
 	{
 	    strcpy(DLLFileName, GetToken(0));
-	    strupper(DLLFileName);
 	}
         else if (strcmp(token, "type") == 0)
         {
@@ -612,7 +611,12 @@
     if (!DLLFileName[0])
     {
         if (SpecMode == SPEC_MODE_DLL)
-            sprintf( DLLFileName, "%s.dll", DLLName );
+	{
+	    strcpy( DLLFileName, DLLName );
+	    /* Append .dll to name if no extension present */
+	    if (!strrchr( DLLFileName, '.'))
+		strcat( DLLFileName, ".dll" );
+	}
         else
             sprintf( DLLFileName, "%s.exe", DLLName );
     }
diff -u cvs/hq/wine/tools/winebuild/spec32.c wine/tools/winebuild/spec32.c
--- cvs/hq/wine/tools/winebuild/spec32.c	Mon Dec 24 13:30:27 2001
+++ wine/tools/winebuild/spec32.c	Sat Feb  2 11:46:29 2002
@@ -759,3 +759,76 @@
                  "}\n", DLLName );
     }
 }
+
+static void DEF32_output_exports(FILE *outfile)
+{
+    int i;
+
+    for(i = 0; i < nb_entry_points; i++)
+    {
+	ORDDEF *odp = EntryPoints[i];
+	if(!odp || !*odp->name || (odp->flags & FLAG_NOIMPORT)) continue;
+
+	fprintf(outfile, "\t%s", odp->name);
+
+	switch(odp->type)
+	{
+	case TYPE_EXTERN:
+	case TYPE_VARARGS:
+	case TYPE_CDECL:
+	case TYPE_VARIABLE:
+	    /* try to reduce output */
+	    if(strcmp(odp->name, odp->link_name))
+		fprintf(outfile, "=%s", odp->link_name);
+	    break;
+	case TYPE_STDCALL:
+	{
+#ifdef NEED_STDCALL_DECORATION
+	    int at_param = strlen(odp->u.func.arg_types) * sizeof(int);
+	    fprintf(outfile, "@%d", at_param);
+#endif /* NEED_STDCALL_DECORATION */
+	    /* try to reduce output */
+	    if(strcmp(odp->name, odp->link_name))
+	    {
+		fprintf(outfile, "=%s", odp->link_name);
+#ifdef NEED_STDCALL_DECORATION
+		fprintf(outfile, "@%d", at_param);
+#endif /* NEED_STDCALL_DECORATION */
+	    }
+	    break;
+	}
+	case TYPE_STUB:
+	    fprintf(outfile, "=%s", make_internal_name( odp, "stub" ));
+	    break;
+	case TYPE_FORWARD:
+	    fprintf(outfile, "=lib%s", odp->link_name);
+	    break;
+	default:
+	    assert(0);
+	}
+	fprintf(outfile, " @%d\n", odp->ordinal);
+    }
+
+    for(i = 0; i < nb_debug_channels; i++)
+        fprintf(outfile, "\t__wine_dbch_%s\n", debug_channels[i]);
+}
+
+/*******************************************************************
+ *         BuildDef32File
+ *
+ * Build a Win32 def file from a spec file.
+ */
+void BuildDef32File(FILE *outfile)
+{
+    AssignOrdinals();
+
+    fprintf(outfile, "; File generated automatically from %s; do not edit!\n\n",
+	    input_file_name );
+
+    fprintf(outfile, "LIBRARY lib%s\n\n", DLLFileName);
+
+    fprintf(outfile, "EXPORTS\n");
+
+    /* Output the exports and relay entry points */
+    DEF32_output_exports(outfile);
+}








More information about the wine-patches mailing list