Ported variant tests to the new testing framework.
[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 SANE ****
364 AC_CHECK_PROG(sane_devel,sane-config,sane-config,no)
365 if test "$sane_devel" = "no"
366 then
367     SANELIBS=""
368     SANEINCL=""
369 else
370     SANELIBS="`$sane_devel --libs`"
371     SANEINCL="`$sane_devel --cflags`"
372     ac_save_CPPFLAGS="$CPPFLAGS"
373     ac_save_LIBS="$LIBS"
374     CPPFLAGS="$CPPFLAGS $SANEINCL"
375     LIBS="$LIBS $SANELIBS"
376     AC_CHECK_HEADER(sane/sane.h,[
377             AC_CHECK_LIB(sane,sane_open,[AC_DEFINE(HAVE_SANE, 1, [Define if we have SANE development environment])],
378             SANELIBS=""
379             ])
380     )
381     LIBS="$ac_save_LIBS"
382     CPPFLAGS="$ac_save_CPPFLAGS"
383 fi
384 AC_SUBST(SANELIBS)
385 AC_SUBST(SANEINCL)
386
387 dnl **** Check for FreeType 2 ****
388 AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
389 if test "$ft_lib" = "no"
390 then
391     FREETYPELIBS=""
392     FREETYPEINCL=""
393     wine_cv_msg_freetype=no
394 else
395     AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
396     if test "$ft_devel" = "no"
397     then
398         AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
399         if test "$ft_devel2" = "freetype2-config"
400         then
401                 ft_devel=$ft_devel2
402         fi
403     fi
404     if test "$ft_devel" = "no"
405     then
406         FREETYPELIBS=""
407         FREETYPEINCL=""
408         wine_cv_msg_freetype=yes
409     else
410         FREETYPELIBS=`$ft_devel --libs`
411         FREETYPEINCL=`$ft_devel --cflags`
412         ac_save_CPPFLAGS="$CPPFLAGS"
413         CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
414         AC_CHECK_HEADERS(freetype/freetype.h \
415                          freetype/ftglyph.h \
416                          freetype/tttables.h \
417                          freetype/ftnames.h \
418                          freetype/ftsnames.h \
419                          freetype/ttnameid.h \
420                          freetype/ftoutln.h \
421                          freetype/internal/sfnt.h)
422         AC_TRY_CPP([#include <ft2build.h>
423                     #include <freetype/fttrigon.h>],
424                     [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
425           [Define if you have the <freetype/fttrigon.h> header file.])
426                     wine_cv_fttrigon=yes],
427                     wine_cv_fttrigon=no)
428         CPPFLAGS="$ac_save_CPPFLAGS"
429         dnl Check that we have at least freetype/freetype.h
430         if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
431         then
432             AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
433             wine_cv_msg_freetype=no
434         else
435             FREETYPELIBS=""
436             FREETYPEINCL=""
437             wine_cv_msg_freetype=yes
438         fi
439     fi
440 fi
441 AC_SUBST(FREETYPELIBS)
442 AC_SUBST(FREETYPEINCL)
443
444 dnl **** Check for parport (currently Linux only) ****
445 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
446  AC_TRY_COMPILE(
447    [#include <linux/ppdev.h>],
448    [ioctl (1,PPCLAIM,0)],
449    [ac_cv_c_ppdev="yes"],
450    [ac_cv_c_ppdev="no"])
451  )
452 if test "$ac_cv_c_ppdev" = "yes"
453 then
454     AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
455 fi
456
457 dnl **** Check for IPX (currently Linux only) ****
458 AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
459  AC_TRY_COMPILE(
460    [#include <sys/socket.h>
461     #include <netipx/ipx.h>],
462    [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
463    [ac_cv_c_ipx_gnu="yes"],
464    [ac_cv_c_ipx_gnu="no"])
465  )
466 if test "$ac_cv_c_ipx_gnu" = "yes"
467 then
468     AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
469 fi
470
471 if test "$ac_cv_c_ipx_gnu" = "no"
472 then
473  AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
474   AC_TRY_COMPILE(
475     [#include <sys/socket.h>
476      #include <asm/types.h>
477      #include <linux/ipx.h>],
478     [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
479     [ac_cv_c_ipx_linux="yes"],
480     [ac_cv_c_ipx_linux="no"])
481   )
482   if test "$ac_cv_c_ipx_linux" = "yes"
483   then
484       AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
485   fi
486 fi
487
488 dnl **** Check for Open Sound System ****
489 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
490
491 AC_CACHE_CHECK([for Open Sound System],
492         ac_cv_c_opensoundsystem,
493         AC_TRY_COMPILE([
494         #if defined(HAVE_SYS_SOUNDCARD_H)
495                 #include <sys/soundcard.h>
496         #elif defined(HAVE_MACHINE_SOUNDCARD_H)
497                 #include <machine/soundcard.h>
498         #elif defined(HAVE_SOUNDCARD_H)
499                 #include <soundcard.h>
500         #endif
501         ],[
502
503 /* check for one of the Open Sound System specific SNDCTL_ defines */
504 #if !defined(SNDCTL_DSP_STEREO)
505 #error No open sound system
506 #endif
507 ],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))
508
509 if test "$ac_cv_c_opensoundsystem" = "yes"
510 then
511     AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
512 fi
513
514 AC_CACHE_CHECK([for Open Sound System/MIDI interface],
515         ac_cv_c_opensoundsystem_midi,
516         AC_TRY_COMPILE([
517         #if defined(HAVE_SYS_SOUNDCARD_H)
518                 #include <sys/soundcard.h>
519         #elif defined(HAVE_MACHINE_SOUNDCARD_H)
520                 #include <machine/soundcard.h>
521         #elif defined(HAVE_SOUNDCARD_H)
522                 #include <soundcard.h>
523         #endif
524         ],[
525
526 /* check for one of the Open Sound System specific SNDCTL_SEQ defines */
527 #if !defined(SNDCTL_SEQ_SYNC)
528 #error No open sound system MIDI interface
529 #endif
530 ],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))
531
532 if test "$ac_cv_c_opensoundsystem_midi" = "yes"
533 then
534     AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
535 fi
536
537 dnl **** Check for aRts Sound Server ****
538 AC_PATH_PROG(ARTSCCONFIG, artsc-config)
539 AC_CACHE_CHECK([for aRts Sound server],
540         ac_cv_c_artsserver,
541         if test x$ARTSCCONFIG = x -o x$ARTSCCONFIG = x'"$ARTSCCONFIG"';
542         then
543             ac_cv_c_artsserver=no
544         else
545             ARTSC_CFLAGS=`$ARTSCCONFIG --cflags`
546             ARTSC_LIBS=`$ARTSCCONFIG --libs`
547             ac_cv_c_artsserver=no
548             save_CFLAGS="$CFLAGS"
549             CFLAGS="$CFLAGS $ARTSC_CFLAGS"
550             AC_TRY_COMPILE([
551              #include <artsc.h>
552             ],[
553              arts_stream_t stream;
554             ],[
555             ac_cv_c_artsserver=yes
556             ])
557             CFLAGS="$save_CFLAGS"
558         fi)
559
560 if test "$ac_cv_c_artsserver" = "yes"
561 then
562     AC_SUBST(ARTSLIBS, $ARTSC_LIBS)
563     AC_SUBST(ARTSINCL, $ARTSC_CFLAGS)
564
565     AC_DEFINE(HAVE_ARTS, 1, [Define if you have ARTS sound server])
566 fi
567
568 dnl **** Check for broken glibc mmap64 ****
569
570 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
571         AC_TRY_RUN([
572                 #define _FILE_OFFSET_BITS 64
573                 #include <stdio.h>
574                 #include <unistd.h>
575                 #include <fcntl.h>
576                 #include <sys/mman.h>
577                 #include <errno.h>
578
579                 int main(int argc,char **argv) {
580                         int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
581                         if (fd == -1) exit(1);
582
583                         unlink("conftest.map");
584
585                         write(fd,"test",4);
586
587                         if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
588                             (errno == EINVAL)
589                         ) {
590                                 exit(1);
591                         }
592                         close(fd);
593                         fprintf(stderr,"success!\n");
594                         exit(0);
595                 }
596
597         ],
598     ac_cv_mmap64_works="yes",
599     ac_cv_mmap64_works="no",
600     ac_cv_mmap64_works="no") )
601
602 if test "$ac_cv_mmap64_works" = "yes"
603 then
604     AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
605 fi
606
607 dnl **** Check for gcc strength-reduce bug ****
608
609 if test "x${GCC}" = "xyes"
610 then
611   CFLAGS="$CFLAGS -Wall"
612   AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
613                   AC_TRY_RUN([
614 int     L[[4]] = {0,1,2,3};
615 int main(void) {
616   static int Array[[3]];
617   unsigned int B = 3;
618   int i;
619   for(i=0; i<B; i++) Array[[i]] = i - 3;
620   for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
621   L[[i]] = 4;
622   
623   exit( Array[[1]] != -2 || L[[2]] != 3);
624 }],
625     ac_cv_c_gcc_strength_bug="no",
626     ac_cv_c_gcc_strength_bug="yes",
627     ac_cv_c_gcc_strength_bug="yes") )
628   if test "$ac_cv_c_gcc_strength_bug" = "yes"
629   then
630     CFLAGS="$CFLAGS -fno-strength-reduce"
631   fi
632
633   dnl Check for -mpreferred-stack-boundary
634   AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support],
635                  ac_cv_c_gcc_stack_boundary,
636   [saved_cflags=$CFLAGS
637   CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
638   AC_TRY_COMPILE(,[return 0],ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")
639   CFLAGS=$saved_cflags
640   ])
641   if test "$ac_cv_c_gcc_stack_boundary" = "yes"
642   then
643     CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
644   fi
645 fi
646
647 dnl **** Check if we need to place .type inside a .def directive ****
648
649 AC_CACHE_CHECK([whether .type must sit inside a .def directive],
650                ac_cv_c_type_in_def,
651 [saved_libs=$LIBS
652 LIBS="conftest_asm.s $LIBS"
653 cat > conftest_asm.s <<EOF
654         .globl _ac_test
655         .def _ac_test; .scl 2; .type 32; .endef
656 _ac_test:
657         .long 0
658 EOF
659 AC_TRY_LINK(,,ac_cv_c_type_in_def="yes",ac_cv_c_type_in_def="no")
660 LIBS=$saved_libs])
661 if test "$ac_cv_c_type_in_def" = "yes"
662 then
663   AC_DEFINE(NEED_TYPE_IN_DEF, 1, [Define if .type asm directive must be inside a .def directive])
664 fi
665  
666 dnl **** Check for underscore on external symbols ****
667
668 AC_CACHE_CHECK([whether external symbols need an underscore prefix],
669                ac_cv_c_extern_prefix,
670 [saved_libs=$LIBS
671 LIBS="conftest_asm.s $LIBS"
672 cat > conftest_asm.s <<EOF
673         .globl _ac_test
674 _ac_test:
675         .long 0
676 EOF
677 AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
678             ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
679 LIBS=$saved_libs])
680 if test "$ac_cv_c_extern_prefix" = "yes"
681 then
682   AC_DEFINE(NEED_UNDERSCORE_PREFIX, 1,
683             [Define if symbols declared in assembly code need an underscore prefix])
684 fi
685
686 dnl **** Check whether stdcall symbols need to be decorated ****
687
688 AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
689                ac_cv_c_stdcall_decoration,
690 [saved_libs=$LIBS
691 LIBS="conftest_asm.s $LIBS"
692 if test "$ac_cv_c_extern_prefix" = "yes"
693 then
694 cat > conftest_asm.s <<EOF
695         .globl _ac_test@0
696 _ac_test@0:
697 EOF
698 else
699 cat > conftest_asm.s <<EOF
700         .globl ac_test@0
701 ac_test@0:
702 EOF
703 fi
704 AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
705             [ac_test(); return 0],
706             ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
707 LIBS=$saved_libs])
708 if test "$ac_cv_c_stdcall_decoration" = "yes"
709 then
710   AC_DEFINE(NEED_STDCALL_DECORATION, 1,
711             [Define if stdcall symbols need to be decorated])
712 fi
713
714 dnl **** Check for .string in assembler ****
715
716 AC_CACHE_CHECK([whether assembler accepts .string],
717                ac_cv_c_asm_string,
718 [saved_libs=$LIBS
719 LIBS="conftest_asm.s $LIBS"
720 cat > conftest_asm.s <<EOF
721         .string "test"
722 EOF
723 AC_TRY_LINK(,,ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no")
724 LIBS=$saved_libs])
725 if test "$ac_cv_c_asm_string" = "yes"
726 then
727   AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
728 fi
729
730 dnl **** Check for working dll ****
731
732 LDSHARED=""
733 LDDLLFLAGS=""
734 if test "$LIBEXT" = "so"
735 then
736   AC_CACHE_CHECK([whether we can build a GNU style ELF dll],
737                  ac_cv_c_dll_gnuelf,
738   [saved_cflags=$CFLAGS
739   CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
740   AC_TRY_LINK(,[return 1],ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")
741   CFLAGS=$saved_cflags
742   ])
743   if test "$ac_cv_c_dll_gnuelf" = "yes"
744   then
745     LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
746     LDDLLFLAGS="-Wl,-Bsymbolic"
747   else
748     AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll,
749                  ac_cv_c_dll_unixware,
750     [saved_cflags=$CFLAGS
751     CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
752     AC_TRY_LINK(,[return 1],ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")
753     CFLAGS=$saved_cflags
754     ])
755     if test "$ac_cv_c_dll_unixware" = "yes"
756     then
757       LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
758       LDDLLFLAGS="-Wl,-B,symbolic"
759     fi
760   fi
761   if test "$ac_cv_c_dll_gnuelf" = "no" -a "$ac_cv_c_dll_unixware" = "no"
762   then
763     LIBEXT="a"
764     AC_CHECK_PROG(DLLWRAP,dllwrap,dllwrap,false)
765     if test "$DLLWRAP" = "dllwrap"; then
766       dnl FIXME - check whether dllwrap works correctly...
767       case $host_os in
768         *cygwin*)
769             LIBEXT="dll"
770             ;;
771       esac
772     fi
773   fi
774 fi
775
776 if test "$LIBEXT" = "a"; then
777   AC_MSG_ERROR(
778 [could not find a way to build shared libraries.
779 It is currently not possible to build Wine without shared library
780 (.so) support to allow transparent switch between .so and .dll files.
781 If you are using Linux, you will need a newer binutils.]
782 )
783 fi
784
785 DLLFLAGS=""
786 LDPATH=""
787
788 if test "$LIBEXT" = "so"; then
789     DLLFLAGS="-fPIC"
790     DLLEXT=".so"
791     LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
792 elif test "$LIBEXT" = "dll"; then
793     #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
794     DLLEXT=""
795     LDPATH="PATH=\"\$(TOPOBJDIR)/unicode:\$\$PATH\""
796 fi
797
798 AC_SUBST(DLLFLAGS)
799 AC_SUBST(DLLEXT)
800 AC_SUBST(LDSHARED)
801 AC_SUBST(LDDLLFLAGS)
802 AC_SUBST(LIBEXT)
803 AC_SUBST(LDPATH)
804
805 dnl **** Check for reentrant libc ****
806 dnl
807 dnl For cross-compiling we blindly assume that libc is reentrant. This is
808 dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
809
810 AC_DEFUN([WINE_CHECK_ERRNO],
811 [
812   AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
813   [AC_TRY_RUN([int myerrno = 0;
814 char buf[256];
815 int *$1(){return &myerrno;}
816 main(){connect(0,buf,255); exit(!myerrno);}],
817   wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
818   wine_cv_libc_r_$1=yes )
819 ])
820 if test "$wine_cv_libc_r_$1" = "yes"
821 then
822     wine_cv_libc_reentrant=$1 
823 fi
824 ])
825
826 wine_cv_libc_reentrant=no 
827 dnl Linux style errno location
828 WINE_CHECK_ERRNO(__errno_location)
829 dnl FreeBSD style errno location
830 WINE_CHECK_ERRNO(__error)
831 dnl Solaris style errno location
832 WINE_CHECK_ERRNO(___errno)
833 dnl UnixWare style errno location
834 WINE_CHECK_ERRNO(__thr_errno)
835 dnl NetBSD style errno location
836 WINE_CHECK_ERRNO(__errno)
837
838 if test "$wine_cv_libc_reentrant" != "no" 
839 then
840   AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
841                      [Define to the name of the function returning errno for reentrant libc])
842 fi
843
844 dnl **** Check for reentrant X libraries ****
845 dnl
846 dnl This may fail to determine whether X libraries are reentrant if
847 dnl AC_PATH_XTRA does not set x_libraries. In this case manual configuration
848 dnl is possible with the --without-reentrant-x option.
849
850 if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
851 then
852 AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
853   [ if test "x$with_reentrant_x" = "xno" 
854     then
855         wine_cv_x_reentrant=no
856     else
857         libX11_check=none
858         for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
859             if test -r $dir/libX11.so; then
860                 libX11_check="-D $dir/libX11.so"
861                 break 1
862             fi
863             if test -r $dir/libX11.a; then
864                 libX11_check="$dir/libX11.a"
865                 break 1
866             fi
867         done
868         if test "$libX11_check" != "none"; then
869             if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
870             then
871                 wine_cv_x_reentrant=yes
872             else
873                 wine_cv_x_reentrant=no
874             fi
875         else
876             wine_cv_x_reentrant=unknown
877         fi
878     fi ] )
879 else
880     wine_cv_x_reentrant=no
881 fi
882 if test "$wine_cv_x_reentrant" = "no"
883 then
884   AC_DEFINE(NO_REENTRANT_X11, 1,
885             [Define if X libraries are not reentrant (compiled without -D_REENTRANT)])
886 fi
887
888
889 dnl **** Check for functions ****
890
891 AC_FUNC_ALLOCA()
892 AC_CHECK_FUNCS(\
893         __libc_fork \
894         _lwp_create \
895         _pclose \
896         _popen \
897         _stricmp \
898         _strnicmp \
899         clone \
900         ecvt \
901         finite \
902         fpclass \
903         ftruncate64 \
904         getnetbyaddr \
905         getnetbyname \
906         getpagesize \
907         getprotobyname \
908         getprotobynumber \
909         getrlimit \
910         getservbyport \
911         getsockopt \
912         inet_network \
913         lseek64 \
914         lstat \
915         memmove \
916         mmap \
917         pclose \
918         pread \
919         popen \
920         pwrite \
921         rfork \
922         select \
923         sendmsg \
924         settimeofday \
925         sigaltstack \
926         statfs \
927         strcasecmp \
928         strerror \
929         strncasecmp \
930         tcgetattr \
931         timegm \
932         usleep \
933         vfscanf \
934         wait4 \
935         waitpid \
936 )
937
938 dnl **** Check for header files ****
939
940 AC_CHECK_HEADERS(\
941         arpa/inet.h \
942         arpa/nameser.h \
943         direct.h \
944         elf.h \
945         float.h \
946         ieeefp.h \
947         io.h \
948         libio.h \
949         libutil.h \
950         link.h \
951         linux/cdrom.h \
952         linux/input.h \
953         linux/joystick.h \
954         linux/serial.h \
955         linux/ucdrom.h \
956         net/if.h \
957         netdb.h \
958         netinet/in.h \
959         netinet/in_systm.h \
960         netinet/ip.h \
961         netinet/tcp.h \
962         pty.h \
963         resolv.h \
964         sched.h \
965         socket.h \
966         stdint.h \
967         strings.h \
968         sys/cdio.h \
969         sys/errno.h \
970         sys/file.h \
971         sys/filio.h \
972         sys/ipc.h \
973         sys/link.h \
974         sys/lwp.h \
975         sys/mman.h \
976         sys/modem.h \
977         sys/mount.h \
978         sys/msg.h \
979         sys/param.h \
980         sys/ptrace.h \
981         sys/reg.h \
982         sys/signal.h \
983         sys/shm.h \
984         sys/socket.h \
985         sys/sockio.h \
986         sys/statfs.h \
987         sys/strtio.h \
988         sys/syscall.h \
989         sys/time.h \
990         sys/user.h \
991         sys/wait.h \
992         sys/v86.h \
993         sys/v86intr.h \
994         sys/vfs.h \
995         sys/vm86.h \
996         syscall.h \
997         ucontext.h \
998         unistd.h \
999 )
1000 AC_HEADER_STAT()
1001
1002 dnl **** Check for types ****
1003
1004 AC_C_CONST
1005 AC_C_INLINE
1006 AC_TYPE_MODE_T
1007 AC_TYPE_OFF_T
1008 AC_TYPE_PID_T
1009 AC_TYPE_SIZE_T
1010 AC_CHECK_SIZEOF(long long,0)
1011
1012 AC_CACHE_CHECK([whether linux/input.h is for real],
1013         wine_cv_linux_input_h,
1014         AC_TRY_COMPILE([
1015             #include <linux/input.h>
1016         ] , [
1017             int foo = EVIOCGBIT(EV_ABS,42);
1018             int bar = BTN_PINKIE;
1019             int fortytwo = 42;
1020         ],
1021         wine_cv_linux_input_h=yes,
1022         wine_cv_linux_input_h=no,
1023         no
1024         )
1025     )
1026     if test "$wine_cv_linux_input_h" = "yes"
1027     then
1028         AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
1029                   [Define if we have linux/input.h AND it contains the INPUT event API])
1030     fi
1031
1032    
1033 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
1034         wine_cv_linux_gethostbyname_r_6,
1035         AC_TRY_COMPILE([
1036 #include <netdb.h>
1037         ], [
1038     char *name=NULL;
1039     struct hostent he;
1040     struct hostent *result;
1041     char *buf=NULL;
1042     int bufsize=0;
1043     int res,errnr;
1044     char *addr=NULL;
1045     int addrlen=0;
1046     int addrtype=0;
1047     res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
1048     res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
1049     ],
1050         wine_cv_linux_gethostbyname_r_6=yes,
1051         wine_cv_linux_gethostbyname_r_6=no
1052         )
1053    )
1054    if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
1055    then
1056       AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
1057                 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
1058    fi
1059
1060 if test "$ac_cv_header_linux_joystick_h" = "yes"
1061 then
1062    AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
1063         wine_cv_linux_joystick_22_api,
1064         AC_TRY_COMPILE([
1065         #include <sys/ioctl.h>
1066         #include <linux/joystick.h>
1067
1068         struct js_event blub;
1069         #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1070         #error "no 2.2 header"
1071         #endif
1072         ],/*empty*/,
1073         wine_cv_linux_joystick_22_api=yes,
1074         wine_cv_linux_joystick_22_api=no,
1075         wine_cv_linux_joystick_22_api=no
1076         )
1077    )
1078    if test "$wine_cv_linux_joystick_22_api" = "yes"
1079    then
1080       AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1081                 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1082    fi
1083 fi
1084
1085 dnl **** statfs checks ****
1086
1087 if test "$ac_cv_header_sys_vfs_h" = "yes"
1088 then
1089     AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1090                     wine_cv_sys_vfs_has_statfs,
1091         AC_TRY_COMPILE([
1092         #include <sys/types.h>
1093         #ifdef HAVE_SYS_PARAM_H
1094         # include <sys/param.h>
1095         #endif
1096         #include <sys/vfs.h>
1097         ],[
1098                 struct statfs stfs;
1099
1100                 memset(&stfs,0,sizeof(stfs));
1101         ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1102         )
1103     )
1104     if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1105     then
1106       AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1107                 [Define if the struct statfs is defined by <sys/vfs.h>])
1108     fi
1109 fi
1110
1111 if test "$ac_cv_header_sys_statfs_h" = "yes"
1112 then
1113     AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1114                     wine_cv_sys_statfs_has_statfs,
1115         AC_TRY_COMPILE([
1116         #include <sys/types.h>
1117         #ifdef HAVE_SYS_PARAM_H
1118         # include <sys/param.h>
1119         #endif
1120         #include <sys/statfs.h>
1121         ],[
1122                 struct statfs stfs;
1123         ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1124         )
1125     )
1126     if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1127     then
1128       AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1129                 [Define if the struct statfs is defined by <sys/statfs.h>])
1130     fi
1131 fi
1132
1133 if test "$ac_cv_header_sys_mount_h" = "yes"
1134 then
1135     AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1136                     wine_cv_sys_mount_has_statfs,
1137         AC_TRY_COMPILE([
1138         #include <sys/types.h>
1139         #ifdef HAVE_SYS_PARAM_H
1140         # include <sys/param.h>
1141         #endif
1142         #include <sys/mount.h>
1143         ],[
1144                 struct statfs stfs;
1145         ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1146         )
1147     )
1148     if test "$wine_cv_sys_mount_has_statfs" = "yes"
1149     then
1150       AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1151                 [Define if the struct statfs is defined by <sys/mount.h>])
1152     fi
1153 fi
1154
1155 dnl *** Check for some structure members
1156
1157 dnl Macro to check if a structure contains a specified member
1158 dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
1159
1160 AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
1161 [AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
1162  AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
1163 AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
1164 ])
1165
1166 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1167
1168 WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree,
1169 [#include <sys/types.h>
1170 #ifdef HAVE_SYS_PARAM_H
1171 # include <sys/param.h>
1172 #endif
1173 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1174 # include <sys/mount.h>
1175 #else
1176 # ifdef STATFS_DEFINED_BY_SYS_VFS
1177 #  include <sys/vfs.h>
1178 # else
1179 #  ifdef STATFS_DEFINED_BY_SYS_STATFS
1180 #   include <sys/statfs.h>
1181 #  endif
1182 # endif
1183 #endif],
1184     [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])])
1185
1186 WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail,
1187 [#include <sys/types.h>
1188 #ifdef HAVE_SYS_PARAM_H
1189 # include <sys/param.h>
1190 #endif
1191 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1192 # include <sys/mount.h>
1193 #else
1194 # ifdef STATFS_DEFINED_BY_SYS_VFS
1195 #  include <sys/vfs.h>
1196 # else
1197 #  ifdef STATFS_DEFINED_BY_SYS_STATFS
1198 #   include <sys/statfs.h>
1199 #  endif
1200 # endif
1201 #endif],
1202     [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])])
1203
1204 dnl Check for file descriptor passing with msg_accrights
1205 WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights,
1206 [#include <sys/types.h>
1207 #include <sys/socket.h>],
1208     [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])])
1209
1210 dnl Check for the sa_len member in struct sockaddr
1211 WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len,
1212 [#include <sys/types.h>
1213 #include <sys/socket.h>],
1214     [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])])
1215
1216 dnl Check for the sun_len member in struct sockaddr_un
1217 WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len,
1218 [#include <sys/types.h>
1219 #include <sys/socket.h>
1220 #include <sys/un.h>],
1221     [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])])
1222
1223 dnl *** check for the need to define __i386__
1224
1225 case $target_cpu in
1226   *i[3456789]86* )
1227     AC_CACHE_CHECK([whether we need to define __i386__],ac_cv_cpp_def_i386,
1228       AC_EGREP_CPP(yes,[#ifndef __i386__
1229 yes
1230 #endif],
1231  ac_cv_cpp_def_i386="yes", ac_cv_cpp_def_i386="no"))
1232     ;;
1233 esac
1234 if test "$ac_cv_cpp_def_i386" = "yes"
1235 then
1236     CFLAGS="$CFLAGS -D__i386__"
1237     LINTFLAGS="$LINTFLAGS -D__i386__"
1238 fi
1239
1240 dnl **** Generate output files ****
1241
1242 dnl Macro to create non-existent directories from config.status
1243 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
1244 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
1245 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
1246
1247 AH_TOP([#define __WINE_CONFIG_H])
1248
1249 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1250 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1251 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1252 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1253 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1254 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1255 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1256 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1257 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1258 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1259 WINE_CONFIG_EXTRA_DIR(dlls/kernel/tests)
1260 WINE_CONFIG_EXTRA_DIR(dlls/oleaut32/tests)
1261 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1262 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1263 WINE_CONFIG_EXTRA_DIR(dlls/user/tests)
1264 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1265 WINE_CONFIG_EXTRA_DIR(include/wine)
1266 WINE_CONFIG_EXTRA_DIR(programs/regapi/tests)
1267 WINE_CONFIG_EXTRA_DIR(programs/winetest/tests)
1268
1269 AC_CONFIG_COMMANDS([include/wine/version.h],
1270 [AC_MSG_NOTICE([creating include/wine/version.h])
1271 cat >$tmp/version.h <<CEOF
1272 /* Generated automatically by configure; DO NOT EDIT! */
1273 #define WINE_RELEASE_INFO "Wine version $wine_version"
1274 CEOF
1275 if cmp -s $tmp/version.h include/wine/version.h 2>/dev/null; then
1276   AC_MSG_NOTICE([include/wine/version.h is unchanged])
1277   rm -f $tmp/version.h
1278 else
1279   rm -f include/wine/version.h
1280   mv $tmp/version.h include/wine/version.h
1281 fi],
1282 [wine_version=$PACKAGE_VERSION])
1283
1284 MAKE_RULES=Make.rules
1285 AC_SUBST_FILE(MAKE_RULES)
1286
1287 MAKE_DLL_RULES=dlls/Makedll.rules
1288 AC_SUBST_FILE(MAKE_DLL_RULES)
1289
1290 MAKE_PROG_RULES=programs/Makeprog.rules
1291 AC_SUBST_FILE(MAKE_PROG_RULES)
1292
1293 AC_CONFIG_FILES([
1294 Make.rules
1295 dlls/Makedll.rules
1296 programs/Makeprog.rules
1297 Makefile
1298 console/Makefile
1299 controls/Makefile
1300 debugger/Makefile
1301 dlls/Makefile
1302 dlls/advapi32/Makefile
1303 dlls/avicap32/Makefile
1304 dlls/avifil32/Makefile
1305 dlls/comctl32/Makefile
1306 dlls/commdlg/Makefile
1307 dlls/crtdll/Makefile
1308 dlls/crypt32/Makefile
1309 dlls/dciman32/Makefile
1310 dlls/ddraw/Makefile
1311 dlls/devenum/Makefile
1312 dlls/dinput/Makefile
1313 dlls/dplay/Makefile
1314 dlls/dplayx/Makefile
1315 dlls/dsound/Makefile
1316 dlls/gdi/Makefile
1317 dlls/glu32/Makefile
1318 dlls/icmp/Makefile
1319 dlls/imagehlp/Makefile
1320 dlls/imm32/Makefile
1321 dlls/kernel/Makefile
1322 dlls/lzexpand/Makefile
1323 dlls/mapi32/Makefile
1324 dlls/mpr/Makefile
1325 dlls/msacm/Makefile
1326 dlls/msacm/imaadp32/Makefile
1327 dlls/msacm/msg711/Makefile
1328 dlls/msdmo/Makefile
1329 dlls/msimg32/Makefile
1330 dlls/msnet32/Makefile
1331 dlls/msrle32/Makefile
1332 dlls/msvcrt/Makefile
1333 dlls/msvcrt20/Makefile
1334 dlls/msvideo/Makefile
1335 dlls/netapi32/Makefile
1336 dlls/ntdll/Makefile
1337 dlls/odbc32/Makefile
1338 dlls/ole32/Makefile
1339 dlls/oleaut32/Makefile
1340 dlls/olecli/Makefile
1341 dlls/oledlg/Makefile
1342 dlls/olepro32/Makefile
1343 dlls/olesvr/Makefile
1344 dlls/opengl32/Makefile
1345 dlls/psapi/Makefile
1346 dlls/qcap/Makefile
1347 dlls/quartz/Makefile
1348 dlls/rasapi32/Makefile
1349 dlls/richedit/Makefile
1350 dlls/rpcrt4/Makefile
1351 dlls/serialui/Makefile
1352 dlls/setupapi/Makefile
1353 dlls/shdocvw/Makefile
1354 dlls/shell32/Makefile
1355 dlls/shfolder/Makefile
1356 dlls/shlwapi/Makefile
1357 dlls/sti/Makefile
1358 dlls/tapi32/Makefile
1359 dlls/ttydrv/Makefile
1360 dlls/twain/Makefile
1361 dlls/url/Makefile
1362 dlls/urlmon/Makefile
1363 dlls/user/Makefile
1364 dlls/version/Makefile
1365 dlls/win32s/Makefile
1366 dlls/winaspi/Makefile
1367 dlls/winedos/Makefile
1368 dlls/wineps/Makefile
1369 dlls/wininet/Makefile
1370 dlls/winmm/Makefile
1371 dlls/winmm/joystick/Makefile
1372 dlls/winmm/mcianim/Makefile
1373 dlls/winmm/mciavi/Makefile
1374 dlls/winmm/mcicda/Makefile
1375 dlls/winmm/mciseq/Makefile
1376 dlls/winmm/mciwave/Makefile
1377 dlls/winmm/midimap/Makefile
1378 dlls/winmm/wavemap/Makefile
1379 dlls/winmm/winearts/Makefile
1380 dlls/winmm/wineoss/Makefile
1381 dlls/winnls/Makefile
1382 dlls/winsock/Makefile
1383 dlls/winspool/Makefile
1384 dlls/wintrust/Makefile
1385 dlls/wow32/Makefile
1386 dlls/wsock32/Makefile
1387 dlls/x11drv/Makefile
1388 documentation/Makefile
1389 files/Makefile
1390 graphics/Makefile
1391 graphics/enhmetafiledrv/Makefile
1392 graphics/metafiledrv/Makefile
1393 graphics/win16drv/Makefile
1394 graphics/x11drv/Makefile
1395 if1632/Makefile
1396 include/Makefile
1397 library/Makefile
1398 libtest/Makefile
1399 loader/Makefile
1400 loader/ne/Makefile
1401 memory/Makefile
1402 misc/Makefile
1403 miscemu/Makefile
1404 msdos/Makefile
1405 objects/Makefile
1406 ole/Makefile
1407 programs/Makefile
1408 programs/avitools/Makefile
1409 programs/clock/Makefile
1410 programs/cmdlgtst/Makefile
1411 programs/control/Makefile
1412 programs/notepad/Makefile
1413 programs/osversioncheck/Makefile
1414 programs/progman/Makefile
1415 programs/regapi/Makefile
1416 programs/regtest/Makefile
1417 programs/uninstaller/Makefile
1418 programs/view/Makefile
1419 programs/wcmd/Makefile
1420 programs/wineconsole/Makefile
1421 programs/winemine/Makefile
1422 programs/winetest/Makefile
1423 programs/winhelp/Makefile
1424 programs/winver/Makefile
1425 relay32/Makefile
1426 scheduler/Makefile
1427 server/Makefile
1428 tools/Makefile
1429 tools/winapi/Makefile
1430 tools/winebuild/Makefile
1431 tools/winedump/Makefile
1432 tools/wmc/Makefile
1433 tools/wrc/Makefile
1434 tsx11/Makefile
1435 unicode/Makefile
1436 win32/Makefile
1437 windows/Makefile
1438 windows/x11drv/Makefile ])
1439
1440 AC_OUTPUT
1441
1442 if test "$have_x" = "no"
1443 then
1444   echo
1445   echo "*** Warning: X development files not found. Wine will be built without"
1446   echo "*** X support, which currently does not work, and would probably not be"
1447   echo "*** what you want anyway. You will need to install devel packages of"
1448   echo "*** Xlib/Xfree86 at the very least."
1449 fi
1450
1451 if test "$ac_cv_lib_ncurses_resizeterm" = "no" -a "$ac_cv_lib_ncurses_waddch" = "yes"
1452 then
1453   echo
1454   echo "*** Warning: resizeterm not found in ncurses. Wine will be built without"
1455   echo "*** terminal resize support. Consider upgrading ncurses."
1456 fi
1457
1458 if test "$wine_cv_libc_reentrant" = "no" 
1459 then
1460   echo
1461   echo "*** Warning: non-reentrant libc detected. Wine will be built without"
1462   echo "*** threading support. Consider upgrading libc to a more recent"
1463   echo "*** reentrant version of libc."
1464 fi
1465
1466 if test "$wine_cv_opengl_version_OK" = "no"
1467 then
1468   echo
1469   echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1470   echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1471 fi
1472
1473 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "x"
1474 then
1475   echo
1476   echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
1477   echo "*** thread-safety. To prevent crashes, OpenGL support has been removed."
1478   echo "*** A fix for glibc 2.1.3 that seems to work is included in this version of Wine,"
1479   echo "*** start configure with '--enable-opengl' to force OpenGL support."
1480 fi
1481
1482 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "xyes"
1483 then
1484   echo
1485   echo "*** Warning: you explicitly linked in a thread-safe OpenGL version. If you"
1486   echo "*** experience unusual crashes on DirectDraw games, try first to disable OpenGL"
1487   echo "*** support before reporting bugs."
1488 fi
1489
1490 if test "$wine_cv_warn_cups_h" = "yes"
1491 then
1492   echo
1493   echo "*** Note: You have cups runtime libraries, but no development"
1494   echo "*** libraries. Install the cups-devel package or whichever package"
1495   echo "*** contains cups.h to enable CUPS support in Wine."
1496 fi
1497
1498 if test "$wine_cv_msg_freetype" = "yes"
1499 then
1500   echo
1501   echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1502   echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1503   echo "*** freetype-devel package (or its equivalent on your distribution) to"
1504   echo "*** enable Wine to use TrueType fonts."
1505 fi
1506
1507 echo
1508 echo "Configure finished.  Do 'make depend && make' to compile Wine."
1509 echo
1510
1511 dnl Local Variables:
1512 dnl comment-start: "dnl "
1513 dnl comment-end: ""
1514 dnl comment-start-skip: "\\bdnl\\b\\s *"
1515 dnl compile-command: "autoconf"
1516 dnl End: