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