Fixed some deadlocks.
[wine] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl Original author: Michael Patra
3 dnl See ChangeLog file for detailed change history.
4
5 m4_define(WINE_VERSION,regexp(m4_include(VERSION),[version \([-.0-9A-Za-z]+\)],[\1]))
6
7 AC_PREREQ(2.50)
8 AC_INIT([Wine],WINE_VERSION)
9 AC_CONFIG_SRCDIR(server/atom.c)         
10 AC_CONFIG_HEADERS(include/config.h)
11 AC_CONFIG_AUX_DIR(tools)
12
13 dnl **** Command-line arguments ****
14
15 dnl Default values
16 LIBEXT=so       # library type .so or .a
17
18 AC_ARG_ENABLE(debug, AC_HELP_STRING([--disable-debug],[compile out all debugging messages]))
19 AC_ARG_ENABLE(trace, AC_HELP_STRING([--disable-trace],[compile out TRACE messages]))
20 AC_ARG_ENABLE(opengl,AC_HELP_STRING([--enable-opengl],[force usage of OpenGL even if the latter is thread-safe via pthread]))
21 AC_ARG_WITH(curses,     AC_HELP_STRING([--without-curses],[do not use curses]))
22 AC_ARG_WITH(reentrant-x,AC_HELP_STRING([--without-reentrant-x],[compile for use with non-reentrant X libraries]))
23
24 AC_SUBST(OPTIONS)
25 if test "x$enable_debug" = "xno"
26 then
27     AC_DEFINE(NO_DEBUG_MSGS,1,[Define to disable all debug messages.])
28 fi
29 if test "x$enable_trace" = "xno" -o "x$enable_debug" = "xno"
30 then
31     AC_DEFINE(NO_TRACE_MSGS,1,[Define to disable trace messages.])
32 fi
33
34 dnl **** Check for some programs ****
35
36 AC_CANONICAL_TARGET
37 AC_PROG_MAKE_SET
38 AC_PROG_CC
39 AC_PROG_CPP
40 AC_PATH_XTRA
41 AC_PROG_YACC
42 AC_PROG_LEX
43
44 dnl **** Just additional warning checks, since AC_PROG just sets 'yacc' even
45 dnl **** without one present.
46 AC_CHECK_PROGS(XYACC,$YACC bison yacc,none)
47 if test "$XYACC" = "none"
48 then
49   AC_MSG_ERROR([no suitable bison/yacc found. Please install the 'bison' package.])
50 fi
51 AC_CHECK_PROGS(XLEX,$LEX flex lex,none)
52 if test "$XLEX" = "none"
53 then
54   AC_MSG_ERROR([no suitable lex found. Please install the 'flex' package.])
55 fi
56 AC_PROG_RANLIB
57 AC_PROG_INSTALL
58 AC_PROG_LN_S
59 AC_CHECK_PROG(C2MAN,c2man,c2man,\$(TOPSRCDIR)/tools/c2man.pl)
60 AC_PATH_PROG(LDCONFIG, ldconfig, true, /sbin:/usr/sbin:$PATH)
61
62 dnl Check for lint
63 AC_CHECK_PROGS(LINT, lclint lint)
64 if test "$LINT" = "lint"
65 then
66   LINTFLAGS="$LINTFLAGS -errchk=%all,no%longptr64 -errhdr=%user -Ncheck=macro -Nlevel=4"
67   dnl LINTFLAGS='-D_SIZE_T "-Dsize_t=unsigned long" -errchk=longptr64'
68 fi
69 AC_SUBST(LINT)
70 AC_SUBST(LINTFLAGS)
71
72 case $host_os in
73   *cygwin*) LDCOMBINE="ld -r --enable-stdcall-fixup" ;;
74          *) LDCOMBINE="ld -r" ;;
75 esac
76 AC_SUBST(LDCOMBINE)
77
78 dnl **** Check for some libraries ****
79
80 dnl Check for -lm
81 AC_CHECK_LIB(m,sqrt)
82 dnl Check for -li386 for NetBSD and OpenBSD
83 AC_CHECK_LIB(i386,i386_set_ldt)
84 dnl Check for -lossaudio for NetBSD
85 AC_CHECK_LIB(ossaudio,_oss_ioctl)
86 dnl Check for -lw for Solaris
87 AC_CHECK_FUNCS(iswalnum,,AC_CHECK_LIB(w,iswalnum))
88 dnl Check for -lnsl for Solaris
89 AC_CHECK_FUNCS(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname))
90 dnl Check for -lsocket for Solaris
91 AC_CHECK_FUNCS(connect,,AC_CHECK_LIB(socket,connect))
92 dnl Check for -lxpg4 for FreeBSD
93 AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
94 dnl Check for -lmmap for OS/2
95 AC_CHECK_LIB(mmap,mmap)
96
97 dnl Check for openpty
98 UTILLIBS=""
99 AC_SUBST(UTILLIBS)
100 AC_CHECK_FUNCS(openpty,,
101         [AC_CHECK_LIB(util,openpty,
102                 [AC_DEFINE(HAVE_OPENPTY)
103                 UTILLIBS="-lutil"]
104         )])
105
106 DLLIBS=""
107 AC_SUBST(DLLIBS)
108 AC_CHECK_HEADERS(dlfcn.h,
109     [AC_CHECK_FUNCS(dlopen,,
110         [AC_CHECK_LIB(dl,dlopen,
111                      [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
112                      DLLIBS="-ldl"],
113                      LIBEXT="a")]
114         )],
115         LIBEXT="a"
116     )
117
118 JPEGLIB=""
119 AC_SUBST(JPEGLIB)
120 AC_CHECK_HEADERS(jpeglib.h,
121     AC_CHECK_LIB(jpeg,jpeg_start_decompress,
122         AC_DEFINE(HAVE_LIBJPEG,1,[Define if you have libjpeg including devel headers])
123         JPEGLIB="-ljpeg"
124     )
125 )
126
127
128 AC_SUBST(XLIB)
129 AC_SUBST(XFILES)
130 XFILES=""
131 AC_SUBST(OPENGLFILES)
132 OPENGLFILES=""
133 AC_SUBST(GLU32FILES)
134 GLU32FILES=""
135 if test "$have_x" = "yes"
136 then
137     XLIB="-lXext -lX11"
138     ac_save_CPPFLAGS="$CPPFLAGS"
139     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
140
141     dnl *** All of the following tests require X11/Xlib.h
142     AC_CHECK_HEADERS(X11/Xlib.h,
143       [
144         dnl *** Check for X keyboard extension
145         AC_CHECK_HEADERS(X11/XKBlib.h,
146             [ dnl *** If X11/XKBlib.h exists...
147               AC_CHECK_LIB(X11, XkbQueryExtension,
148               AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
149               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
150             ],
151             AC_MSG_WARN([[Xkb extension not found, Wine will be built without it]])
152         )
153
154         dnl *** Check for X Shm extension
155         AC_CHECK_HEADERS(X11/extensions/XShm.h,
156             [ dnl *** If X11/extensions/XShm.h exists...
157               AC_CHECK_LIB(Xext, XShmQueryExtension,
158               AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
159               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
160             ],
161             AC_MSG_WARN([[XShm extension not found, Wine will be built without it]])
162         )
163
164         dnl *** Check for X shape extension
165         AC_CHECK_HEADERS(X11/extensions/shape.h,
166             [ dnl *** If X11/extensions/shape.h exists...
167               AC_CHECK_LIB(Xext,XShapeQueryExtension,
168               AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
169               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
170             ],
171             AC_MSG_WARN([[XShape extension not found, Wine will be built without it]])
172         )
173         
174         dnl *** Check for XFree86 DGA / DGA 2.0 extension
175         AC_CHECK_HEADERS(X11/extensions/xf86dga.h,
176             [ dnl *** If X11/extensions/xf86dga.h exists, check 
177               dnl *** for XDGAQueryExtension()...
178               AC_CHECK_LIB(Xxf86dga, XDGAQueryExtension,
179                 [ dnl *** If found...
180                   AC_DEFINE(HAVE_LIBXXF86DGA2, 1,
181                             [Define if you have the Xxf86dga library version 2])
182                   X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
183                ],
184                 [ dnl *** If not found, look for XF86DGAQueryExtension()
185                   dnl *** instead (DGA 2.0 not found)...
186                   AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
187                     [ AC_DEFINE(HAVE_LIBXXF86DGA, 1,
188                                 [Define if you have the Xxf86dga library version 1])
189                       X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
190                     ],,
191                     $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
192                   )
193                 ],
194                 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
195               )
196             ],
197             AC_MSG_WARN([[DGA extension not found, Wine will be built without it]])
198         )
199
200         dnl *** Check for XFree86 VMODE extension
201         AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,
202             [ dnl *** If X11/extensions/xf86vmode.h exists...
203                 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension,
204                   [ AC_DEFINE(HAVE_LIBXXF86VM, 1, [Define if you have the Xxf86vm library])
205                      X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm"
206                   ],,
207                   $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
208                 )
209             ],
210             AC_MSG_WARN([[XFree86 VMODE extension not found, Wine will be built without it]])
211         )
212
213         dnl *** Check for XVideo extension supporting XvImages
214         AC_CHECK_HEADERS(X11/extensions/Xvlib.h,
215             [ dnl *** If X11/extensions/Xvlib.h exists...
216                 AC_CHECK_LIB(Xv, XvShmCreateImage,
217                   [ AC_DEFINE(HAVE_XVIDEO, 1, [Define if the X libraries support XVideo])
218                      X_PRE_LIBS="$X_PRE_LIBS -lXv"
219                   ],,
220                   $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
221                 )
222             ],
223             AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]])
224         )
225
226         dnl *** Check for XRender extension
227         AC_CHECK_HEADERS(X11/extensions/Xrender.h,
228             [ dnl *** If X11/extensions/Xrender.h exists...
229                 AC_CHECK_LIB(Xrender, XRenderQueryExtension,
230                   [ AC_DEFINE(HAVE_LIBXRENDER, 1, [Define if you have the XRender extension library])
231                      X_PRE_LIBS="$X_PRE_LIBS -lXrender"
232                   ],,
233                   $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
234                 )
235             ],
236             AC_MSG_WARN([[XRender extension not found, Wine will be built without it]])
237         )
238
239       ]
240     ) dnl *** End of X11/Xlib.h check
241
242     dnl Check for the presence of OpenGL
243     if test "x$enable_opengl" != "xno"
244     then
245         if test -f /usr/X11R6/lib/libGL.a -a ! -f /usr/X11R6/lib/libGL.so
246         then
247             AC_MSG_ERROR([/usr/X11R6/lib/libGL.a is present on your system.
248 This prevents linking to OpenGL. Delete the file and restart configure.])
249         fi
250
251         AC_CHECK_HEADERS(GL/gl.h GL/glx.h GL/glext.h)
252         if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
253         then
254             dnl Check for some problems due to old Mesa versions
255             AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_version_OK,
256               AC_TRY_COMPILE(
257                 [#include <GL/gl.h>],
258                 [GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
259                 [wine_cv_opengl_version_OK="yes"],
260                 [wine_cv_opengl_version_OK="no"]
261               )
262             )
263
264             dnl Check for the thread-safety of the OpenGL library
265             AC_CACHE_CHECK([for thread-safe OpenGL version], 
266                            wine_cv_opengl_version_threadsafe,
267               [saved_libs=$LIBS
268                LIBS="$X_LIBS -lGL"
269                AC_TRY_LINK([],[pthread_getspecific();],
270                               [wine_cv_opengl_version_threadsafe="yes"],
271                               [wine_cv_opengl_version_threadsafe="no"])
272                LIBS=$saved_libs]
273             )
274
275             if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o "x$enable_opengl" = "xyes" \)
276             then
277                 dnl Check for the presence of the library
278                 AC_CHECK_LIB(GL,glXCreateContext,
279                              X_PRE_LIBS="$X_PRE_LIBS -lGL"
280                              ,,
281                              $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
282
283                 if test "$ac_cv_lib_GL_glXCreateContext" = "yes"
284                 then
285                         OPENGLFILES='$(OPENGLFILES)'
286                         AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])
287
288                         AC_CHECK_LIB(GL,glXGetProcAddressARB,
289                                      AC_DEFINE(HAVE_GLX_GETPROCADDRESS, 1,
290                                                [Define if the OpenGL library supports the glXGetProcAddressARB call]),,
291                                      $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
292
293                         if test "$ac_cv_lib_GL_glXGetProcAddressARB" = "yes"
294                         then
295                                AC_CACHE_CHECK([for OpenGL extension functions prototypes], wine_cv_extension_prototypes,
296                                   [AC_TRY_COMPILE([#include <GL/gl.h>
297                                                   #ifdef HAVE_GL_GLEXT_H
298                                                   # include <GL/glext.h>
299                                                   #endif
300                                                   ],
301                                                  [PFNGLCOLORTABLEEXTPROC test_proc;],
302                                                  [wine_cv_extension_prototypes="yes"],
303                                                  [wine_cv_extension_prototypes="no"]
304                                   )]
305                                 )
306                                 if test "$wine_cv_extension_prototypes" = "yes"
307                                 then
308                                     AC_DEFINE(HAVE_GLEXT_PROTOTYPES, 1,
309                                               [Define if the OpenGL headers define extension typedefs])
310                                 fi
311                         fi
312
313                 fi
314                 dnl Check for GLU32 library.
315                 AC_CHECK_LIB(GLU,gluLookAt,
316                              [X_PRE_LIBS="$X_PRE_LIBS -lGLU"
317                              GLU32FILES='$(GLU32FILES)']
318                              ,,
319                              $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
320                 )
321              fi
322          fi
323     fi
324
325     CPPFLAGS="$ac_save_CPPFLAGS"
326     XFILES='$(XFILES)'
327 else
328     XLIB=""
329     X_CFLAGS=""
330     X_LIBS=""
331 fi
332
333 dnl **** Check which curses lib to use ***
334 CURSESLIBS=""
335 if test "x$with_curses" != "xno"
336 then
337     AC_CHECK_HEADERS(ncurses.h,
338         [AC_CHECK_LIB(ncurses,waddch,
339             [AC_DEFINE(HAVE_LIBNCURSES, 1, [Define if you have the ncurses library (-lncurses)])
340              CURSESLIBS="-lncurses"],
341              [AC_CHECK_HEADERS(curses.h,
342                  [AC_CHECK_LIB(curses,waddch,
343                      [AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have the curses library (-lcurses)])
344                       CURSESLIBS="-lcurses"])])])])
345     saved_libs="$LIBS"
346     LIBS="$CURSESLIBS $LIBS"
347     AC_CHECK_FUNCS(getbkgd resizeterm)
348     LIBS="$saved_libs"
349 fi
350 AC_SUBST(CURSESLIBS)
351
352 CUPSLIBS=""
353 dnl **** Check for CUPS ****
354 wine_cv_warn_cups_h=no
355 AC_CHECK_LIB(cups,cupsGetPPD,
356         [AC_CHECK_HEADER(cups/cups.h,
357             [AC_DEFINE(HAVE_CUPS, 1, [Define if we have CUPS])
358             CUPSLIBS="-lcups"],
359             wine_cv_warn_cups_h=yes)]
360 )
361 AC_SUBST(CUPSLIBS)
362
363 dnl **** Check for FreeType 2 ****
364 AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
365 if test "$ft_lib" = "no"
366 then
367     FREETYPELIBS=""
368     FREETYPEINCL=""
369     wine_cv_msg_freetype=no
370 else
371     AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
372     if test "$ft_devel" = "no"
373     then
374         AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
375         if test "$ft_devel2" = "freetype2-config"
376         then
377                 ft_devel=$ft_devel2
378         fi
379     fi
380     if test "$ft_devel" = "no"
381     then
382         FREETYPELIBS=""
383         FREETYPEINCL=""
384         wine_cv_msg_freetype=yes
385     else
386         FREETYPELIBS=`$ft_devel --libs`
387         FREETYPEINCL=`$ft_devel --cflags`
388         ac_save_CPPFLAGS="$CPPFLAGS"
389         CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
390         AC_CHECK_HEADERS(freetype/freetype.h \
391                          freetype/ftglyph.h \
392                          freetype/tttables.h \
393                          freetype/ftnames.h \
394                          freetype/ftsnames.h \
395                          freetype/ttnameid.h \
396                          freetype/ftoutln.h \
397                          freetype/internal/sfnt.h)
398         AC_TRY_CPP([#include <ft2build.h>
399                     #include <freetype/fttrigon.h>],
400                     [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
401           [Define if you have the <freetype/fttrigon.h> header file.])
402                     wine_cv_fttrigon=yes],
403                     wine_cv_fttrigon=no)
404         CPPFLAGS="$ac_save_CPPFLAGS"
405         dnl Check that we have at least freetype/freetype.h
406         if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
407         then
408             AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
409             wine_cv_msg_freetype=no
410         else
411             FREETYPELIBS=""
412             FREETYPEINCL=""
413             wine_cv_msg_freetype=yes
414         fi
415     fi
416 fi
417 AC_SUBST(FREETYPELIBS)
418 AC_SUBST(FREETYPEINCL)
419
420 dnl **** Check for parport (currently Linux only) ****
421 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
422  AC_TRY_COMPILE(
423    [#include <linux/ppdev.h>],
424    [ioctl (1,PPCLAIM,0)],
425    [ac_cv_c_ppdev="yes"],
426    [ac_cv_c_ppdev="no"])
427  )
428 if test "$ac_cv_c_ppdev" = "yes"
429 then
430     AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
431 fi
432
433 dnl **** Check for IPX (currently Linux only) ****
434 AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
435  AC_TRY_COMPILE(
436    [#include <sys/socket.h>
437     #include <netipx/ipx.h>],
438    [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
439    [ac_cv_c_ipx_gnu="yes"],
440    [ac_cv_c_ipx_gnu="no"])
441  )
442 if test "$ac_cv_c_ipx_gnu" = "yes"
443 then
444     AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
445 fi
446
447 if test "$ac_cv_c_ipx_gnu" = "no"
448 then
449  AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
450   AC_TRY_COMPILE(
451     [#include <sys/socket.h>
452      #include <asm/types.h>
453      #include <linux/ipx.h>],
454     [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
455     [ac_cv_c_ipx_linux="yes"],
456     [ac_cv_c_ipx_linux="no"])
457   )
458   if test "$ac_cv_c_ipx_linux" = "yes"
459   then
460       AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
461   fi
462 fi
463
464 dnl **** Check for Open Sound System ****
465 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
466
467 AC_CACHE_CHECK([for Open Sound System],
468         ac_cv_c_opensoundsystem,
469         AC_TRY_COMPILE([
470         #if defined(HAVE_SYS_SOUNDCARD_H)
471                 #include <sys/soundcard.h>
472         #elif defined(HAVE_MACHINE_SOUNDCARD_H)
473                 #include <machine/soundcard.h>
474         #elif defined(HAVE_SOUNDCARD_H)
475                 #include <soundcard.h>
476         #endif
477         ],[
478
479 /* check for one of the Open Sound System specific SNDCTL_ defines */
480 #if !defined(SNDCTL_DSP_STEREO)
481 #error No open sound system
482 #endif
483 ],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))
484
485 if test "$ac_cv_c_opensoundsystem" = "yes"
486 then
487     AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
488 fi
489
490 AC_CACHE_CHECK([for Open Sound System/MIDI interface],
491         ac_cv_c_opensoundsystem_midi,
492         AC_TRY_COMPILE([
493         #if defined(HAVE_SYS_SOUNDCARD_H)
494                 #include <sys/soundcard.h>
495         #elif defined(HAVE_MACHINE_SOUNDCARD_H)
496                 #include <machine/soundcard.h>
497         #elif defined(HAVE_SOUNDCARD_H)
498                 #include <soundcard.h>
499         #endif
500         ],[
501
502 /* check for one of the Open Sound System specific SNDCTL_SEQ defines */
503 #if !defined(SNDCTL_SEQ_SYNC)
504 #error No open sound system MIDI interface
505 #endif
506 ],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))
507
508 if test "$ac_cv_c_opensoundsystem_midi" = "yes"
509 then
510     AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
511 fi
512
513 dnl **** Check for broken glibc mmap64 ****
514
515 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
516         AC_TRY_RUN([
517                 #define _FILE_OFFSET_BITS 64
518                 #include <stdio.h>
519                 #include <unistd.h>
520                 #include <fcntl.h>
521                 #include <sys/mman.h>
522                 #include <errno.h>
523
524                 int main(int argc,char **argv) {
525                         int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
526                         if (fd == -1) exit(1);
527
528                         unlink("conftest.map");
529
530                         write(fd,"test",4);
531
532                         if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
533                             (errno == EINVAL)
534                         ) {
535                                 exit(1);
536                         }
537                         close(fd);
538                         fprintf(stderr,"success!\n");
539                         exit(0);
540                 }
541
542         ],
543     ac_cv_mmap64_works="yes",
544     ac_cv_mmap64_works="no",
545     ac_cv_mmap64_works="no") )
546
547 if test "$ac_cv_mmap64_works" = "yes"
548 then
549     AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
550 fi
551
552 dnl **** Check for gcc strength-reduce bug ****
553
554 if test "x${GCC}" = "xyes"
555 then
556   CFLAGS="$CFLAGS -Wall"
557   AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
558                   AC_TRY_RUN([
559 int     L[[4]] = {0,1,2,3};
560 int main(void) {
561   static int Array[[3]];
562   unsigned int B = 3;
563   int i;
564   for(i=0; i<B; i++) Array[[i]] = i - 3;
565   for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
566   L[[i]] = 4;
567   
568   exit( Array[[1]] != -2 || L[[2]] != 3);
569 }],
570     ac_cv_c_gcc_strength_bug="no",
571     ac_cv_c_gcc_strength_bug="yes",
572     ac_cv_c_gcc_strength_bug="yes") )
573   if test "$ac_cv_c_gcc_strength_bug" = "yes"
574   then
575     CFLAGS="$CFLAGS -fno-strength-reduce"
576   fi
577
578   dnl Check for -mpreferred-stack-boundary
579   AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support],
580                  ac_cv_c_gcc_stack_boundary,
581   [saved_cflags=$CFLAGS
582   CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
583   AC_TRY_COMPILE(,[return 0],ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")
584   CFLAGS=$saved_cflags
585   ])
586   if test "$ac_cv_c_gcc_stack_boundary" = "yes"
587   then
588     CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
589   fi
590 fi
591
592 dnl **** Check if we need to place .type inside a .def directive ****
593
594 AC_CACHE_CHECK([whether .type must sit inside a .def directive],
595                ac_cv_c_type_in_def,
596 [saved_libs=$LIBS
597 LIBS="conftest_asm.s $LIBS"
598 cat > conftest_asm.s <<EOF
599         .globl _ac_test
600         .def _ac_test; .scl 2; .type 32; .endef
601 _ac_test:
602         .long 0
603 EOF
604 AC_TRY_LINK(,,ac_cv_c_type_in_def="yes",ac_cv_c_type_in_def="no")
605 LIBS=$saved_libs])
606 if test "$ac_cv_c_type_in_def" = "yes"
607 then
608   AC_DEFINE(NEED_TYPE_IN_DEF, 1, [Define if .type asm directive must be inside a .def directive])
609 fi
610  
611 dnl **** Check for underscore on external symbols ****
612
613 AC_CACHE_CHECK([whether external symbols need an underscore prefix],
614                ac_cv_c_extern_prefix,
615 [saved_libs=$LIBS
616 LIBS="conftest_asm.s $LIBS"
617 cat > conftest_asm.s <<EOF
618         .globl _ac_test
619 _ac_test:
620         .long 0
621 EOF
622 AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
623             ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
624 LIBS=$saved_libs])
625 if test "$ac_cv_c_extern_prefix" = "yes"
626 then
627   AC_DEFINE(NEED_UNDERSCORE_PREFIX, 1,
628             [Define if symbols declared in assembly code need an underscore prefix])
629 fi
630
631 dnl **** Check whether stdcall symbols need to be decorated ****
632
633 AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
634                ac_cv_c_stdcall_decoration,
635 [saved_libs=$LIBS
636 LIBS="conftest_asm.s $LIBS"
637 if test "$ac_cv_c_extern_prefix" = "yes"
638 then
639 cat > conftest_asm.s <<EOF
640         .globl _ac_test@0
641 _ac_test@0:
642 EOF
643 else
644 cat > conftest_asm.s <<EOF
645         .globl ac_test@0
646 ac_test@0:
647 EOF
648 fi
649 AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
650             [ac_test(); return 0],
651             ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
652 LIBS=$saved_libs])
653 if test "$ac_cv_c_stdcall_decoration" = "yes"
654 then
655   AC_DEFINE(NEED_STDCALL_DECORATION, 1,
656             [Define if stdcall symbols need to be decorated])
657 fi
658
659 dnl **** Check for .string in assembler ****
660
661 AC_CACHE_CHECK([whether assembler accepts .string],
662                ac_cv_c_asm_string,
663 [saved_libs=$LIBS
664 LIBS="conftest_asm.s $LIBS"
665 cat > conftest_asm.s <<EOF
666         .string "test"
667 EOF
668 AC_TRY_LINK(,,ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no")
669 LIBS=$saved_libs])
670 if test "$ac_cv_c_asm_string" = "yes"
671 then
672   AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
673 fi
674
675 dnl **** Check for working dll ****
676
677 LDSHARED=""
678 LDDLLFLAGS=""
679 if test "$LIBEXT" = "so"
680 then
681   AC_CACHE_CHECK([whether we can build a GNU style ELF dll],
682                  ac_cv_c_dll_gnuelf,
683   [saved_cflags=$CFLAGS
684   CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
685   AC_TRY_LINK(,[return 1],ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")
686   CFLAGS=$saved_cflags
687   ])
688   if test "$ac_cv_c_dll_gnuelf" = "yes"
689   then
690     LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
691     LDDLLFLAGS="-Wl,-Bsymbolic"
692   else
693     AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll,
694                  ac_cv_c_dll_unixware,
695     [saved_cflags=$CFLAGS
696     CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
697     AC_TRY_LINK(,[return 1],ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")
698     CFLAGS=$saved_cflags
699     ])
700     if test "$ac_cv_c_dll_unixware" = "yes"
701     then
702       LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
703       LDDLLFLAGS="-Wl,-B,symbolic"
704     fi
705   fi
706   if test "$ac_cv_c_dll_gnuelf" = "no" -a "$ac_cv_c_dll_unixware" = "no"
707   then
708     LIBEXT="a"
709     AC_CHECK_PROG(DLLWRAP,dllwrap,dllwrap,false)
710     if test "$DLLWRAP" = "dllwrap"; then
711       dnl FIXME - check whether dllwrap works correctly...
712       case $host_os in
713         *cygwin*)
714             LIBEXT="dll"
715             ;;
716       esac
717     fi
718   fi
719 fi
720
721 if test "$LIBEXT" = "a"; then
722   AC_MSG_ERROR(
723 [could not find a way to build shared libraries.
724 It is currently not possible to build Wine without shared library
725 (.so) support to allow transparent switch between .so and .dll files.
726 If you are using Linux, you will need a newer binutils.]
727 )
728 fi
729
730 DLLFLAGS=""
731 LDPATH=""
732
733 if test "$LIBEXT" = "so"; then
734     DLLFLAGS="-fPIC"
735     LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
736 elif test "$LIBEXT" = "dll"; then
737     #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
738     LDPATH="PATH=\"\$(TOPOBJDIR)/unicode:\$\$PATH\""
739 fi
740
741 AC_SUBST(DLLFLAGS)
742 AC_SUBST(LDSHARED)
743 AC_SUBST(LDDLLFLAGS)
744 AC_SUBST(LIBEXT)
745 AC_SUBST(LDPATH)
746
747 dnl **** Check for reentrant libc ****
748 dnl
749 dnl For cross-compiling we blindly assume that libc is reentrant. This is
750 dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
751
752 AC_DEFUN([WINE_CHECK_ERRNO],
753 [
754   AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
755   [AC_TRY_RUN([int myerrno = 0;
756 char buf[256];
757 int *$1(){return &myerrno;}
758 main(){connect(0,buf,255); exit(!myerrno);}],
759   wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
760   wine_cv_libc_r_$1=yes )
761 ])
762 if test "$wine_cv_libc_r_$1" = "yes"
763 then
764     wine_cv_libc_reentrant=$1 
765 fi
766 ])
767
768 wine_cv_libc_reentrant=no 
769 dnl Linux style errno location
770 WINE_CHECK_ERRNO(__errno_location)
771 dnl FreeBSD style errno location
772 WINE_CHECK_ERRNO(__error)
773 dnl Solaris style errno location
774 WINE_CHECK_ERRNO(___errno)
775 dnl UnixWare style errno location
776 WINE_CHECK_ERRNO(__thr_errno)
777 dnl NetBSD style errno location
778 WINE_CHECK_ERRNO(__errno)
779
780 if test "$wine_cv_libc_reentrant" != "no" 
781 then
782   AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
783                      [Define to the name of the function returning errno for reentrant libc])
784 fi
785
786 dnl **** Check for reentrant X libraries ****
787 dnl
788 dnl This may fail to determine whether X libraries are reentrant if
789 dnl AC_PATH_XTRA does not set x_libraries. In this case manual configuration
790 dnl is possible with the --without-reentrant-x option.
791
792 if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
793 then
794 AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
795   [ if test "x$with_reentrant_x" = "xno" 
796     then
797         wine_cv_x_reentrant=no
798     else
799         libX11_check=none
800         for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
801             if test -r $dir/libX11.so; then
802                 libX11_check="-D $dir/libX11.so"
803                 break 1
804             fi
805             if test -r $dir/libX11.a; then
806                 libX11_check="$dir/libX11.a"
807                 break 1
808             fi
809         done
810         if test "$libX11_check" != "none"; then
811             if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
812             then
813                 wine_cv_x_reentrant=yes
814             else
815                 wine_cv_x_reentrant=no
816             fi
817         else
818             wine_cv_x_reentrant=unknown
819         fi
820     fi ] )
821 else
822     wine_cv_x_reentrant=no
823 fi
824 if test "$wine_cv_x_reentrant" = "no"
825 then
826   AC_DEFINE(NO_REENTRANT_X11, 1,
827             [Define if X libraries are not reentrant (compiled without -D_REENTRANT)])
828 fi
829
830
831 dnl **** Check for functions ****
832
833 AC_FUNC_ALLOCA()
834 AC_CHECK_FUNCS(\
835         __libc_fork \
836         _lwp_create \
837         clone \
838         ecvt \
839         finite \
840         fpclass \
841         ftruncate64 \
842         getnetbyaddr \
843         getnetbyname \
844         getpagesize \
845         getprotobyname \
846         getprotobynumber \
847         getrlimit \
848         getservbyport \
849         getsockopt \
850         inet_network \
851         lseek64 \
852         lstat \
853         memmove \
854         mmap \
855         pread \
856         pwrite \
857         rfork \
858         select \
859         sendmsg \
860         settimeofday \
861         sigaltstack \
862         statfs \
863         strcasecmp \
864         strerror \
865         strncasecmp \
866         tcgetattr \
867         timegm \
868         usleep \
869         vfscanf \
870         wait4 \
871         waitpid \
872 )
873
874 dnl **** Check for header files ****
875
876 AC_CHECK_HEADERS(\
877         arpa/inet.h \
878         arpa/nameser.h \
879         elf.h \
880         float.h \
881         ieeefp.h \
882         libio.h \
883         libutil.h \
884         link.h \
885         linux/cdrom.h \
886         linux/input.h \
887         linux/joystick.h \
888         linux/ucdrom.h \
889         net/if.h \
890         netdb.h \
891         netinet/in.h \
892         netinet/in_systm.h \
893         netinet/ip.h \
894         netinet/tcp.h \
895         pty.h \
896         resolv.h \
897         sched.h \
898         socket.h \
899         stdint.h \
900         strings.h \
901         sys/cdio.h \
902         sys/errno.h \
903         sys/file.h \
904         sys/filio.h \
905         sys/ipc.h \
906         sys/link.h \
907         sys/lwp.h \
908         sys/mman.h \
909         sys/modem.h \
910         sys/mount.h \
911         sys/msg.h \
912         sys/param.h \
913         sys/ptrace.h \
914         sys/reg.h \
915         sys/signal.h \
916         sys/shm.h \
917         sys/socket.h \
918         sys/sockio.h \
919         sys/statfs.h \
920         sys/strtio.h \
921         sys/syscall.h \
922         sys/user.h \
923         sys/wait.h \
924         sys/v86.h \
925         sys/v86intr.h \
926         sys/vfs.h \
927         sys/vm86.h \
928         syscall.h \
929         ucontext.h \
930 )
931 AC_HEADER_STAT()
932
933 dnl **** Check for types ****
934
935 AC_C_CONST
936 AC_C_INLINE
937 AC_TYPE_MODE_T
938 AC_TYPE_OFF_T
939 AC_TYPE_PID_T
940 AC_TYPE_SIZE_T
941 AC_CHECK_SIZEOF(long long,0)
942
943 AC_CACHE_CHECK([whether linux/input.h is for real],
944         wine_cv_linux_input_h,
945         AC_TRY_COMPILE([
946             #include <linux/input.h>
947         ] , [
948             int foo = EVIOCGBIT(EV_ABS,42);
949             int bar = BTN_PINKIE;
950             int fortytwo = 42;
951         ],
952         wine_cv_linux_input_h=yes,
953         wine_cv_linux_input_h=no,
954         no
955         )
956     )
957     if test "$wine_cv_linux_input_h" = "yes"
958     then
959         AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
960                   [Define if we have linux/input.h AND it contains the INPUT event API])
961     fi
962
963    
964 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
965         wine_cv_linux_gethostbyname_r_6,
966         AC_TRY_COMPILE([
967 #include <netdb.h>
968         ], [
969     char *name=NULL;
970     struct hostent he;
971     struct hostent *result;
972     char *buf=NULL;
973     int bufsize=0;
974     int res,errnr;
975     char *addr=NULL;
976     int addrlen=0;
977     int addrtype=0;
978     res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
979     res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
980     ],
981         wine_cv_linux_gethostbyname_r_6=yes,
982         wine_cv_linux_gethostbyname_r_6=no
983         )
984    )
985    if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
986    then
987       AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
988                 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
989    fi
990
991 if test "$ac_cv_header_linux_joystick_h" = "yes"
992 then
993    AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
994         wine_cv_linux_joystick_22_api,
995         AC_TRY_COMPILE([
996         #include <sys/ioctl.h>
997         #include <linux/joystick.h>
998
999         struct js_event blub;
1000         #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1001         #error "no 2.2 header"
1002         #endif
1003         ],/*empty*/,
1004         wine_cv_linux_joystick_22_api=yes,
1005         wine_cv_linux_joystick_22_api=no,
1006         wine_cv_linux_joystick_22_api=no
1007         )
1008    )
1009    if test "$wine_cv_linux_joystick_22_api" = "yes"
1010    then
1011       AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1012                 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1013    fi
1014 fi
1015
1016 dnl **** statfs checks ****
1017
1018 if test "$ac_cv_header_sys_vfs_h" = "yes"
1019 then
1020     AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1021                     wine_cv_sys_vfs_has_statfs,
1022         AC_TRY_COMPILE([
1023         #include <sys/types.h>
1024         #ifdef HAVE_SYS_PARAM_H
1025         # include <sys/param.h>
1026         #endif
1027         #include <sys/vfs.h>
1028         ],[
1029                 struct statfs stfs;
1030
1031                 memset(&stfs,0,sizeof(stfs));
1032         ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1033         )
1034     )
1035     if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1036     then
1037       AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1038                 [Define if the struct statfs is defined by <sys/vfs.h>])
1039     fi
1040 fi
1041
1042 if test "$ac_cv_header_sys_statfs_h" = "yes"
1043 then
1044     AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1045                     wine_cv_sys_statfs_has_statfs,
1046         AC_TRY_COMPILE([
1047         #include <sys/types.h>
1048         #ifdef HAVE_SYS_PARAM_H
1049         # include <sys/param.h>
1050         #endif
1051         #include <sys/statfs.h>
1052         ],[
1053                 struct statfs stfs;
1054         ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1055         )
1056     )
1057     if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1058     then
1059       AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1060                 [Define if the struct statfs is defined by <sys/statfs.h>])
1061     fi
1062 fi
1063
1064 if test "$ac_cv_header_sys_mount_h" = "yes"
1065 then
1066     AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1067                     wine_cv_sys_mount_has_statfs,
1068         AC_TRY_COMPILE([
1069         #include <sys/types.h>
1070         #ifdef HAVE_SYS_PARAM_H
1071         # include <sys/param.h>
1072         #endif
1073         #include <sys/mount.h>
1074         ],[
1075                 struct statfs stfs;
1076         ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1077         )
1078     )
1079     if test "$wine_cv_sys_mount_has_statfs" = "yes"
1080     then
1081       AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1082                 [Define if the struct statfs is defined by <sys/mount.h>])
1083     fi
1084 fi
1085
1086 dnl *** Check for some structure members
1087
1088 dnl Macro to check if a structure contains a specified member
1089 dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
1090
1091 AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
1092 [AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
1093  AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
1094 AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
1095 ])
1096
1097 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1098
1099 WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree,
1100 [#include <sys/types.h>
1101 #ifdef HAVE_SYS_PARAM_H
1102 # include <sys/param.h>
1103 #endif
1104 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1105 # include <sys/mount.h>
1106 #else
1107 # ifdef STATFS_DEFINED_BY_SYS_VFS
1108 #  include <sys/vfs.h>
1109 # else
1110 #  ifdef STATFS_DEFINED_BY_SYS_STATFS
1111 #   include <sys/statfs.h>
1112 #  endif
1113 # endif
1114 #endif],
1115     [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])])
1116
1117 WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail,
1118 [#include <sys/types.h>
1119 #ifdef HAVE_SYS_PARAM_H
1120 # include <sys/param.h>
1121 #endif
1122 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1123 # include <sys/mount.h>
1124 #else
1125 # ifdef STATFS_DEFINED_BY_SYS_VFS
1126 #  include <sys/vfs.h>
1127 # else
1128 #  ifdef STATFS_DEFINED_BY_SYS_STATFS
1129 #   include <sys/statfs.h>
1130 #  endif
1131 # endif
1132 #endif],
1133     [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])])
1134
1135 dnl Check for file descriptor passing with msg_accrights
1136 WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights,
1137 [#include <sys/types.h>
1138 #include <sys/socket.h>],
1139     [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])])
1140
1141 dnl Check for the sa_len member in struct sockaddr
1142 WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len,
1143 [#include <sys/types.h>
1144 #include <sys/socket.h>],
1145     [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])])
1146
1147 dnl Check for the sun_len member in struct sockaddr_un
1148 WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len,
1149 [#include <sys/types.h>
1150 #include <sys/socket.h>
1151 #include <sys/un.h>],
1152     [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])])
1153
1154 dnl *** check for the need to define __i386__
1155
1156 case $target_cpu in
1157   *i[3456789]86* )
1158     AC_CACHE_CHECK([whether we need to define __i386__],ac_cv_cpp_def_i386,
1159       AC_EGREP_CPP(yes,[#ifndef __i386__
1160 yes
1161 #endif],
1162  ac_cv_cpp_def_i386="yes", ac_cv_cpp_def_i386="no"))
1163     ;;
1164 esac
1165 if test "$ac_cv_cpp_def_i386" = "yes"
1166 then
1167     CFLAGS="$CFLAGS -D__i386__"
1168     LINTFLAGS="$LINTFLAGS -D__i386__"
1169 fi
1170
1171 dnl **** Generate output files ****
1172
1173 dnl Macro to create non-existent directories from config.status
1174 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
1175 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
1176 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
1177
1178 AH_TOP([#define __WINE_CONFIG_H])
1179
1180 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1181 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1182 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1183 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1184 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1185 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1186 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1187 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1188 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1189 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1190 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1191 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1192 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1193 WINE_CONFIG_EXTRA_DIR(include/wine)
1194
1195 AC_CONFIG_COMMANDS([include/wine/version.h],
1196 [AC_MSG_NOTICE([creating include/wine/version.h])
1197 cat >$tmp/version.h <<CEOF
1198 /* Generated automatically by configure; DO NOT EDIT! */
1199 #define WINE_RELEASE_INFO "Wine version $wine_version"
1200 CEOF
1201 if cmp -s $tmp/version.h include/wine/version.h 2>/dev/null; then
1202   AC_MSG_NOTICE([include/wine/version.h is unchanged])
1203   rm -f $tmp/version.h
1204 else
1205   rm -f include/wine/version.h
1206   mv $tmp/version.h include/wine/version.h
1207 fi],
1208 [wine_version=$PACKAGE_VERSION])
1209
1210 MAKE_RULES=Make.rules
1211 AC_SUBST_FILE(MAKE_RULES)
1212
1213 MAKE_DLL_RULES=dlls/Makedll.rules
1214 AC_SUBST_FILE(MAKE_DLL_RULES)
1215
1216 MAKE_PROG_RULES=programs/Makeprog.rules
1217 AC_SUBST_FILE(MAKE_PROG_RULES)
1218
1219 AC_CONFIG_FILES([
1220 Make.rules
1221 dlls/Makedll.rules
1222 programs/Makeprog.rules
1223 Makefile
1224 console/Makefile
1225 controls/Makefile
1226 debugger/Makefile
1227 dlls/Makefile
1228 dlls/advapi32/Makefile
1229 dlls/avicap32/Makefile
1230 dlls/avifil32/Makefile
1231 dlls/comctl32/Makefile
1232 dlls/commdlg/Makefile
1233 dlls/crtdll/Makefile
1234 dlls/crypt32/Makefile
1235 dlls/dciman32/Makefile
1236 dlls/ddraw/Makefile
1237 dlls/devenum/Makefile
1238 dlls/dinput/Makefile
1239 dlls/dplay/Makefile
1240 dlls/dplayx/Makefile
1241 dlls/dsound/Makefile
1242 dlls/gdi/Makefile
1243 dlls/glu32/Makefile
1244 dlls/icmp/Makefile
1245 dlls/imagehlp/Makefile
1246 dlls/imm32/Makefile
1247 dlls/kernel/Makefile
1248 dlls/lzexpand/Makefile
1249 dlls/mapi32/Makefile
1250 dlls/mpr/Makefile
1251 dlls/msacm/Makefile
1252 dlls/msdmo/Makefile
1253 dlls/msimg32/Makefile
1254 dlls/msnet32/Makefile
1255 dlls/msrle32/Makefile
1256 dlls/msvcrt/Makefile
1257 dlls/msvcrt20/Makefile
1258 dlls/msvideo/Makefile
1259 dlls/netapi32/Makefile
1260 dlls/ntdll/Makefile
1261 dlls/odbc32/Makefile
1262 dlls/ole32/Makefile
1263 dlls/oleaut32/Makefile
1264 dlls/olecli/Makefile
1265 dlls/oledlg/Makefile
1266 dlls/olepro32/Makefile
1267 dlls/olesvr/Makefile
1268 dlls/opengl32/Makefile
1269 dlls/psapi/Makefile
1270 dlls/qcap/Makefile
1271 dlls/quartz/Makefile
1272 dlls/rasapi32/Makefile
1273 dlls/richedit/Makefile
1274 dlls/rpcrt4/Makefile
1275 dlls/serialui/Makefile
1276 dlls/setupapi/Makefile
1277 dlls/shdocvw/Makefile
1278 dlls/shell32/Makefile
1279 dlls/shfolder/Makefile
1280 dlls/shlwapi/Makefile
1281 dlls/sti/Makefile
1282 dlls/tapi32/Makefile
1283 dlls/ttydrv/Makefile
1284 dlls/url/Makefile
1285 dlls/urlmon/Makefile
1286 dlls/user/Makefile
1287 dlls/version/Makefile
1288 dlls/win32s/Makefile
1289 dlls/winaspi/Makefile
1290 dlls/winedos/Makefile
1291 dlls/wineps/Makefile
1292 dlls/wininet/Makefile
1293 dlls/winmm/Makefile
1294 dlls/winmm/joystick/Makefile
1295 dlls/winmm/mcianim/Makefile
1296 dlls/winmm/mciavi/Makefile
1297 dlls/winmm/mcicda/Makefile
1298 dlls/winmm/mciseq/Makefile
1299 dlls/winmm/mciwave/Makefile
1300 dlls/winmm/midimap/Makefile
1301 dlls/winmm/wavemap/Makefile
1302 dlls/winmm/wineoss/Makefile
1303 dlls/winnls/Makefile
1304 dlls/winsock/Makefile
1305 dlls/winspool/Makefile
1306 dlls/wintrust/Makefile
1307 dlls/wow32/Makefile
1308 dlls/wsock32/Makefile
1309 dlls/x11drv/Makefile
1310 documentation/Makefile
1311 files/Makefile
1312 graphics/Makefile
1313 graphics/enhmetafiledrv/Makefile
1314 graphics/metafiledrv/Makefile
1315 graphics/win16drv/Makefile
1316 graphics/x11drv/Makefile
1317 if1632/Makefile
1318 include/Makefile
1319 library/Makefile
1320 libtest/Makefile
1321 loader/Makefile
1322 loader/ne/Makefile
1323 memory/Makefile
1324 misc/Makefile
1325 miscemu/Makefile
1326 msdos/Makefile
1327 objects/Makefile
1328 ole/Makefile
1329 programs/Makefile
1330 programs/avitools/Makefile
1331 programs/clock/Makefile
1332 programs/cmdlgtst/Makefile
1333 programs/control/Makefile
1334 programs/notepad/Makefile
1335 programs/osversioncheck/Makefile
1336 programs/progman/Makefile
1337 programs/regapi/Makefile
1338 programs/regtest/Makefile
1339 programs/uninstaller/Makefile
1340 programs/view/Makefile
1341 programs/wcmd/Makefile
1342 programs/wineconsole/Makefile
1343 programs/winemine/Makefile
1344 programs/winetest/Makefile
1345 programs/winhelp/Makefile
1346 programs/winver/Makefile
1347 relay32/Makefile
1348 scheduler/Makefile
1349 server/Makefile
1350 tools/Makefile
1351 tools/winapi/Makefile
1352 tools/winebuild/Makefile
1353 tools/winedump/Makefile
1354 tools/wmc/Makefile
1355 tools/wrc/Makefile
1356 tsx11/Makefile
1357 unicode/Makefile
1358 win32/Makefile
1359 windows/Makefile
1360 windows/x11drv/Makefile ])
1361
1362 AC_OUTPUT
1363
1364 if test "$have_x" = "no"
1365 then
1366   echo
1367   echo "*** Warning: X development files not found. Wine will be built without"
1368   echo "*** X support, which currently does not work, and would probably not be"
1369   echo "*** what you want anyway. You will need to install devel packages of"
1370   echo "*** Xlib/Xfree86 at the very least."
1371 fi
1372
1373 if test "$ac_cv_lib_ncurses_resizeterm" = "no" -a "$ac_cv_lib_ncurses_waddch" = "yes"
1374 then
1375   echo
1376   echo "*** Warning: resizeterm not found in ncurses. Wine will be built without"
1377   echo "*** terminal resize support. Consider upgrading ncurses."
1378 fi
1379
1380 if test "$wine_cv_libc_reentrant" = "no" 
1381 then
1382   echo
1383   echo "*** Warning: non-reentrant libc detected. Wine will be built without"
1384   echo "*** threading support. Consider upgrading libc to a more recent"
1385   echo "*** reentrant version of libc."
1386 fi
1387
1388 if test "$wine_cv_opengl_version_OK" = "no"
1389 then
1390   echo
1391   echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1392   echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1393 fi
1394
1395 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "x"
1396 then
1397   echo
1398   echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
1399   echo "*** thread-safety. To prevent crashes, OpenGL support has been removed."
1400   echo "*** A fix for glibc 2.1.3 that seems to work is included in this version of Wine,"
1401   echo "*** start configure with '--enable-opengl' to force OpenGL support."
1402 fi
1403
1404 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "xyes"
1405 then
1406   echo
1407   echo "*** Warning: you explicitly linked in a thread-safe OpenGL version. If you"
1408   echo "*** experience unusual crashes on DirectDraw games, try first to disable OpenGL"
1409   echo "*** support before reporting bugs."
1410 fi
1411
1412 if test "$wine_cv_warn_cups_h" = "yes"
1413 then
1414   echo
1415   echo "*** Note: You have cups runtime libraries, but no development"
1416   echo "*** libraries. Install the cups-devel package or whichever package"
1417   echo "*** contains cups.h to enable CUPS support in Wine."
1418 fi
1419
1420 if test "$wine_cv_msg_freetype" = "yes"
1421 then
1422   echo
1423   echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1424   echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1425   echo "*** freetype-devel package (or its equivalent on your distribution) to"
1426   echo "*** enable Wine to use TrueType fonts."
1427 fi
1428
1429 echo
1430 echo "Configure finished.  Do 'make depend && make' to compile Wine."
1431 echo
1432
1433 dnl Local Variables:
1434 dnl comment-start: "dnl "
1435 dnl comment-end: ""
1436 dnl comment-start-skip: "\\bdnl\\b\\s *"
1437 dnl compile-command: "autoconf"
1438 dnl End: