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