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