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