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