Support for generation of .def files from .spec files.

This commit is contained in:
Dmitry Timoshkov 2002-02-04 18:48:18 +00:00 committed by Alexandre Julliard
parent d15ed230a8
commit 93a5b8681d
8 changed files with 292 additions and 105 deletions

View File

@ -92,7 +92,7 @@ prog_manext = 1
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 @@ LINTS = $(C_SRCS:.c=.ln)
# 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 @@ LINTS = $(C_SRCS:.c=.ln)
.spec.spec.c:
$(LDPATH) $(WINEBUILD) @DLLFLAGS@ -L$(DLLDIR) -o $@ -spec $<
.spec.spec.def:
$(LDPATH) $(WINEBUILD) @DLLFLAGS@ -L$(DLLDIR) -o $@ -def $<
.c.glue.c:
$(LDPATH) $(WINEBUILD) @DLLFLAGS@ -o $@ -glue $<
@ -254,6 +257,8 @@ $(WINETEST):
$(SPEC_SRCS:.spec=.spec.c): $(WINEBUILD)
$(SPEC_SRCS:.spec=.spec.def): $(WINEBUILD)
$(GLUE:.c=.glue.c): $(WINEBUILD)
$(RC_SRCS:.rc=.res): $(WRC)

250
configure vendored
View File

