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