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