@ -5174,8 +5174,58 @@ EOF
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@0
_ac_test@0:
EOF
else
cat > conftest_asm.s <<EOF
.globl ac_test@0
ac_test@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 @@ cat > conftest_asm.s <<EOF
.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 @@ LDDLLFLAGS=""
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 @@ echo "$ac_t""$ac_cv_c_dll_gnuelf" 1>&6
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 @@ fi
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 @@ else
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 @@ fi
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 @@ else
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 @@ fi
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 @@ else
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 @@ fi
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 @@ else
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 @@ fi
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 @@ else
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 @@ fi
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 @@ fi
# 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 @@ EOF
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 @@ int main() {
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 @@ EOF
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 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
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 @@ $ac_func();
; 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 @@ done
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 @@ else
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 @@ main ()
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 @@ for ac_func in \
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 @@ $ac_func();
; 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 @@ for ac_hdr in \
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 @@ fi
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 @@ fi
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 @@ ccp = (char const *const *) p;
; 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 @@ EOF
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 @@ EOF
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 @@ else
#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 @@ rm -f conftest*
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 @@ fi
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 @@ if test "$cross_compiling" = yes; then
:
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 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
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 @@ EOF
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 @@ EOF
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,7 +6372,7 @@ else
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>
@ -6334,7 +6384,7 @@ main()
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:6388: \"$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 +6405,12 @@ EOF
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:6409: 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 6414 "configure"
#include "confdefs.h"
#include <linux/input.h>
@ -6373,7 +6423,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_linux_input_h=yes
else
@ -6397,12 +6447,12 @@ EOF
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:6451: 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 6456 "configure"
#include "confdefs.h"
#include <netdb.h>
@ -6423,7 +6473,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_linux_gethostbyname_r_6=yes
else
@ -6449,12 +6499,12 @@ EOF
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:6503: 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 6508 "configure"
#include "confdefs.h"
#include <sys/ioctl.h>
@ -6469,7 +6519,7 @@ int main() {
/*empty*/
; return 0; }
EOF
if { (eval echo configure:6473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_linux_joystick_22_api=yes
else
@ -6496,12 +6546,12 @@ fi
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:6550: 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 6555 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -6518,7 +6568,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6572: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_sys_vfs_has_statfs=yes
else
@ -6545,12 +6595,12 @@ fi
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:6599: 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 6604 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -6565,7 +6615,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_sys_statfs_has_statfs=yes
else
@ -6592,12 +6642,12 @@ fi
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:6646: 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 6651 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -6612,7 +6662,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_sys_mount_has_statfs=yes
else
@ -6638,7 +6688,7 @@ fi
echo $ac_n "checking for statfs.f_bfree""... $ac_c" 1>&6
echo "configure:6642: checking for statfs.f_bfree" >&5
echo "configure:6692: 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 +6697,7 @@ else
wine_cv_statfs_bfree=no
else
cat > conftest.$ac_ext <<EOF
#line 6651 "configure"
#line 6701 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -6674,7 +6724,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_statfs_bfree=yes
else
@ -6698,7 +6748,7 @@ EOF
fi
echo $ac_n "checking for statfs.f_bavail""... $ac_c" 1>&6
echo "configure:6702: checking for statfs.f_bavail" >&5
echo "configure:6752: 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 +6757,7 @@ else
wine_cv_statfs_bavail=no
else
cat > conftest.$ac_ext <<EOF
#line 6711 "configure"
#line 6761 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -6734,7 +6784,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:6738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:6788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_statfs_bavail=yes
else
@ -6759,12 +6809,12 @@ fi
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:6813: 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 6818 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
@ -6772,7 +6822,7 @@ int main() {
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:6826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_msg_accrights="yes"
else
@ -6795,12 +6845,12 @@ fi
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:6849: 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 6854 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
@ -6809,7 +6859,7 @@ int main() {
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:6863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_sockaddr_sa_len="yes"
else
@ -6832,12 +6882,12 @@ fi
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:6886: 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 6891 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
@ -6846,7 +6896,7 @@ int main() {
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:6900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_sockaddr_sun_len="yes"
else
@ -6869,12 +6919,12 @@ fi
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:6923: 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 6928 "configure"
#include "confdefs.h"
#if (defined(i386) || defined(__i386)) && !defined(__i386__)
yes

View File

@ -652,6 +652,34 @@ then
[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@0
_ac_test@0:
EOF
else
cat > conftest_asm.s <<EOF
.globl ac_test@0
ac_test@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],

View File

@ -502,6 +502,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

View File

@ -153,6 +153,7 @@ extern void BuildRelays16( FILE *outfile );
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 */

View File

@ -55,7 +55,15 @@ static FILE *input_file;
static FILE *output_file;
/* execution mode */
static enum { MODE_NONE, MODE_SPEC, MODE_GLUE, MODE_RELAY16, MODE_RELAY32 } exec_mode = MODE_NONE;
static enum
{
MODE_NONE,
MODE_SPEC,
MODE_GLUE,
MODE_DEF,
MODE_RELAY16,
MODE_RELAY32
} exec_mode = MODE_NONE;
/* open the input file */
static void open_input( const char *name )
@ -91,6 +99,7 @@ static void do_pic(void);
static void do_output( const char *arg );
static void do_usage(void);
static void do_spec( const char *arg );
static void do_def( const char *arg );
static void do_glue( const char *arg );
static void do_relay16(void);
static void do_relay32(void);
@ -105,6 +114,7 @@ static const struct option_descr option_table[] =
{ "-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.spec 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" },
@ -149,6 +159,13 @@ static void do_spec( const char *arg )
open_input( arg );
}
static void do_def( const char *arg )
{
if (exec_mode != MODE_NONE || !arg[0]) do_usage();
exec_mode = MODE_DEF;
open_input( arg );
}
static void do_glue( const char *arg )
{
if (exec_mode != MODE_NONE || !arg[0]) do_usage();
@ -244,6 +261,18 @@ int main(int argc, char **argv)
default: assert(0);
}
break;
case MODE_DEF:
switch (ParseTopLevel( input_file ))
{
case SPEC_WIN16:
fatal_error( "Cannot yet build .def file for 16-bit dlls\n" );
break;
case SPEC_WIN32:
BuildDef32File( output_file );
break;
default: assert(0);
}
break;
case MODE_GLUE:
BuildGlue( output_file, input_file );
break;

View File

@ -510,7 +510,6 @@ SPEC_TYPE ParseTopLevel( FILE *file )
else if (strcmp(token, "file") == 0)
{
strcpy(DLLFileName, GetToken(0));
strupper(DLLFileName);
}
else if (strcmp(token, "type") == 0)
{
@ -612,7 +611,12 @@ SPEC_TYPE ParseTopLevel( FILE *file )
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 );
}

View File

@ -759,3 +759,70 @@ void BuildSpec32File( FILE *outfile )
"}\n", DLLName );
}
}
/*******************************************************************
* BuildDef32File
*
* Build a Win32 def file from a spec file.
*/
void BuildDef32File(FILE *outfile)
{
int i;
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 */
for(i = 0; i < nb_entry_points; i++)
{
ORDDEF *odp = EntryPoints[i];
if(!odp || !*odp->name || (odp->flags & FLAG_NOIMPORT)) continue;
fprintf(outfile, " %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);
}
}