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