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