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