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