Don't export the wine_pthread_* functions.
[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 AC_ARG_ENABLE(win16, AC_HELP_STRING([--disable-win16],[do not include Win16 support]))
16 AC_ARG_ENABLE(debug, AC_HELP_STRING([--disable-debug],[compile out all debugging messages]))
17 AC_ARG_ENABLE(trace, AC_HELP_STRING([--disable-trace],[compile out TRACE messages]))
18
19 AC_ARG_WITH(opengl,    AC_HELP_STRING([--without-opengl],[do not use OpenGL]))
20 AC_ARG_WITH(curses,    AC_HELP_STRING([--without-curses],[do not use curses]))
21 AC_ARG_WITH(nptl,      AC_HELP_STRING([--with-nptl],[use glibc NPTL threading support]))
22 AC_ARG_WITH(wine-tools,AC_HELP_STRING([--with-wine-tools=<dir>],[use Wine tools from directory <dir>]))
23
24 AC_SUBST(WIN16_FILES,"\$(WIN16_FILES)")
25 AC_SUBST(WIN16_INSTALL,"\$(WIN16_INSTALL)")
26 if test "x$enable_win16" = "xno"
27 then
28   WIN16_FILES=""
29   WIN16_INSTALL=""
30 fi
31 if test "x$enable_debug" = "xno"
32 then
33     AC_DEFINE(NO_DEBUG_MSGS,1,[Define to disable all debug messages.])
34 fi
35 if test "x$enable_trace" = "xno" -o "x$enable_debug" = "xno"
36 then
37     AC_DEFINE(NO_TRACE_MSGS,1,[Define to disable trace messages.])
38 fi
39 if test "x$with_nptl" = "xyes"
40 then
41     AC_DEFINE(HAVE_NPTL,1,[Define to use glibc NPTL threading support.])
42     AC_SUBST(LIBPTHREAD,"-lpthread")
43 fi
44
45 dnl **** Check for some programs ****
46
47 AC_CANONICAL_HOST
48 AC_PROG_MAKE_SET
49 AC_PROG_CC
50 AC_PROG_CPP
51
52 AC_CACHE_CHECK([for the directory containing the Wine tools], wine_cv_toolsdir,
53   [if test -z "$with_wine_tools"; then
54      if test "$cross_compiling" = "yes"; then
55        AC_MSG_ERROR([you must use the --with-wine-tools option when cross-compiling.])
56      else
57        wine_cv_toolsdir="\$(TOPOBJDIR)"
58      fi
59    elif test -d "$with_wine_tools/tools/winebuild"; then
60      case $with_wine_tools in
61        /*) wine_cv_toolsdir="$with_wine_tools" ;;
62        *)  wine_cv_toolsdir="\$(TOPOBJDIR)/$with_wine_tools" ;;
63      esac
64    else
65      AC_MSG_ERROR([could not find Wine tools in $with_wine_tools.])
66    fi])
67 AC_SUBST(TOOLSDIR,$wine_cv_toolsdir)
68
69 AC_PATH_XTRA
70 AC_PROG_YACC
71 AC_PROG_LEX
72
73 dnl **** Just additional warning checks, since AC_PROG just sets 'yacc' even
74 dnl **** without one present.
75 AC_CHECK_PROGS(XYACC,$YACC bison yacc,none)
76 if test "$XYACC" = "none"
77 then
78   AC_MSG_ERROR([no suitable bison/yacc found. Please install the 'bison' package.])
79 fi
80 AC_CHECK_PROGS(XLEX,$LEX flex lex,none)
81 if test "$XLEX" = "none"
82 then
83   AC_MSG_ERROR([no suitable lex found. Please install the 'flex' package.])
84 fi
85
86 AC_CHECK_TOOLS(AS,[gas as],as)
87 AC_CHECK_TOOL(LD,ld,ld)
88 AC_CHECK_TOOL(AR,ar,ar)
89 AC_PROG_RANLIB
90 AC_CHECK_TOOL(STRIP,strip,strip)
91 AC_CHECK_TOOL(WINDRES,windres,false)
92 AC_PROG_LN_S
93 WINE_PROG_LN
94 AC_PATH_PROG(LDCONFIG, ldconfig, true, [/sbin /usr/sbin $PATH])
95 AC_PROG_INSTALL
96 dnl Prepend src dir to install path dir if it's a relative path
97 case "$INSTALL" in
98   [[\\/$]]* | ?:[[\\/]]* ) ;;
99   *)  INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
100 esac
101
102 dnl Check for lint
103 AC_CHECK_PROGS(LINT, lclint lint)
104 if test "$LINT" = "lint"
105 then
106   LINTFLAGS="$LINTFLAGS -errchk=%all,no%longptr64 -errhdr=%user -Ncheck=macro -Nlevel=4"
107   dnl LINTFLAGS='-D_SIZE_T "-Dsize_t=unsigned long" -errchk=longptr64'
108 fi
109 AC_SUBST(LINT)
110 AC_SUBST(LINTFLAGS)
111
112 dnl Check for db2html
113 AC_CHECK_PROGS(DB2HTML, docbook2html db2html, false)
114 AC_SUBST(DB2HTML)
115
116 dnl Check for db2pdf
117 AC_CHECK_PROGS(DB2PDF, docbook2pdf db2pdf, false)
118 AC_SUBST(DB2PDF)
119
120 dnl Check for db2ps
121 AC_CHECK_PROGS(DB2PS, docbook2ps db2ps, false)
122 AC_SUBST(DB2PS)
123
124 dnl Check for db2txt
125 AC_CHECK_PROGS(DB2TXT, docbook2txt db2txt, false)
126 AC_SUBST(DB2TXT)
127
128 dnl **** Check for some libraries ****
129
130 dnl Check for -lm
131 AC_CHECK_LIB(m,sqrt)
132 dnl Check for -li386 for NetBSD and OpenBSD
133 AC_CHECK_LIB(i386,i386_set_ldt)
134 dnl Check for -lossaudio for NetBSD
135 AC_CHECK_LIB(ossaudio,_oss_ioctl)
136 dnl Check for -lw for Solaris
137 AC_CHECK_FUNCS(iswalnum,,AC_CHECK_LIB(w,iswalnum))
138 dnl Check for -lnsl for Solaris
139 AC_CHECK_FUNCS(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname))
140 dnl Check for -lsocket for Solaris
141 AC_CHECK_FUNCS(connect,,AC_CHECK_LIB(socket,connect))
142 dnl Check for -lresolv for Solaris
143 AC_CHECK_FUNCS(inet_aton,,AC_CHECK_LIB(resolv,inet_aton))
144 dnl Check for -lxpg4 for FreeBSD
145 AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
146 dnl Check for -lmmap for OS/2
147 AC_CHECK_LIB(mmap,mmap)
148
149 JPEGLIB=""
150 AC_SUBST(JPEGLIB)
151 AC_CHECK_HEADERS(jpeglib.h,
152     AC_CHECK_LIB(jpeg,jpeg_start_decompress,
153         AC_DEFINE(HAVE_LIBJPEG,1,[Define if you have libjpeg including devel headers])
154         JPEGLIB="-ljpeg"
155     )
156 )
157
158 AC_SUBST(GIFLIB,"")
159 AC_CHECK_HEADERS(gif_lib.h,
160     AC_CHECK_LIB(ungif,DGifOpen,
161         [AC_DEFINE(HAVE_LIBGIF,1,[Define if you have libgif/libungif including devel headers])
162          GIFLIB="-lungif"],
163         [AC_CHECK_LIB(gif,DGifOpen,
164                       [AC_DEFINE(HAVE_LIBGIF,1)
165                        GIFLIB="-lgif"])]))
166
167 AC_SUBST(XLIB)
168 AC_SUBST(XFILES)
169 XFILES=""
170 AC_SUBST(OPENGLFILES)
171 OPENGLFILES=""
172 AC_SUBST(GLU32FILES)
173 GLU32FILES=""
174 AC_SUBST(OPENGL_LIBS)
175 OPENGL_LIBS=""
176 if test "$have_x" = "yes"
177 then
178     XLIB="-lXext -lX11"
179     ac_save_CPPFLAGS="$CPPFLAGS"
180     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
181
182     dnl *** All of the following tests require X11/Xlib.h
183     AC_CHECK_HEADERS(X11/Xlib.h,
184       [
185         AC_CHECK_HEADERS([X11/XKBlib.h \
186                           X11/Xutil.h \
187                           X11/extensions/shape.h \
188                           X11/extensions/XShm.h \
189                           X11/extensions/Xrandr.h \
190                           X11/extensions/Xrender.h \
191                           X11/extensions/Xvlib.h \
192                           X11/extensions/xf86dga.h \
193                           X11/extensions/xf86vmode.h],,,
194                          [#include <X11/Xlib.h>
195                           #ifdef HAVE_X11_XUTIL_H
196                           # include <X11/Xutil.h>
197                           #endif])
198
199         dnl *** Check for X keyboard extension
200         if test "$ac_cv_header_X11_XKBlib_h" = "yes"
201         then
202               AC_CHECK_LIB(X11, XkbQueryExtension,
203               AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
204               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
205         fi
206
207         dnl *** Check for X Shm extension
208         if test "$ac_cv_header_X11_extensions_XShm_h" = "yes"
209         then
210               AC_CHECK_LIB(Xext, XShmQueryExtension,
211               AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
212               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
213         fi
214
215         dnl *** Check for X shape extension
216         if test "$ac_cv_header_X11_extensions_shape_h" = "yes"
217         then
218               AC_CHECK_LIB(Xext,XShapeQueryExtension,
219               AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
220               $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
221         fi
222
223         dnl *** Check for XFree86 DGA / DGA 2.0 extension
224         if test "$ac_cv_header_X11_extensions_xf86dga_h" = "yes"
225         then
226               AC_CHECK_LIB(Xxf86dga, XDGAQueryExtension,
227                 [ dnl *** If found...
228                   AC_DEFINE(HAVE_LIBXXF86DGA2, 1,
229                             [Define if you have the Xxf86dga library version 2])
230                   X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
231                ],
232                 [ dnl *** If not found, look for XF86DGAQueryExtension()
233                   dnl *** instead (DGA 2.0 not found)...
234                   AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
235                     [ AC_DEFINE(HAVE_LIBXXF86DGA, 1,
236                                 [Define if you have the Xxf86dga library version 1])
237                       X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
238                     ],,
239                     $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
240                   )
241                 ],
242                 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
243         fi
244
245         dnl *** Check for XFree86 VMODE extension
246         if test "$ac_cv_header_X11_extensions_xf86vmode_h" = "yes"
247         then
248                 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension,
249                   [ AC_DEFINE(HAVE_LIBXXF86VM, 1, [Define if you have the Xxf86vm library])
250                      X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm"
251                   ],,
252                   $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
253         fi
254
255         dnl *** Check for X RandR extension
256         if test "$ac_cv_header_X11_extensions_Xrandr_h" = "yes"
257         then
258                 AC_CHECK_LIB(Xrandr, XRRSetScreenConfigAndRate,
259                   [ AC_DEFINE(HAVE_LIBXRANDR, 1, [Define if you have the Xrandr library])
260                      X_PRE_LIBS="$X_PRE_LIBS -lXrandr -lXrender"
261                   ],,
262                   $X_LIBS -lXrender -lXext -lX11 $X_EXTRA_LIBS)
263         fi
264
265         dnl *** Check for XVideo extension supporting XvImages
266         if test "$ac_cv_header_X11_extensions_Xvlib_h" = "yes"
267         then
268                 AC_CHECK_LIB(Xv, XvShmCreateImage,
269                   [ AC_DEFINE(HAVE_XVIDEO, 1, [Define if the X libraries support XVideo])
270                      X_PRE_LIBS="$X_PRE_LIBS -lXv"
271                   ],,
272                   $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
273         fi
274       ]
275     ) dnl *** End of X11/Xlib.h check
276
277     dnl Check for the presence of OpenGL
278     if test "x$with_opengl" != "xno"
279     then
280         if test -f /usr/X11R6/lib/libGL.a -a ! -f /usr/X11R6/lib/libGL.so
281         then
282             AC_MSG_ERROR([/usr/X11R6/lib/libGL.a is present on your system.
283 This prevents linking to OpenGL. Delete the file and restart configure.])
284         fi
285
286         AC_CHECK_HEADERS(GL/gl.h GL/glx.h)
287         if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
288         then
289             AC_CHECK_HEADERS(GL/glext.h,,,[#include <GL/glx.h>])
290             dnl Check for some problems due to old Mesa versions
291             AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_version_OK,
292               AC_TRY_COMPILE(
293                 [#include <GL/gl.h>],
294                 [GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
295                 [wine_cv_opengl_version_OK="yes"],
296                 [wine_cv_opengl_version_OK="no"]
297               )
298             )
299
300             if test "$wine_cv_opengl_version_OK" = "yes"
301             then
302                 dnl Check for the presence of the library
303                 AC_CHECK_LIB(GL,glXCreateContext,
304                              OPENGL_LIBS="-lGL"
305                              ,,
306                              $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
307
308                 if test "$ac_cv_lib_GL_glXCreateContext" = "yes"
309                 then
310                         OPENGLFILES='$(OPENGLFILES)'
311                         AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])
312
313                         AC_CHECK_LIB(GL,glXGetProcAddressARB,
314                                      AC_DEFINE(HAVE_GLX_GETPROCADDRESS, 1,
315                                                [Define if the OpenGL library supports the glXGetProcAddressARB call]),,
316                                      $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
317
318                         if test "$ac_cv_lib_GL_glXGetProcAddressARB" = "yes"
319                         then
320                                AC_CACHE_CHECK([for OpenGL extension functions prototypes], wine_cv_extension_prototypes,
321                                   [AC_TRY_COMPILE([#include <GL/gl.h>
322                                                   #ifdef HAVE_GL_GLEXT_H
323                                                   # include <GL/glext.h>
324                                                   #endif
325                                                   ],
326                                                  [PFNGLCOLORTABLEEXTPROC test_proc;],
327                                                  [wine_cv_extension_prototypes="yes"],
328                                                  [wine_cv_extension_prototypes="no"]
329                                   )]
330                                 )
331                                 if test "$wine_cv_extension_prototypes" = "yes"
332                                 then
333                                     AC_DEFINE(HAVE_GLEXT_PROTOTYPES, 1,
334                                               [Define if the OpenGL headers define extension typedefs])
335                                 fi
336                         fi
337
338                 fi
339                 dnl Check for GLU32 library.
340                 AC_CHECK_LIB(GLU,gluLookAt,
341                              [OPENGL_LIBS="$OPENGL_LIBS -lGLU"
342                              GLU32FILES='$(GLU32FILES)']
343                              ,,
344                              $OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
345                 )
346              fi
347          fi
348     fi
349
350     dnl **** Check for NAS ****
351     AC_SUBST(NASLIBS,"")
352     AC_CHECK_HEADERS(audio/audiolib.h,
353          [AC_CHECK_HEADERS(audio/soundlib.h,,,[#include <audio/audiolib.h>])
354           AC_CHECK_LIB(audio,AuCreateFlow,
355                        [AC_DEFINE(HAVE_NAS,1,[Define if you have NAS including devel headers])
356                         NASLIBS="-laudio -lXt $X_LIBS -lXext -lX11 $X_EXTRA_LIBS"],,
357                        [-lXt $X_LIBS -lXext -lX11 $X_EXTRA_LIBS])])
358
359     CPPFLAGS="$ac_save_CPPFLAGS"
360     XFILES='$(XFILES)'
361 else
362     XLIB=""
363     X_CFLAGS=""
364     X_LIBS=""
365 fi
366
367 dnl **** Check which curses lib to use ***
368 CURSESLIBS=""
369 if test "x$with_curses" != "xno"
370 then
371     AC_CHECK_HEADERS(ncurses.h,
372         [AC_CHECK_LIB(ncurses,waddch,
373             [AC_DEFINE(HAVE_LIBNCURSES, 1, [Define if you have the ncurses library (-lncurses)])
374              CURSESLIBS="-lncurses"],
375              [AC_CHECK_HEADERS(curses.h,
376                  [AC_CHECK_LIB(curses,waddch,
377                      [AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have the curses library (-lcurses)])
378                       CURSESLIBS="-lcurses"])])])])
379     saved_libs="$LIBS"
380     LIBS="$CURSESLIBS $LIBS"
381     AC_CHECK_FUNCS(getbkgd resizeterm)
382     LIBS="$saved_libs"
383 fi
384 AC_SUBST(CURSESLIBS)
385
386 dnl **** Check for SANE ****
387 AC_CHECK_PROG(sane_devel,sane-config,sane-config,no)
388 if test "$sane_devel" = "no"
389 then
390     SANELIBS=""
391     SANEINCL=""
392 else
393     SANELIBS="`$sane_devel --libs`"
394     SANEINCL="`$sane_devel --cflags`"
395     ac_save_CPPFLAGS="$CPPFLAGS"
396     ac_save_LIBS="$LIBS"
397     CPPFLAGS="$CPPFLAGS $SANEINCL"
398     LIBS="$LIBS $SANELIBS"
399     AC_CHECK_HEADER(sane/sane.h,
400                     [AC_CHECK_LIB(sane,sane_open,
401                                   [AC_DEFINE(HAVE_SANE, 1, [Define if we have SANE development environment])],
402                                   [SANELIBS=""
403                                   SANEINCL=""])],
404                     [SANELIBS=""
405                     SANEINCL=""])
406     LIBS="$ac_save_LIBS"
407     CPPFLAGS="$ac_save_CPPFLAGS"
408 fi
409 AC_SUBST(SANELIBS)
410 AC_SUBST(SANEINCL)
411
412 dnl **** Check for the ICU library ****
413 AC_CHECK_HEADERS(unicode/ubidi.h)
414 if test "$ac_cv_header_unicode_ubidi_h" = "yes"
415 then
416     AC_CACHE_CHECK([whether we can statically link the ICU libraries], ac_cv_lib_icu,
417         [saved_libs="$LIBS"
418          ICU_LIB_DIR="${ICU_LIB_DIR-/usr/lib}"
419          ICUUC_LIB="${ICUUC_LIB-$ICU_LIB_DIR/libicuuc.a}"
420          ICUDATA_LIB="${ICUDATA_LIB-$ICU_LIB_DIR/libicudata.a}"
421          LIBS="$LIBS $ICUUC_LIB $ICUDATA_LIB -lstdc++ -lgcc_s"
422          AC_TRY_LINK([#include <unicode/ubidi.h>],[ubidi_open()],
423                      [ac_cv_lib_icu="yes"],[ac_cv_lib_icu="no"])
424         LIBS="$saved_libs"])
425     if test "$ac_cv_lib_icu" = "yes"
426     then
427         AC_DEFINE(HAVE_ICU,1,[Define to 1 if the ICU libraries are installed])
428         AC_SUBST(ICULIBS,"$ICUUC_LIB $ICUDATA_LIB -lstdc++ -lgcc_s")
429     fi
430 fi
431
432 dnl **** Check for FreeType 2 ****
433 AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
434 if test "$ft_lib" = "no"
435 then
436     FREETYPEINCL=""
437     wine_cv_msg_freetype=no
438 else
439     AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
440     if test "$ft_devel" = "no"
441     then
442         AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
443         if test "$ft_devel2" = "freetype2-config"
444         then
445                 ft_devel=$ft_devel2
446         fi
447     fi
448     if test "$ft_devel" = "no"
449     then
450         FREETYPEINCL=""
451         wine_cv_msg_freetype=yes
452     else
453         FREETYPEINCL=`$ft_devel --cflags`
454         ac_save_CPPFLAGS="$CPPFLAGS"
455         CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
456         AC_CHECK_HEADERS(freetype/freetype.h \
457                          freetype/ftglyph.h \
458                          freetype/tttables.h \
459                          freetype/ftnames.h \
460                          freetype/ftsnames.h \
461                          freetype/ttnameid.h \
462                          freetype/ftoutln.h \
463                          freetype/internal/sfnt.h)
464         AC_TRY_CPP([#include <ft2build.h>
465                     #include <freetype/fttrigon.h>],
466                     [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
467           [Define if you have the <freetype/fttrigon.h> header file.])
468                     wine_cv_fttrigon=yes],
469                     wine_cv_fttrigon=no)
470         CPPFLAGS="$ac_save_CPPFLAGS"
471         dnl Check that we have at least freetype/freetype.h
472         if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
473         then
474             AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
475             wine_cv_msg_freetype=no
476         else
477             FREETYPEINCL=""
478             wine_cv_msg_freetype=yes
479         fi
480     fi
481 fi
482 AC_SUBST(FREETYPEINCL)
483
484 dnl **** Check for parport (currently Linux only) ****
485 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
486  AC_TRY_COMPILE(
487    [#include <linux/ppdev.h>],
488    [ioctl (1,PPCLAIM,0)],
489    [ac_cv_c_ppdev="yes"],
490    [ac_cv_c_ppdev="no"])
491  )
492 if test "$ac_cv_c_ppdev" = "yes"
493 then
494     AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
495 fi
496
497 dnl **** Check for va_copy ****
498 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
499  AC_TRY_LINK(
500    [#include <stdarg.h>],
501    [va_list ap1, ap2;
502     va_copy(ap1,ap2);
503    ],
504    [ac_cv_c_va_copy="yes"],
505    [ac_cv_c_va_copy="no"])
506  )
507 if test "$ac_cv_c_va_copy" = "yes"
508 then
509     AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
510 fi
511 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
512  AC_TRY_LINK(
513    [#include <stdarg.h>],
514    [va_list ap1, ap2;
515     __va_copy(ap1,ap2);
516    ],
517    [ac_cv_c___va_copy="yes"],
518    [ac_cv_c___va_copy="no"])
519  )
520 if test "$ac_cv_c___va_copy" = "yes"
521 then
522     AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
523 fi
524
525 dnl **** Check for pthread_rwlock_t ****
526 AC_CHECK_TYPES([pthread_rwlock_t, pthread_rwlockattr_t],,,[#define _GNU_SOURCE
527 #include <pthread.h>])
528
529 dnl **** Check for Open Sound System ****
530 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
531
532 AC_CACHE_CHECK([for Open Sound System],
533         ac_cv_c_opensoundsystem,
534         AC_TRY_COMPILE([
535         #if defined(HAVE_SYS_SOUNDCARD_H)
536                 #include <sys/soundcard.h>
537         #elif defined(HAVE_MACHINE_SOUNDCARD_H)
538                 #include <machine/soundcard.h>
539         #elif defined(HAVE_SOUNDCARD_H)
540                 #include <soundcard.h>
541         #endif
542         ],[
543
544 /* check for one of the Open Sound System specific SNDCTL_ defines */
545 #if !defined(SNDCTL_DSP_STEREO)
546 #error No open sound system
547 #endif
548 ],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))
549
550 if test "$ac_cv_c_opensoundsystem" = "yes"
551 then
552     AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
553 fi
554
555 AC_CACHE_CHECK([for Open Sound System/MIDI interface],
556         ac_cv_c_opensoundsystem_midi,
557         AC_TRY_COMPILE([
558         #if defined(HAVE_SYS_SOUNDCARD_H)
559                 #include <sys/soundcard.h>
560         #elif defined(HAVE_MACHINE_SOUNDCARD_H)
561                 #include <machine/soundcard.h>
562         #elif defined(HAVE_SOUNDCARD_H)
563                 #include <soundcard.h>
564         #endif
565         ],[
566
567 /* check for one of the Open Sound System specific SNDCTL_SEQ defines */
568 #if !defined(SNDCTL_SEQ_SYNC)
569 #error No open sound system MIDI interface
570 #endif
571 ],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))
572
573 if test "$ac_cv_c_opensoundsystem_midi" = "yes"
574 then
575     AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
576 fi
577
578 dnl **** Check for aRts Sound Server ****
579 AC_PATH_PROG(ARTSCCONFIG, artsc-config)
580 AC_CACHE_CHECK([for aRts Sound server],
581         ac_cv_c_artsserver,
582         if test x$ARTSCCONFIG = x -o x$ARTSCCONFIG = x'"$ARTSCCONFIG"';
583         then
584             ac_cv_c_artsserver=no
585         else
586             ARTSC_CFLAGS=`$ARTSCCONFIG --cflags`
587             ARTSC_LIBS=`$ARTSCCONFIG --libs`
588             ac_cv_c_artsserver=no
589             save_CFLAGS="$CFLAGS"
590             CFLAGS="$CFLAGS $ARTSC_CFLAGS"
591             AC_TRY_COMPILE([
592              #include <artsc.h>
593             ],[
594              arts_stream_t stream;
595             ],[
596             ac_cv_c_artsserver=yes
597             ])
598             CFLAGS="$save_CFLAGS"
599         fi)
600
601 if test "$ac_cv_c_artsserver" = "yes"
602 then
603     AC_SUBST(ARTSLIBS, $ARTSC_LIBS)
604     AC_SUBST(ARTSINCL, $ARTSC_CFLAGS)
605
606     AC_DEFINE(HAVE_ARTS, 1, [Define if you have ARTS sound server])
607 fi
608
609 dnl **** Check for ALSA ****
610 AC_SUBST(ALSALIBS,"")
611 AC_CHECK_HEADERS(alsa/asoundlib.h sys/asoundlib.h, break)
612 if test "$ac_cv_header_sys_asoundlib_h" = "yes" -o "$ac_cv_header_alsa_asoundlib_h" = "yes"
613 then
614     AC_CHECK_LIB(asound,snd_pcm_open,
615         AC_DEFINE(HAVE_ALSA,1,[Define if you have ALSA including devel headers])
616         ALSALIBS="-lasound")
617 fi
618
619 dnl **** Check for libaudioio (which can be used to get solaris audio support) ****
620
621 AC_SUBST(AUDIOIOLIBS,"")
622 AC_CHECK_HEADERS(libaudioio.h,
623     [AC_CHECK_LIB(audioio,AudioIOGetVersion,
624                   [AUDIOIOLIBS="-laudioio"
625                    AC_DEFINE(HAVE_LIBAUDIOIO, 1, [Define if you have libaudioIO])])])
626
627 dnl **** Check for broken glibc mmap64 ****
628
629 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
630         AC_TRY_RUN([
631                 #define _FILE_OFFSET_BITS 64
632                 #include <stdio.h>
633                 #include <unistd.h>
634                 #include <fcntl.h>
635                 #include <sys/mman.h>
636                 #include <errno.h>
637
638                 int main(int argc,char **argv) {
639                         int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
640                         if (fd == -1) exit(1);
641
642                         unlink("conftest.map");
643
644                         write(fd,"test",4);
645
646                         if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
647                             (errno == EINVAL)
648                         ) {
649                                 exit(1);
650                         }
651                         close(fd);
652                         fprintf(stderr,"success!\n");
653                         exit(0);
654                 }
655
656         ],
657     ac_cv_mmap64_works="yes",
658     ac_cv_mmap64_works="no",
659     ac_cv_mmap64_works="no") )
660
661 if test "$ac_cv_mmap64_works" = "yes"
662 then
663     AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
664 fi
665
666 dnl **** Check for gcc specific options ****
667
668 AC_SUBST(EXTRACFLAGS,"")
669 if test "x${GCC}" = "xyes"
670 then
671   EXTRACFLAGS=-Wall
672
673   dnl Check for strength-reduce bug
674   AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
675                   AC_TRY_RUN([
676 int     L[[4]] = {0,1,2,3};
677 int main(void) {
678   static int Array[[3]];
679   unsigned int B = 3;
680   int i;
681   for(i=0; i<B; i++) Array[[i]] = i - 3;
682   for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
683   L[[i]] = 4;
684
685   exit( Array[[1]] != -2 || L[[2]] != 3);
686 }],
687     ac_cv_c_gcc_strength_bug="no",
688     ac_cv_c_gcc_strength_bug="yes",
689     ac_cv_c_gcc_strength_bug="yes") )
690   if test "$ac_cv_c_gcc_strength_bug" = "yes"
691   then
692     EXTRACFLAGS="$EXTRACFLAGS -fno-strength-reduce"
693   fi
694
695   dnl Check for -mpreferred-stack-boundary
696   AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support], ac_cv_c_gcc_stack_boundary,
697       [WINE_TRY_CFLAGS([-mpreferred-stack-boundary=2],
698                       ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")])
699   if test "$ac_cv_c_gcc_stack_boundary" = "yes"
700   then
701     EXTRACFLAGS="$EXTRACFLAGS -mpreferred-stack-boundary=2"
702   fi
703
704   dnl Check for -fno-strict-aliasing
705   AC_CACHE_CHECK([for gcc -fno-strict-aliasing support], ac_cv_c_gcc_no_strict_aliasing,
706       [WINE_TRY_CFLAGS([-fno-strict-aliasing],
707                       ac_cv_c_gcc_no_strict_aliasing="yes",ac_cv_c_gcc_no_strict_aliasing="no")])
708   if test "$ac_cv_c_gcc_no_strict_aliasing" = "yes"
709   then
710     EXTRACFLAGS="$EXTRACFLAGS -fno-strict-aliasing"
711   fi
712
713   dnl Check for -gstabs+ option
714   AC_CACHE_CHECK([for gcc -gstabs+ support], ac_cv_c_gcc_gstabs,
715       [WINE_TRY_CFLAGS([-gstabs+],ac_cv_c_gcc_gstabs="yes", ac_cv_c_gcc_gstabs="no")])
716   if test "$ac_cv_c_gcc_gstabs" = "yes"
717   then
718     EXTRACFLAGS="$EXTRACFLAGS -gstabs+"
719   fi
720
721   dnl Check for noisy string.h
722   saved_CFLAGS="$CFLAGS"
723   CFLAGS="$CFLAGS -Wpointer-arith -Werror"
724   AC_CACHE_CHECK([for broken string.h that generates warnings], ac_cv_c_string_h_warnings,
725       AC_TRY_COMPILE([#include <string.h>],[],
726                      [ac_cv_c_string_h_warnings=no],[ac_cv_c_string_h_warnings=yes]))
727   CFLAGS="$saved_CFLAGS"
728   if test "$ac_cv_c_string_h_warnings" = "no"
729   then
730     EXTRACFLAGS="$EXTRACFLAGS -Wpointer-arith"
731   fi
732 fi
733
734 dnl **** Check how to define a function in assembly code ****
735
736 AC_CACHE_CHECK([how to define a function in assembly code], ac_cv_asm_func_def,
737   WINE_TRY_ASM_LINK(
738       ["\t.globl _ac_test\n\t.def _ac_test; .scl 2; .type 32; .endef\n_ac_test:\t.long 0"],,,
739       ac_cv_asm_func_def=".def",
740     [WINE_TRY_ASM_LINK(["\t.globl _ac_test\n\t.type _ac_test,@function\n_ac_test:\t.long 0"],,,
741       ac_cv_asm_func_def=".type @function",
742     [WINE_TRY_ASM_LINK(["\t.globl _ac_test\n\t.type _ac_test,2\n_ac_test:\t.long 0"],,,
743       ac_cv_asm_func_def=".type 2",
744       ac_cv_asm_func_def="unknown")])]))
745
746 AH_TEMPLATE(__ASM_FUNC,[Define to a macro to generate an assembly function directive])
747 case "$ac_cv_asm_func_def" in
748   ".def")
749      AC_DEFINE([__ASM_FUNC(name)], [".def " __ASM_NAME(name) "; .scl 2; .type 32; .endef"]) ;;
750   ".type @function")
751      AC_DEFINE([__ASM_FUNC(name)], [".type " __ASM_NAME(name) ",@function"]) ;;
752   ".type 2")
753      AC_DEFINE([__ASM_FUNC(name)], [".type " __ASM_NAME(name) ",2"]) ;;
754   *)
755      AC_DEFINE([__ASM_FUNC(name)], [""]) ;;
756 esac
757
758 dnl **** Check for underscore on external symbols ****
759
760 AC_CACHE_CHECK([whether external symbols need an underscore prefix], ac_cv_c_extern_prefix,
761     WINE_TRY_ASM_LINK([".globl _ac_test\n_ac_test:\t.long 0"],
762                       [extern int ac_test;],
763                       [if (ac_test) return 1],
764                       ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no"))
765
766 AH_TEMPLATE(__ASM_NAME,[Define to a macro to generate an assembly name from a C symbol])
767 if test "$ac_cv_c_extern_prefix" = "yes"
768 then
769   AC_DEFINE([__ASM_NAME(name)], ["_" name])
770 else
771   AC_DEFINE([__ASM_NAME(name)], [name])
772 fi
773
774 dnl **** Check how to do strings in assembler ****
775
776 AC_CACHE_CHECK([whether assembler accepts .string], ac_cv_c_asm_string,
777     WINE_TRY_ASM_LINK([".data\n\t.string \"test\"\n\t.text"],,,
778                       ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no"))
779 if test "$ac_cv_c_asm_string" = "yes"
780 then
781   AC_DEFINE(__ASM_STRING, [".string"], [Define to the assembler keyword used to specify an ASCII string])
782 else
783     AC_CACHE_CHECK([whether assembler accepts .asciz], ac_cv_c_asm_asciz,
784         WINE_TRY_ASM_LINK([".data\n\t.asciz \"test\"\n\t.text"],,,
785                       ac_cv_c_asm_asciz="yes",ac_cv_c_asm_asciz="no"))
786     if test "$ac_cv_c_asm_asciz" = "yes"
787     then
788       AC_DEFINE(__ASM_STRING, [".asciz"])
789     else
790       AC_DEFINE(__ASM_STRING, [".ascii"])
791     fi                                  
792 fi
793
794 dnl **** Check for .short in assembler ****
795
796 AC_CACHE_CHECK([whether assembler accepts .short], ac_cv_c_asm_short,
797     WINE_TRY_ASM_LINK([".data\n\t.short 1\n\t.text"],,,
798                       ac_cv_c_asm_short="yes",ac_cv_c_asm_short="no"))
799 if test "$ac_cv_c_asm_short" = "yes"
800 then
801   AC_DEFINE(__ASM_SHORT, [".short"], [Define to the assembler keyword used to specify a word value])
802 else
803   AC_DEFINE(__ASM_SHORT, [".half"])
804 fi
805
806 dnl **** Check for working dll ****
807
808 AC_SUBST(DLLEXT,"")
809 AC_SUBST(DLLFLAGS,"-D_REENTRANT")
810 AC_SUBST(DLLIBS,"")
811 AC_SUBST(LDSHARED,"")
812 AC_SUBST(LDDLL,"")
813 AC_SUBST(LIBEXT,"so")
814 AC_SUBST(IMPLIBEXT,"def")
815
816 case $host_os in
817   cygwin*|mingw32*)
818     AC_CHECK_TOOL(DLLTOOL,dlltool,false)
819     AC_CHECK_TOOL(DLLWRAP,dllwrap,false)
820     if test "$DLLWRAP" = "false"; then
821       LIBEXT="a"
822     else
823       dnl FIXME - check whether dllwrap works correctly...
824       LIBEXT="dll"
825     fi
826     IMPLIBEXT="a"
827     ;;
828   *)
829     AC_CHECK_HEADERS(dlfcn.h,
830         [AC_CHECK_FUNCS(dlopen,,
831             [AC_CHECK_LIB(dl,dlopen,
832                          [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
833                           DLLIBS="-ldl"],
834                          [LIBEXT="a"])])],
835         [LIBEXT="a"])
836
837     if test "$LIBEXT" = "so"
838     then
839       DLLFLAGS="$DLLFLAGS -fPIC"
840       DLLEXT=".so"
841       AC_CACHE_CHECK([whether we can build a GNU style ELF dll], ac_cv_c_dll_gnuelf,
842           [WINE_TRY_CFLAGS([-fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic],
843                            ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")])
844       if test "$ac_cv_c_dll_gnuelf" = "yes"
845       then
846         LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
847         LDDLL="\$(CC) -shared -Wl,-Bsymbolic"
848         AC_CACHE_CHECK([whether the linker accepts -z defs], ac_cv_c_dll_zdefs,
849           [WINE_TRY_CFLAGS([-fPIC -shared -Wl,-Bsymbolic,-z,defs],
850                            ac_cv_c_dll_zdefs="yes",ac_cv_c_dll_zdefs="no")])
851         if test "$ac_cv_c_dll_zdefs" = "yes"
852         then
853           LDDLL="$LDDLL,-z,defs"
854         fi
855         AC_CACHE_CHECK([whether we can relocate the executable to 0x3c000000], ac_cv_ld_reloc_exec,
856           [saved_CFLAGS="$CFLAGS"
857            CFLAGS="$CFLAGS -Wl,--section-start,.interp=0x3c000100"
858            AC_TRY_RUN([#include <unistd.h>
859                        int main() { return (sbrk(32*1024*1024) == (void *)-1); }],
860                       ac_cv_ld_reloc_exec="yes",
861                       ac_cv_ld_reloc_exec="no",
862                       ac_cv_ld_reloc_exec="no")
863            CFLAGS="$saved_CFLAGS"])
864         if test "$ac_cv_ld_reloc_exec" = "yes"
865         then
866           AC_SUBST(LDEXECFLAGS,["-Wl,--section-start,.interp=0x3c000100"])
867         fi
868       else
869         AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll, ac_cv_c_dll_unixware,
870             [WINE_TRY_CFLAGS([-fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic],
871                              ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")])
872         if test "$ac_cv_c_dll_unixware" = "yes"
873         then
874           LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
875           LDDLL="\$(CC) -Wl,-G,-B,symbolic"
876         fi
877       fi
878     fi
879
880     dnl Check for cross compiler to build test programs
881     AC_SUBST(CROSSTEST,"")
882     if test "$cross_compiling" = "no"
883     then
884       AC_CHECK_PROGS(CROSSCC,i586-mingw32msvc-gcc i386-mingw32-gcc,false)
885       AC_CHECK_PROGS(DLLTOOL,i586-mingw32msvc-dlltool i386-mingw32-dlltool,false)
886       AC_CHECK_PROGS(CROSSWINDRES,i586-mingw32msvc-windres i386-mingw32-windres,false)
887       if test "$CROSSCC" != "false"; then CROSSTEST="\$(CROSSTEST)"; fi
888     fi
889     ;;
890 esac
891
892 if test "$LIBEXT" = "a"; then
893   AC_MSG_ERROR(
894 [could not find a way to build shared libraries.
895 It is currently not possible to build Wine without shared library
896 (.so) support to allow transparent switch between .so and .dll files.
897 If you are using Linux, you will need a newer binutils.]
898 )
899 fi
900
901 case $build_os in
902   cygwin*|mingw32*)
903     AC_SUBST(LDPATH,"PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$PATH\"") ;;
904   *)
905     AC_SUBST(LDPATH,"LD_LIBRARY_PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$LD_LIBRARY_PATH\"") ;;
906 esac
907
908 dnl Mingw needs explicit msvcrt for linking libwine
909 AC_SUBST(CRTLIBS,"")
910 case $host_os in
911   mingw32*)
912     CRTLIBS="-lmsvcrt" ;;
913 esac
914
915 dnl **** Get the soname for libraries that we load dynamically ****
916
917 if test "$LIBEXT" = "so"
918 then
919   WINE_GET_SONAME(X11,XCreateWindow,[$X_LIBS $X_EXTRA_LIBS])
920   WINE_GET_SONAME(Xext,XextCreateExtension,[$X_LIBS -lX11 $X_EXTRA_LIBS])
921   WINE_GET_SONAME(Xrender,XRenderQueryExtension,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])
922   WINE_GET_SONAME(freetype,FT_Init_FreeType,[$X_LIBS])
923   WINE_GET_SONAME(GL,glXQueryExtension,[$X_LIBS $X_EXTRA_LIBS])
924   WINE_GET_SONAME(cups,cupsGetDefault)
925   WINE_GET_SONAME(jack,jack_client_new)
926   WINE_GET_SONAME(ssl,SSL_library_init)
927   WINE_GET_SONAME(crypto,BIO_new_socket)
928   WINE_GET_SONAME(ncurses,waddch)
929   WINE_GET_SONAME(curses,waddch)
930 fi
931
932
933 dnl **** Check for functions ****
934
935 AC_FUNC_ALLOCA()
936 AC_CHECK_FUNCS(\
937         _lwp_create \
938         _lwp_self \
939         _pclose \
940         _popen \
941         _snprintf \
942         _spawnvp \
943         _stricmp \
944         _strnicmp \
945         _vsnprintf \
946         chsize \
947         clone \
948         finite \
949         fpclass \
950         ftruncate \
951         ftruncate64 \
952         getnetbyaddr \
953         getnetbyname \
954         getopt_long \
955         getpagesize \
956         getprotobyname \
957         getprotobynumber \
958         getpwuid \
959         getservbyport \
960         gettimeofday \
961         inet_network \
962         lseek64 \
963         lstat \
964         memmove \
965         mmap \
966         pclose \
967         popen \
968         pread \
969         pwrite \
970         rfork \
971         select \
972         sendmsg \
973         settimeofday \
974         sigaltstack \
975         snprintf \
976         spawnvp \
977         statfs \
978         strcasecmp \
979         strerror \
980         strncasecmp \
981         tcgetattr \
982         timegm \
983         usleep \
984         vfscanf \
985         vsnprintf \
986         wait4 \
987         waitpid \
988 )
989
990 dnl **** Check for header files ****
991
992 AC_CHECK_HEADERS(\
993         arpa/inet.h \
994         arpa/nameser.h \
995         cups/cups.h \
996         direct.h \
997         elf.h \
998         float.h \
999         getopt.h \
1000         ieeefp.h \
1001         io.h \
1002         jack/jack.h \
1003         libio.h \
1004         libutil.h \
1005         link.h \
1006         linux/cdrom.h \
1007         linux/hdreg.h \
1008         linux/input.h \
1009         linux/joystick.h \
1010         linux/major.h \
1011         linux/param.h \
1012         linux/serial.h \
1013         linux/ucdrom.h \
1014         machine/cpu.h \
1015         netdb.h \
1016         netinet/in.h \
1017         netinet/in_systm.h \
1018         netinet/tcp.h \
1019         netinet/tcp_fsm.h \
1020         openssl/ssl.h \
1021         process.h \
1022         pthread.h \
1023         pty.h \
1024         pwd.h \
1025         regex.h \
1026         sched.h \
1027         scsi/sg.h \
1028         scsi/scsi.h \
1029         scsi/scsi_ioctl.h \
1030         socket.h \
1031         stdint.h \
1032         strings.h \
1033         sys/cdio.h \
1034         sys/errno.h \
1035         sys/file.h \
1036         sys/filio.h \
1037         sys/inttypes.h \
1038         sys/ioctl.h \
1039         sys/ipc.h \
1040         sys/link.h \
1041         sys/lwp.h \
1042         sys/mman.h \
1043         sys/modem.h \
1044         sys/msg.h \
1045         sys/param.h \
1046         sys/poll.h \
1047         sys/ptrace.h \
1048         sys/reg.h \
1049         sys/scsiio.h \
1050         sys/shm.h \
1051         sys/signal.h \
1052         sys/socket.h \
1053         sys/sockio.h \
1054         sys/statfs.h \
1055         sys/strtio.h \
1056         sys/syscall.h \
1057         sys/sysctl.h \
1058         sys/time.h \
1059         sys/times.h \
1060         sys/uio.h \
1061         sys/un.h \
1062         sys/v86.h \
1063         sys/v86intr.h \
1064         sys/vfs.h \
1065         sys/vm86.h \
1066         sys/wait.h \
1067         syscall.h \
1068         termios.h \
1069         unistd.h \
1070         utime.h \
1071         valgrind/memcheck.h
1072 )
1073 AC_HEADER_STAT()
1074
1075 dnl **** Checks for headers that depend on other ones ****
1076
1077 AC_CHECK_HEADERS(sys/mount.h sys/user.h,,,
1078     [#include <sys/types.h>
1079      #if HAVE_SYS_PARAM_H
1080      # include <sys/param.h>
1081      #endif])
1082
1083 AC_CHECK_HEADERS([net/if.h net/if_arp.h net/if_dl.h net/if_types.h net/route.h],,,
1084     [#include <sys/types.h>
1085      #if HAVE_SYS_SOCKET_H
1086      # include <sys/socket.h>
1087      #endif])
1088
1089 AC_CHECK_HEADERS([resolv.h],,,
1090     [#include <sys/types.h>
1091      #if HAVE_SYS_SOCKET_H
1092      # include <sys/socket.h>
1093      #endif
1094      #if HAVE_NETINET_IN_H
1095      # include <netinet/in.h>
1096      #endif])
1097
1098 AC_CHECK_HEADERS(netinet/ip.h,,,
1099     [#include <sys/types.h>
1100      #if HAVE_SYS_SOCKET_H
1101      # include <sys/socket.h>
1102      #endif
1103      #if HAVE_NETINET_IN_SYSTM_H
1104      # include <netinet/in_systm.h>
1105      #endif])
1106
1107 AC_CHECK_HEADERS(ucontext.h,,,[#include <signal.h>])
1108
1109 dnl **** Check for IPX headers (currently Linux only) ****
1110
1111 AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
1112  AC_TRY_COMPILE(
1113    [#include <sys/types.h>
1114     #ifdef HAVE_SYS_SOCKET_H
1115     # include <sys/socket.h>
1116     #endif
1117     #include <netipx/ipx.h>],
1118    [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
1119    [ac_cv_c_ipx_gnu="yes"],
1120    [ac_cv_c_ipx_gnu="no"])
1121  )
1122 if test "$ac_cv_c_ipx_gnu" = "yes"
1123 then
1124     AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
1125 fi
1126
1127 if test "$ac_cv_c_ipx_gnu" = "no"
1128 then
1129  AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
1130   AC_TRY_COMPILE(
1131     [#include <sys/types.h>
1132      #ifdef HAVE_SYS_SOCKET_H
1133      # include <sys/socket.h>
1134      #endif
1135      #include <asm/types.h>
1136      #include <linux/ipx.h>],
1137     [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
1138     [ac_cv_c_ipx_linux="yes"],
1139     [ac_cv_c_ipx_linux="no"])
1140   )
1141   if test "$ac_cv_c_ipx_linux" = "yes"
1142   then
1143       AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
1144   fi
1145 fi
1146
1147 dnl **** Check for types ****
1148
1149 AC_C_CONST
1150 AC_C_INLINE
1151 AC_CHECK_TYPES([mode_t, off_t, pid_t, size_t, ssize_t])
1152 AC_CHECK_SIZEOF(long long,0)
1153
1154 AC_CACHE_CHECK([whether linux/input.h is for real],
1155         wine_cv_linux_input_h,
1156         AC_TRY_COMPILE([
1157             #include <linux/input.h>
1158         ] , [
1159             int foo = EVIOCGBIT(EV_ABS,42);
1160             int bar = BTN_PINKIE;
1161             int fortytwo = 42;
1162         ],
1163         wine_cv_linux_input_h=yes,
1164         wine_cv_linux_input_h=no,
1165         no
1166         )
1167     )
1168     if test "$wine_cv_linux_input_h" = "yes"
1169     then
1170         AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
1171                   [Define if we have linux/input.h AND it contains the INPUT event API])
1172     fi
1173
1174
1175 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
1176         wine_cv_linux_gethostbyname_r_6,
1177         AC_TRY_COMPILE([
1178 #include <netdb.h>
1179         ], [
1180     char *name=NULL;
1181     struct hostent he;
1182     struct hostent *result;
1183     char *buf=NULL;
1184     int bufsize=0;
1185     int res,errnr;
1186     char *addr=NULL;
1187     int addrlen=0;
1188     int addrtype=0;
1189     res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
1190     res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
1191     ],
1192         wine_cv_linux_gethostbyname_r_6=yes,
1193         wine_cv_linux_gethostbyname_r_6=no
1194         )
1195    )
1196    if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
1197    then
1198       AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
1199                 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
1200    fi
1201
1202 if test "$ac_cv_header_linux_joystick_h" = "yes"
1203 then
1204    AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
1205         wine_cv_linux_joystick_22_api,
1206         AC_TRY_COMPILE([
1207         #include <sys/ioctl.h>
1208         #include <linux/joystick.h>
1209
1210         struct js_event blub;
1211         #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1212         #error "no 2.2 header"
1213         #endif
1214         ],/*empty*/,
1215         wine_cv_linux_joystick_22_api=yes,
1216         wine_cv_linux_joystick_22_api=no,
1217         wine_cv_linux_joystick_22_api=no
1218         )
1219    )
1220    if test "$wine_cv_linux_joystick_22_api" = "yes"
1221    then
1222       AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1223                 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1224    fi
1225 fi
1226
1227 dnl **** statfs checks ****
1228
1229 if test "$ac_cv_header_sys_vfs_h" = "yes"
1230 then
1231     AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1232                     wine_cv_sys_vfs_has_statfs,
1233         AC_TRY_COMPILE([
1234         #include <sys/types.h>
1235         #ifdef HAVE_SYS_PARAM_H
1236         # include <sys/param.h>
1237         #endif
1238         #include <sys/vfs.h>
1239         ],[
1240                 struct statfs stfs;
1241
1242                 memset(&stfs,0,sizeof(stfs));
1243         ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1244         )
1245     )
1246     if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1247     then
1248       AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1249                 [Define if the struct statfs is defined by <sys/vfs.h>])
1250     fi
1251 fi
1252
1253 if test "$ac_cv_header_sys_statfs_h" = "yes"
1254 then
1255     AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1256                     wine_cv_sys_statfs_has_statfs,
1257         AC_TRY_COMPILE([
1258         #include <sys/types.h>
1259         #ifdef HAVE_SYS_PARAM_H
1260         # include <sys/param.h>
1261         #endif
1262         #include <sys/statfs.h>
1263         ],[
1264                 struct statfs stfs;
1265         ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1266         )
1267     )
1268     if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1269     then
1270       AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1271                 [Define if the struct statfs is defined by <sys/statfs.h>])
1272     fi
1273 fi
1274
1275 if test "$ac_cv_header_sys_mount_h" = "yes"
1276 then
1277     AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1278                     wine_cv_sys_mount_has_statfs,
1279         AC_TRY_COMPILE([
1280         #include <sys/types.h>
1281         #ifdef HAVE_SYS_PARAM_H
1282         # include <sys/param.h>
1283         #endif
1284         #include <sys/mount.h>
1285         ],[
1286                 struct statfs stfs;
1287         ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1288         )
1289     )
1290     if test "$wine_cv_sys_mount_has_statfs" = "yes"
1291     then
1292       AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1293                 [Define if the struct statfs is defined by <sys/mount.h>])
1294     fi
1295 fi
1296
1297 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1298
1299 dnl Check for statfs members
1300 AC_CHECK_MEMBERS([struct statfs.f_bfree, struct statfs.f_bavail],,,
1301 [#include <sys/types.h>
1302 #ifdef HAVE_SYS_PARAM_H
1303 # include <sys/param.h>
1304 #endif
1305 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1306 # include <sys/mount.h>
1307 #else
1308 # ifdef STATFS_DEFINED_BY_SYS_VFS
1309 #  include <sys/vfs.h>
1310 # else
1311 #  ifdef STATFS_DEFINED_BY_SYS_STATFS
1312 #   include <sys/statfs.h>
1313 #  endif
1314 # endif
1315 #endif])
1316
1317 dnl Check for socket structure members
1318 AC_CHECK_MEMBERS([struct msghdr.msg_accrights, struct sockaddr.sa_len, struct sockaddr_un.sun_len],,,
1319 [#include <sys/types.h>
1320 #ifdef HAVE_SYS_SOCKET_H
1321 # include <sys/socket.h>
1322 #endif
1323 #ifdef HAVE_SYS_UN_H
1324 # include <sys/un.h>
1325 #endif])
1326
1327 dnl Check for siginfo_t members
1328 AC_CHECK_MEMBERS([siginfo_t.si_fd],,,[#include <signal.h>])
1329
1330 dnl Check for struct option
1331 AC_CHECK_MEMBERS([struct option.name],,,
1332 [#ifdef HAVE_GETOPT_H
1333 #include <getopt.h>
1334 #endif])
1335
1336 dnl Check for stat.st_blocks
1337 AC_CHECK_MEMBERS([struct stat.st_blocks])
1338
1339 dnl *** check for the need to define platform-specific symbols
1340
1341 case $host_cpu in
1342   *i[[3456789]]86*) WINE_CHECK_DEFINE([__i386__]) ;;
1343   *alpha*)          WINE_CHECK_DEFINE([__ALPHA__]) ;;
1344   *sparc*)          WINE_CHECK_DEFINE([__sparc__]) ;;
1345   *powerpc*)        WINE_CHECK_DEFINE([__powerpc__]) ;;
1346 esac
1347
1348 case $host_vendor in
1349   *sun*) WINE_CHECK_DEFINE([__sun__]) ;;
1350 esac
1351
1352 dnl **** Generate output files ****
1353
1354 AH_TOP([#define __WINE_CONFIG_H])
1355
1356 WINE_CONFIG_EXTRA_DIR(controls)
1357 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1358 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1359 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1360 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1361 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1362 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1363 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1364 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1365 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1366 WINE_CONFIG_EXTRA_DIR(dlls/gdi/enhmfdrv)
1367 WINE_CONFIG_EXTRA_DIR(dlls/gdi/mfdrv)
1368 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1369 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1370 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1371 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1372 WINE_CONFIG_EXTRA_DIR(files)
1373 WINE_CONFIG_EXTRA_DIR(graphics)
1374 WINE_CONFIG_EXTRA_DIR(graphics/x11drv)
1375 WINE_CONFIG_EXTRA_DIR(include/wine)
1376 WINE_CONFIG_EXTRA_DIR(loader)
1377 WINE_CONFIG_EXTRA_DIR(memory)
1378 WINE_CONFIG_EXTRA_DIR(misc)
1379 WINE_CONFIG_EXTRA_DIR(msdos)
1380 WINE_CONFIG_EXTRA_DIR(objects)
1381 WINE_CONFIG_EXTRA_DIR(programs/regapi/tests)
1382 WINE_CONFIG_EXTRA_DIR(programs/regedit/tests)
1383 WINE_CONFIG_EXTRA_DIR(scheduler)
1384 WINE_CONFIG_EXTRA_DIR(windows)
1385
1386 MAKE_RULES=Make.rules
1387 AC_SUBST_FILE(MAKE_RULES)
1388
1389 MAKE_DLL_RULES=dlls/Makedll.rules
1390 AC_SUBST_FILE(MAKE_DLL_RULES)
1391
1392 MAKE_TEST_RULES=dlls/Maketest.rules
1393 AC_SUBST_FILE(MAKE_TEST_RULES)
1394
1395 MAKE_LIB_RULES=libs/Makelib.rules
1396 AC_SUBST_FILE(MAKE_LIB_RULES)
1397
1398 MAKE_PROG_RULES=programs/Makeprog.rules
1399 AC_SUBST_FILE(MAKE_PROG_RULES)
1400
1401 AC_CONFIG_FILES([
1402 Make.rules
1403 dlls/Makedll.rules
1404 dlls/Maketest.rules
1405 libs/Makelib.rules
1406 programs/Makeprog.rules
1407 Makefile
1408 dlls/Makefile
1409 dlls/advapi32/Makefile
1410 dlls/advapi32/tests/Makefile
1411 dlls/avicap32/Makefile
1412 dlls/avifil32/Makefile
1413 dlls/cabinet/Makefile
1414 dlls/comcat/Makefile
1415 dlls/comctl32/Makefile
1416 dlls/comctl32/tests/Makefile
1417 dlls/commdlg/Makefile
1418 dlls/crtdll/Makefile
1419 dlls/crypt32/Makefile
1420 dlls/ctl3d/Makefile
1421 dlls/d3d8/Makefile
1422 dlls/d3d9/Makefile
1423 dlls/d3dim/Makefile
1424 dlls/d3dx8/Makefile
1425 dlls/dciman32/Makefile
1426 dlls/ddraw/Makefile
1427 dlls/devenum/Makefile
1428 dlls/dinput/Makefile
1429 dlls/dinput8/Makefile
1430 dlls/dmband/Makefile
1431 dlls/dmcompos/Makefile
1432 dlls/dmime/Makefile
1433 dlls/dmloader/Makefile
1434 dlls/dmscript/Makefile
1435 dlls/dmstyle/Makefile
1436 dlls/dmsynth/Makefile
1437 dlls/dmusic/Makefile
1438 dlls/dmusic32/Makefile
1439 dlls/dplay/Makefile
1440 dlls/dplayx/Makefile
1441 dlls/dpnhpast/Makefile
1442 dlls/dsound/Makefile
1443 dlls/dsound/tests/Makefile
1444 dlls/gdi/Makefile
1445 dlls/gdi/tests/Makefile
1446 dlls/glu32/Makefile
1447 dlls/icmp/Makefile
1448 dlls/imagehlp/Makefile
1449 dlls/imm32/Makefile
1450 dlls/iphlpapi/Makefile
1451 dlls/kernel/Makefile
1452 dlls/kernel/tests/Makefile
1453 dlls/lzexpand/Makefile
1454 dlls/mapi32/Makefile
1455 dlls/mpr/Makefile
1456 dlls/msacm/Makefile
1457 dlls/msacm/imaadp32/Makefile
1458 dlls/msacm/msadp32/Makefile
1459 dlls/msacm/msg711/Makefile
1460 dlls/msacm/winemp3/Makefile
1461 dlls/msdmo/Makefile
1462 dlls/mshtml/Makefile
1463 dlls/msi/Makefile
1464 dlls/msimg32/Makefile
1465 dlls/msisys/Makefile
1466 dlls/msnet32/Makefile
1467 dlls/msvcrt/Makefile
1468 dlls/msvcrt/tests/Makefile
1469 dlls/msvcrt20/Makefile
1470 dlls/msvcrtd/Makefile
1471 dlls/msvideo/Makefile
1472 dlls/msvideo/msrle32/Makefile
1473 dlls/mswsock/Makefile
1474 dlls/netapi32/Makefile
1475 dlls/netapi32/tests/Makefile
1476 dlls/ntdll/Makefile
1477 dlls/ntdll/tests/Makefile
1478 dlls/odbc32/Makefile
1479 dlls/ole32/Makefile
1480 dlls/oleacc/Makefile
1481 dlls/oleaut32/Makefile
1482 dlls/oleaut32/tests/Makefile
1483 dlls/olecli/Makefile
1484 dlls/oledlg/Makefile
1485 dlls/olepro32/Makefile
1486 dlls/olesvr/Makefile
1487 dlls/opengl32/Makefile
1488 dlls/psapi/Makefile
1489 dlls/qcap/Makefile
1490 dlls/quartz/Makefile
1491 dlls/rasapi32/Makefile
1492 dlls/richedit/Makefile
1493 dlls/rpcrt4/Makefile
1494 dlls/rpcrt4/tests/Makefile
1495 dlls/serialui/Makefile
1496 dlls/setupapi/Makefile
1497 dlls/shdocvw/Makefile
1498 dlls/shell32/Makefile
1499 dlls/shell32/tests/Makefile
1500 dlls/shfolder/Makefile
1501 dlls/shlwapi/Makefile
1502 dlls/shlwapi/tests/Makefile
1503 dlls/snmpapi/Makefile
1504 dlls/sti/Makefile
1505 dlls/tapi32/Makefile
1506 dlls/ttydrv/Makefile
1507 dlls/twain/Makefile
1508 dlls/url/Makefile
1509 dlls/urlmon/Makefile
1510 dlls/urlmon/tests/Makefile
1511 dlls/user/Makefile
1512 dlls/user/tests/Makefile
1513 dlls/uxtheme/Makefile
1514 dlls/version/Makefile
1515 dlls/win32s/Makefile
1516 dlls/winaspi/Makefile
1517 dlls/winedos/Makefile
1518 dlls/wineps/Makefile
1519 dlls/wininet/Makefile
1520 dlls/wininet/tests/Makefile
1521 dlls/winmm/Makefile
1522 dlls/winmm/joystick/Makefile
1523 dlls/winmm/mcianim/Makefile
1524 dlls/winmm/mciavi/Makefile
1525 dlls/winmm/mcicda/Makefile
1526 dlls/winmm/mciseq/Makefile
1527 dlls/winmm/mciwave/Makefile
1528 dlls/winmm/midimap/Makefile
1529 dlls/winmm/tests/Makefile
1530 dlls/winmm/wavemap/Makefile
1531 dlls/winmm/winealsa/Makefile
1532 dlls/winmm/winearts/Makefile
1533 dlls/winmm/wineaudioio/Makefile
1534 dlls/winmm/winenas/Makefile
1535 dlls/winmm/winejack/Makefile
1536 dlls/winmm/wineoss/Makefile
1537 dlls/winnls/Makefile
1538 dlls/winsock/Makefile
1539 dlls/winsock/tests/Makefile
1540 dlls/winspool/Makefile
1541 dlls/winspool/tests/Makefile
1542 dlls/wintab32/Makefile
1543 dlls/wintrust/Makefile
1544 dlls/wow32/Makefile
1545 dlls/wsock32/Makefile
1546 dlls/x11drv/Makefile
1547 documentation/Makefile
1548 include/Makefile
1549 libs/Makefile
1550 libs/port/Makefile
1551 libs/unicode/Makefile
1552 libs/uuid/Makefile
1553 libs/wine/Makefile
1554 libs/wpp/Makefile
1555 miscemu/Makefile
1556 programs/Makefile
1557 programs/avitools/Makefile
1558 programs/clock/Makefile
1559 programs/cmdlgtst/Makefile
1560 programs/control/Makefile
1561 programs/expand/Makefile
1562 programs/notepad/Makefile
1563 programs/osversioncheck/Makefile
1564 programs/progman/Makefile
1565 programs/regapi/Makefile
1566 programs/regedit/Makefile
1567 programs/regsvr32/Makefile
1568 programs/regtest/Makefile
1569 programs/rpcss/Makefile
1570 programs/rundll32/Makefile
1571 programs/start/Makefile
1572 programs/uninstaller/Makefile
1573 programs/view/Makefile
1574 programs/wcmd/Makefile
1575 programs/wineboot/Makefile
1576 programs/winecfg/Makefile
1577 programs/wineconsole/Makefile
1578 programs/winedbg/Makefile
1579 programs/winefile/Makefile
1580 programs/winemenubuilder/Makefile
1581 programs/winemine/Makefile
1582 programs/winepath/Makefile
1583 programs/winevdm/Makefile
1584 programs/winhelp/Makefile
1585 programs/winver/Makefile
1586 server/Makefile
1587 tools/Makefile
1588 tools/widl/Makefile
1589 tools/winapi/Makefile
1590 tools/winebuild/Makefile
1591 tools/winedump/Makefile
1592 tools/winegcc/Makefile
1593 tools/wmc/Makefile
1594 tools/wrc/Makefile])
1595
1596 AC_OUTPUT
1597
1598 if test "$have_x" = "no"
1599 then
1600   echo
1601   echo "*** Warning: X development files not found. Wine will be built without"
1602   echo "*** X support, which currently does not work, and would probably not be"
1603   echo "*** what you want anyway. You will need to install devel packages of"
1604   echo "*** Xlib/Xfree86 at the very least."
1605 fi
1606
1607 if test "$wine_cv_opengl_version_OK" = "no"
1608 then
1609   echo
1610   echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1611   echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1612 fi
1613
1614 if test "$wine_cv_msg_freetype" = "yes"
1615 then
1616   echo
1617   echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1618   echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1619   echo "*** freetype-devel package (or its equivalent on your distribution) to"
1620   echo "*** enable Wine to use TrueType fonts."
1621 fi
1622
1623 echo
1624 echo "Configure finished.  Do 'make depend && make' to compile Wine."
1625 echo
1626
1627 dnl Local Variables:
1628 dnl comment-start: "dnl "
1629 dnl comment-end: ""
1630 dnl comment-start-skip: "\\bdnl\\b\\s *"
1631 dnl compile-command: "autoconf"
1632 dnl End: