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.
5 m4_define(WINE_VERSION,regexp(m4_include(VERSION),[version \([-.0-9A-Za-z]+\)],[\1]))
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)
13 dnl **** Command-line arguments ****
16 LIBEXT=so # library type .so or .a
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]))
24 if test "x$enable_debug" = "xno"
26 AC_DEFINE(NO_DEBUG_MSGS,1,[Define to disable all debug messages.])
28 if test "x$enable_trace" = "xno" -o "x$enable_debug" = "xno"
30 AC_DEFINE(NO_TRACE_MSGS,1,[Define to disable trace messages.])
33 dnl **** Check for some programs ****
43 dnl **** Just additional warning checks, since AC_PROG just sets 'yacc' even
44 dnl **** without one present.
45 AC_CHECK_PROGS(XYACC,$YACC bison yacc,none)
46 if test "$XYACC" = "none"
48 AC_MSG_ERROR([no suitable bison/yacc found. Please install the 'bison' package.])
50 AC_CHECK_PROGS(XLEX,$LEX flex lex,none)
51 if test "$XLEX" = "none"
53 AC_MSG_ERROR([no suitable lex found. Please install the 'flex' package.])
58 AC_CHECK_PROG(C2MAN,c2man,c2man,\$(TOPSRCDIR)/tools/c2man.pl)
59 AC_PATH_PROG(LDCONFIG, ldconfig, true, [/sbin /usr/sbin $PATH])
62 AC_CHECK_PROGS(LINT, lclint lint)
63 if test "$LINT" = "lint"
65 LINTFLAGS="$LINTFLAGS -errchk=%all,no%longptr64 -errhdr=%user -Ncheck=macro -Nlevel=4"
66 dnl LINTFLAGS='-D_SIZE_T "-Dsize_t=unsigned long" -errchk=longptr64'
72 *cygwin*) LDCOMBINE="ld -r --enable-stdcall-fixup" ;;
73 *) LDCOMBINE="ld -r" ;;
77 dnl **** Check for some libraries ****
81 dnl Check for -li386 for NetBSD and OpenBSD
82 AC_CHECK_LIB(i386,i386_set_ldt)
83 dnl Check for -lossaudio for NetBSD
84 AC_CHECK_LIB(ossaudio,_oss_ioctl)
85 dnl Check for -lw for Solaris
86 AC_CHECK_FUNCS(iswalnum,,AC_CHECK_LIB(w,iswalnum))
87 dnl Check for -lnsl for Solaris
88 AC_CHECK_FUNCS(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname))
89 dnl Check for -lsocket for Solaris
90 AC_CHECK_FUNCS(connect,,AC_CHECK_LIB(socket,connect))
91 dnl Check for -lresolv for Solaris
92 AC_CHECK_FUNCS(inet_aton,,AC_CHECK_LIB(resolv,inet_aton))
93 dnl Check for -lxpg4 for FreeBSD
94 AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
95 dnl Check for -lmmap for OS/2
96 AC_CHECK_LIB(mmap,mmap)
101 AC_CHECK_FUNCS(openpty,,
102 [AC_CHECK_LIB(util,openpty,
103 [AC_DEFINE(HAVE_OPENPTY)
109 AC_CHECK_HEADERS(dlfcn.h,
110 [AC_CHECK_FUNCS(dlopen,,
111 [AC_CHECK_LIB(dl,dlopen,
112 [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
121 AC_CHECK_HEADERS(jpeglib.h,
122 AC_CHECK_LIB(jpeg,jpeg_start_decompress,
123 AC_DEFINE(HAVE_LIBJPEG,1,[Define if you have libjpeg including devel headers])
132 AC_SUBST(OPENGLFILES)
136 if test "$have_x" = "yes"
139 ac_save_CPPFLAGS="$CPPFLAGS"
140 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
142 dnl *** All of the following tests require X11/Xlib.h
143 AC_CHECK_HEADERS(X11/Xlib.h,
145 dnl *** Check for X keyboard extension
146 AC_CHECK_HEADERS(X11/XKBlib.h,
147 [ dnl *** If X11/XKBlib.h exists...
148 AC_CHECK_LIB(X11, XkbQueryExtension,
149 AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
150 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
152 AC_MSG_WARN([[Xkb extension not found, Wine will be built without it]])
155 dnl *** Check for X Shm extension
156 AC_CHECK_HEADERS(X11/extensions/XShm.h,
157 [ dnl *** If X11/extensions/XShm.h exists...
158 AC_CHECK_LIB(Xext, XShmQueryExtension,
159 AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
160 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
162 AC_MSG_WARN([[XShm extension not found, Wine will be built without it]]),
163 [#include <X11/Xlib.h>])
165 dnl *** Check for X shape extension
166 AC_CHECK_HEADERS(X11/extensions/shape.h,
167 [ dnl *** If X11/extensions/shape.h exists...
168 AC_CHECK_LIB(Xext,XShapeQueryExtension,
169 AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
170 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
172 AC_MSG_WARN([[XShape extension not found, Wine will be built without it]]),
173 [#include <X11/Xlib.h>])
175 dnl *** Check for XFree86 DGA / DGA 2.0 extension
176 AC_CHECK_HEADERS(X11/extensions/xf86dga.h,
177 [ dnl *** If X11/extensions/xf86dga.h exists, check
178 dnl *** for XDGAQueryExtension()...
179 AC_CHECK_LIB(Xxf86dga, XDGAQueryExtension,
180 [ dnl *** If found...
181 AC_DEFINE(HAVE_LIBXXF86DGA2, 1,
182 [Define if you have the Xxf86dga library version 2])
183 X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
185 [ dnl *** If not found, look for XF86DGAQueryExtension()
186 dnl *** instead (DGA 2.0 not found)...
187 AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
188 [ AC_DEFINE(HAVE_LIBXXF86DGA, 1,
189 [Define if you have the Xxf86dga library version 1])
190 X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
192 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
195 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
198 AC_MSG_WARN([[DGA extension not found, Wine will be built without it]]),
199 [#include <X11/Xlib.h>])
201 dnl *** Check for XFree86 VMODE extension
202 AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,
203 [ dnl *** If X11/extensions/xf86vmode.h exists...
204 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension,
205 [ AC_DEFINE(HAVE_LIBXXF86VM, 1, [Define if you have the Xxf86vm library])
206 X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm"
208 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
211 AC_MSG_WARN([[XFree86 VMODE extension not found, Wine will be built without it]]),
212 [#include <X11/Xlib.h>])
214 dnl *** Check for XVideo extension supporting XvImages
215 AC_CHECK_HEADERS(X11/extensions/Xvlib.h,
216 [ dnl *** If X11/extensions/Xvlib.h exists...
217 AC_CHECK_LIB(Xv, XvShmCreateImage,
218 [ AC_DEFINE(HAVE_XVIDEO, 1, [Define if the X libraries support XVideo])
219 X_PRE_LIBS="$X_PRE_LIBS -lXv"
221 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
224 AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]]),
225 [#include <X11/Xlib.h>])
227 dnl *** Check for XRender include file
228 AC_CHECK_HEADERS(X11/extensions/Xrender.h,,,[#include <X11/Xlib.h>])
230 ) dnl *** End of X11/Xlib.h check
232 dnl Check for the presence of OpenGL
233 if test "x$enable_opengl" != "xno"
235 if test -f /usr/X11R6/lib/libGL.a -a ! -f /usr/X11R6/lib/libGL.so
237 AC_MSG_ERROR([/usr/X11R6/lib/libGL.a is present on your system.
238 This prevents linking to OpenGL. Delete the file and restart configure.])
241 AC_CHECK_HEADERS(GL/gl.h GL/glx.h)
242 if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
244 AC_CHECK_HEADERS(GL/glext.h,,,[#include <GL/glx.h>])
245 dnl Check for some problems due to old Mesa versions
246 AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_version_OK,
248 [#include <GL/gl.h>],
249 [GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
250 [wine_cv_opengl_version_OK="yes"],
251 [wine_cv_opengl_version_OK="no"]
255 dnl Check for the thread-safety of the OpenGL library
256 AC_CACHE_CHECK([for thread-safe OpenGL version],
257 wine_cv_opengl_version_threadsafe,
260 AC_TRY_LINK([],[pthread_getspecific();],
261 [wine_cv_opengl_version_threadsafe="yes"],
262 [wine_cv_opengl_version_threadsafe="no"])
266 if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o "x$enable_opengl" = "xyes" \)
268 dnl Check for the presence of the library
269 AC_CHECK_LIB(GL,glXCreateContext,
270 X_PRE_LIBS="$X_PRE_LIBS -lGL"
272 $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
274 if test "$ac_cv_lib_GL_glXCreateContext" = "yes"
276 OPENGLFILES='$(OPENGLFILES)'
277 AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])
279 AC_CHECK_LIB(GL,glXGetProcAddressARB,
280 AC_DEFINE(HAVE_GLX_GETPROCADDRESS, 1,
281 [Define if the OpenGL library supports the glXGetProcAddressARB call]),,
282 $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
284 if test "$ac_cv_lib_GL_glXGetProcAddressARB" = "yes"
286 AC_CACHE_CHECK([for OpenGL extension functions prototypes], wine_cv_extension_prototypes,
287 [AC_TRY_COMPILE([#include <GL/gl.h>
288 #ifdef HAVE_GL_GLEXT_H
289 # include <GL/glext.h>
292 [PFNGLCOLORTABLEEXTPROC test_proc;],
293 [wine_cv_extension_prototypes="yes"],
294 [wine_cv_extension_prototypes="no"]
297 if test "$wine_cv_extension_prototypes" = "yes"
299 AC_DEFINE(HAVE_GLEXT_PROTOTYPES, 1,
300 [Define if the OpenGL headers define extension typedefs])
305 dnl Check for GLU32 library.
306 AC_CHECK_LIB(GLU,gluLookAt,
307 [X_PRE_LIBS="$X_PRE_LIBS -lGLU"
308 GLU32FILES='$(GLU32FILES)']
310 $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
316 CPPFLAGS="$ac_save_CPPFLAGS"
324 dnl **** Check which curses lib to use ***
326 if test "x$with_curses" != "xno"
328 AC_CHECK_HEADERS(ncurses.h,
329 [AC_CHECK_LIB(ncurses,waddch,
330 [AC_DEFINE(HAVE_LIBNCURSES, 1, [Define if you have the ncurses library (-lncurses)])
331 CURSESLIBS="-lncurses"],
332 [AC_CHECK_HEADERS(curses.h,
333 [AC_CHECK_LIB(curses,waddch,
334 [AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have the curses library (-lcurses)])
335 CURSESLIBS="-lcurses"])])])])
337 LIBS="$CURSESLIBS $LIBS"
338 AC_CHECK_FUNCS(getbkgd resizeterm)
344 dnl **** Check for CUPS ****
345 wine_cv_warn_cups_h=no
346 AC_CHECK_LIB(cups,cupsGetPPD,
347 [AC_CHECK_HEADER(cups/cups.h,
348 [AC_DEFINE(HAVE_CUPS, 1, [Define if we have CUPS])
350 wine_cv_warn_cups_h=yes)]
354 dnl **** Check for SANE ****
355 AC_CHECK_PROG(sane_devel,sane-config,sane-config,no)
356 if test "$sane_devel" = "no"
361 SANELIBS="`$sane_devel --libs`"
362 SANEINCL="`$sane_devel --cflags`"
363 ac_save_CPPFLAGS="$CPPFLAGS"
365 CPPFLAGS="$CPPFLAGS $SANEINCL"
366 LIBS="$LIBS $SANELIBS"
367 AC_CHECK_HEADER(sane/sane.h,
368 [AC_CHECK_LIB(sane,sane_open,
369 [AC_DEFINE(HAVE_SANE, 1, [Define if we have SANE development environment])],
375 CPPFLAGS="$ac_save_CPPFLAGS"
380 dnl **** Check for FreeType 2 ****
381 AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
382 if test "$ft_lib" = "no"
385 wine_cv_msg_freetype=no
387 AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
388 if test "$ft_devel" = "no"
390 AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
391 if test "$ft_devel2" = "freetype2-config"
396 if test "$ft_devel" = "no"
399 wine_cv_msg_freetype=yes
401 FREETYPEINCL=`$ft_devel --cflags`
402 ac_save_CPPFLAGS="$CPPFLAGS"
403 CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
404 AC_CHECK_HEADERS(freetype/freetype.h \
406 freetype/tttables.h \
408 freetype/ftsnames.h \
409 freetype/ttnameid.h \
411 freetype/internal/sfnt.h)
412 AC_TRY_CPP([#include <ft2build.h>
413 #include <freetype/fttrigon.h>],
414 [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
415 [Define if you have the <freetype/fttrigon.h> header file.])
416 wine_cv_fttrigon=yes],
418 CPPFLAGS="$ac_save_CPPFLAGS"
419 dnl Check that we have at least freetype/freetype.h
420 if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
422 AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
423 wine_cv_msg_freetype=no
426 wine_cv_msg_freetype=yes
430 AC_SUBST(FREETYPEINCL)
432 dnl **** Check for parport (currently Linux only) ****
433 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
435 [#include <linux/ppdev.h>],
436 [ioctl (1,PPCLAIM,0)],
437 [ac_cv_c_ppdev="yes"],
438 [ac_cv_c_ppdev="no"])
440 if test "$ac_cv_c_ppdev" = "yes"
442 AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
445 dnl **** Check for IPX (currently Linux only) ****
446 AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
448 [#include <sys/socket.h>
449 #include <netipx/ipx.h>],
450 [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
451 [ac_cv_c_ipx_gnu="yes"],
452 [ac_cv_c_ipx_gnu="no"])
454 if test "$ac_cv_c_ipx_gnu" = "yes"
456 AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
459 if test "$ac_cv_c_ipx_gnu" = "no"
461 AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
463 [#include <sys/socket.h>
464 #include <asm/types.h>
465 #include <linux/ipx.h>],
466 [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
467 [ac_cv_c_ipx_linux="yes"],
468 [ac_cv_c_ipx_linux="no"])
470 if test "$ac_cv_c_ipx_linux" = "yes"
472 AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
476 dnl **** Check for Open Sound System ****
477 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
479 AC_CACHE_CHECK([for Open Sound System],
480 ac_cv_c_opensoundsystem,
482 #if defined(HAVE_SYS_SOUNDCARD_H)
483 #include <sys/soundcard.h>
484 #elif defined(HAVE_MACHINE_SOUNDCARD_H)
485 #include <machine/soundcard.h>
486 #elif defined(HAVE_SOUNDCARD_H)
487 #include <soundcard.h>
491 /* check for one of the Open Sound System specific SNDCTL_ defines */
492 #if !defined(SNDCTL_DSP_STEREO)
493 #error No open sound system
495 ],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))
497 if test "$ac_cv_c_opensoundsystem" = "yes"
499 AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
502 AC_CACHE_CHECK([for Open Sound System/MIDI interface],
503 ac_cv_c_opensoundsystem_midi,
505 #if defined(HAVE_SYS_SOUNDCARD_H)
506 #include <sys/soundcard.h>
507 #elif defined(HAVE_MACHINE_SOUNDCARD_H)
508 #include <machine/soundcard.h>
509 #elif defined(HAVE_SOUNDCARD_H)
510 #include <soundcard.h>
514 /* check for one of the Open Sound System specific SNDCTL_SEQ defines */
515 #if !defined(SNDCTL_SEQ_SYNC)
516 #error No open sound system MIDI interface
518 ],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))
520 if test "$ac_cv_c_opensoundsystem_midi" = "yes"
522 AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
525 dnl **** Check for aRts Sound Server ****
526 AC_PATH_PROG(ARTSCCONFIG, artsc-config)
527 AC_CACHE_CHECK([for aRts Sound server],
529 if test x$ARTSCCONFIG = x -o x$ARTSCCONFIG = x'"$ARTSCCONFIG"';
531 ac_cv_c_artsserver=no
533 ARTSC_CFLAGS=`$ARTSCCONFIG --cflags`
534 ARTSC_LIBS=`$ARTSCCONFIG --libs`
535 ac_cv_c_artsserver=no
536 save_CFLAGS="$CFLAGS"
537 CFLAGS="$CFLAGS $ARTSC_CFLAGS"
541 arts_stream_t stream;
543 ac_cv_c_artsserver=yes
545 CFLAGS="$save_CFLAGS"
548 if test "$ac_cv_c_artsserver" = "yes"
550 AC_SUBST(ARTSLIBS, $ARTSC_LIBS)
551 AC_SUBST(ARTSINCL, $ARTSC_CFLAGS)
553 AC_DEFINE(HAVE_ARTS, 1, [Define if you have ARTS sound server])
556 dnl **** Check for broken glibc mmap64 ****
558 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
560 #define _FILE_OFFSET_BITS 64
564 #include <sys/mman.h>
567 int main(int argc,char **argv) {
568 int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
569 if (fd == -1) exit(1);
571 unlink("conftest.map");
575 if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
581 fprintf(stderr,"success!\n");
586 ac_cv_mmap64_works="yes",
587 ac_cv_mmap64_works="no",
588 ac_cv_mmap64_works="no") )
590 if test "$ac_cv_mmap64_works" = "yes"
592 AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
595 dnl **** Check for gcc strength-reduce bug ****
597 if test "x${GCC}" = "xyes"
599 CFLAGS="$CFLAGS -Wall"
600 AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
602 int L[[4]] = {0,1,2,3};
604 static int Array[[3]];
607 for(i=0; i<B; i++) Array[[i]] = i - 3;
608 for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
611 exit( Array[[1]] != -2 || L[[2]] != 3);
613 ac_cv_c_gcc_strength_bug="no",
614 ac_cv_c_gcc_strength_bug="yes",
615 ac_cv_c_gcc_strength_bug="yes") )
616 if test "$ac_cv_c_gcc_strength_bug" = "yes"
618 CFLAGS="$CFLAGS -fno-strength-reduce"
621 dnl Check for -mpreferred-stack-boundary
622 AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support],
623 ac_cv_c_gcc_stack_boundary,
624 [saved_cflags=$CFLAGS
625 CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
626 AC_TRY_COMPILE(,[return 0],ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")
629 if test "$ac_cv_c_gcc_stack_boundary" = "yes"
631 CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
635 dnl **** Check if we need to place .type inside a .def directive ****
637 AC_CACHE_CHECK([whether .type must sit inside a .def directive],
640 LIBS="conftest_asm.s $LIBS"
641 cat > conftest_asm.s <<EOF
643 .def _ac_test; .scl 2; .type 32; .endef
647 AC_TRY_LINK(,,ac_cv_c_type_in_def="yes",ac_cv_c_type_in_def="no")
649 if test "$ac_cv_c_type_in_def" = "yes"
651 AC_DEFINE(NEED_TYPE_IN_DEF, 1, [Define if .type asm directive must be inside a .def directive])
654 dnl **** Check for underscore on external symbols ****
656 AC_CACHE_CHECK([whether external symbols need an underscore prefix],
657 ac_cv_c_extern_prefix,
659 LIBS="conftest_asm.s $LIBS"
660 cat > conftest_asm.s <<EOF
665 AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
666 ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
668 if test "$ac_cv_c_extern_prefix" = "yes"
670 AC_DEFINE(NEED_UNDERSCORE_PREFIX, 1,
671 [Define if symbols declared in assembly code need an underscore prefix])
674 dnl **** Check whether stdcall symbols need to be decorated ****
676 AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
677 ac_cv_c_stdcall_decoration,
679 LIBS="conftest_asm.s $LIBS"
680 if test "$ac_cv_c_extern_prefix" = "yes"
682 cat > conftest_asm.s <<EOF
687 cat > conftest_asm.s <<EOF
692 AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
693 [ac_test(); return 0],
694 ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
696 if test "$ac_cv_c_stdcall_decoration" = "yes"
698 AC_DEFINE(NEED_STDCALL_DECORATION, 1,
699 [Define if stdcall symbols need to be decorated])
702 dnl **** Check for .string in assembler ****
704 AC_CACHE_CHECK([whether assembler accepts .string],
707 LIBS="conftest_asm.s $LIBS"
708 cat > conftest_asm.s <<EOF
711 AC_TRY_LINK(,,ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no")
713 if test "$ac_cv_c_asm_string" = "yes"
715 AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
718 dnl **** Check for working dll ****
722 if test "$LIBEXT" = "so"
724 AC_CACHE_CHECK([whether we can build a GNU style ELF dll],
726 [saved_cflags=$CFLAGS
727 CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
728 AC_TRY_LINK(,[return 1],ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")
731 if test "$ac_cv_c_dll_gnuelf" = "yes"
733 LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
734 LDDLLFLAGS="-Wl,-Bsymbolic"
736 AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll,
737 ac_cv_c_dll_unixware,
738 [saved_cflags=$CFLAGS
739 CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
740 AC_TRY_LINK(,[return 1],ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")
743 if test "$ac_cv_c_dll_unixware" = "yes"
745 LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
746 LDDLLFLAGS="-Wl,-B,symbolic"
749 if test "$ac_cv_c_dll_gnuelf" = "no" -a "$ac_cv_c_dll_unixware" = "no"
752 AC_CHECK_PROG(DLLWRAP,dllwrap,dllwrap,false)
753 if test "$DLLWRAP" = "dllwrap"; then
754 dnl FIXME - check whether dllwrap works correctly...
764 if test "$LIBEXT" = "a"; then
766 [could not find a way to build shared libraries.
767 It is currently not possible to build Wine without shared library
768 (.so) support to allow transparent switch between .so and .dll files.
769 If you are using Linux, you will need a newer binutils.]
776 if test "$LIBEXT" = "so"; then
779 LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
780 elif test "$LIBEXT" = "dll"; then
781 #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
783 LDPATH="PATH=\"\$(TOPOBJDIR)/unicode:\$\$PATH\""
793 dnl **** Check for reentrant libc ****
795 dnl For cross-compiling we blindly assume that libc is reentrant. This is
796 dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
798 AC_DEFUN([WINE_CHECK_ERRNO],
800 AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
801 [AC_TRY_RUN([int myerrno = 0;
803 int *$1(){return &myerrno;}
804 main(){connect(0,buf,255); exit(!myerrno);}],
805 wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
806 wine_cv_libc_r_$1=yes )
808 if test "$wine_cv_libc_r_$1" = "yes"
810 wine_cv_libc_reentrant=$1
814 wine_cv_libc_reentrant=no
815 dnl Linux style errno location
816 WINE_CHECK_ERRNO(__errno_location)
817 dnl FreeBSD style errno location
818 WINE_CHECK_ERRNO(__error)
819 dnl Solaris style errno location
820 WINE_CHECK_ERRNO(___errno)
821 dnl UnixWare style errno location
822 WINE_CHECK_ERRNO(__thr_errno)
823 dnl NetBSD style errno location
824 WINE_CHECK_ERRNO(__errno)
826 if test "$wine_cv_libc_reentrant" != "no"
828 AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
829 [Define to the name of the function returning errno for reentrant libc])
832 dnl **** Check for reentrant X libraries ****
834 dnl This may fail to determine whether X libraries are reentrant if
835 dnl AC_PATH_XTRA does not set x_libraries.
837 if test "$have_x" = "yes"
839 AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
841 for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
842 if test -r $dir/libX11.so; then
843 libX11_check="-D $dir/libX11.so"
846 if test -r $dir/libX11.a; then
847 libX11_check="$dir/libX11.a"
851 if test "$libX11_check" != "none"; then
852 if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
854 wine_cv_x_reentrant=yes
856 wine_cv_x_reentrant=no
859 wine_cv_x_reentrant=unknown
863 dnl **** Check for functions ****
912 dnl **** Check for header files ****
977 dnl **** Check for types ****
985 AC_CHECK_SIZEOF(long long,0)
987 AC_CACHE_CHECK([whether linux/input.h is for real],
988 wine_cv_linux_input_h,
990 #include <linux/input.h>
992 int foo = EVIOCGBIT(EV_ABS,42);
993 int bar = BTN_PINKIE;
996 wine_cv_linux_input_h=yes,
997 wine_cv_linux_input_h=no,
1001 if test "$wine_cv_linux_input_h" = "yes"
1003 AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
1004 [Define if we have linux/input.h AND it contains the INPUT event API])
1008 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
1009 wine_cv_linux_gethostbyname_r_6,
1015 struct hostent *result;
1022 res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
1023 res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
1025 wine_cv_linux_gethostbyname_r_6=yes,
1026 wine_cv_linux_gethostbyname_r_6=no
1029 if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
1031 AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
1032 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
1035 if test "$ac_cv_header_linux_joystick_h" = "yes"
1037 AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
1038 wine_cv_linux_joystick_22_api,
1040 #include <sys/ioctl.h>
1041 #include <linux/joystick.h>
1043 struct js_event blub;
1044 #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1045 #error "no 2.2 header"
1048 wine_cv_linux_joystick_22_api=yes,
1049 wine_cv_linux_joystick_22_api=no,
1050 wine_cv_linux_joystick_22_api=no
1053 if test "$wine_cv_linux_joystick_22_api" = "yes"
1055 AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1056 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1060 dnl **** statfs checks ****
1062 if test "$ac_cv_header_sys_vfs_h" = "yes"
1064 AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1065 wine_cv_sys_vfs_has_statfs,
1067 #include <sys/types.h>
1068 #ifdef HAVE_SYS_PARAM_H
1069 # include <sys/param.h>
1071 #include <sys/vfs.h>
1075 memset(&stfs,0,sizeof(stfs));
1076 ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1079 if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1081 AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1082 [Define if the struct statfs is defined by <sys/vfs.h>])
1086 if test "$ac_cv_header_sys_statfs_h" = "yes"
1088 AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1089 wine_cv_sys_statfs_has_statfs,
1091 #include <sys/types.h>
1092 #ifdef HAVE_SYS_PARAM_H
1093 # include <sys/param.h>
1095 #include <sys/statfs.h>
1098 ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1101 if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1103 AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1104 [Define if the struct statfs is defined by <sys/statfs.h>])
1108 if test "$ac_cv_header_sys_mount_h" = "yes"
1110 AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1111 wine_cv_sys_mount_has_statfs,
1113 #include <sys/types.h>
1114 #ifdef HAVE_SYS_PARAM_H
1115 # include <sys/param.h>
1117 #include <sys/mount.h>
1120 ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1123 if test "$wine_cv_sys_mount_has_statfs" = "yes"
1125 AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1126 [Define if the struct statfs is defined by <sys/mount.h>])
1130 dnl *** Check for some structure members
1132 dnl Macro to check if a structure contains a specified member
1133 dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
1135 AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
1136 [AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
1137 AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
1138 AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
1141 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1143 WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree,
1144 [#include <sys/types.h>
1145 #ifdef HAVE_SYS_PARAM_H
1146 # include <sys/param.h>
1148 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1149 # include <sys/mount.h>
1151 # ifdef STATFS_DEFINED_BY_SYS_VFS
1152 # include <sys/vfs.h>
1154 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1155 # include <sys/statfs.h>
1159 [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])])
1161 WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail,
1162 [#include <sys/types.h>
1163 #ifdef HAVE_SYS_PARAM_H
1164 # include <sys/param.h>
1166 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1167 # include <sys/mount.h>
1169 # ifdef STATFS_DEFINED_BY_SYS_VFS
1170 # include <sys/vfs.h>
1172 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1173 # include <sys/statfs.h>
1177 [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])])
1179 dnl Check for file descriptor passing with msg_accrights
1180 WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights,
1181 [#include <sys/types.h>
1182 #include <sys/socket.h>],
1183 [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])])
1185 dnl Check for the sa_len member in struct sockaddr
1186 WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len,
1187 [#include <sys/types.h>
1188 #include <sys/socket.h>],
1189 [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])])
1191 dnl Check for the sun_len member in struct sockaddr_un
1192 WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len,
1193 [#include <sys/types.h>
1194 #include <sys/socket.h>
1195 #include <sys/un.h>],
1196 [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])])
1198 dnl *** check for the need to define __i386__
1202 AC_CACHE_CHECK([whether we need to define __i386__],ac_cv_cpp_def_i386,
1203 AC_EGREP_CPP(yes,[#ifndef __i386__
1206 ac_cv_cpp_def_i386="yes", ac_cv_cpp_def_i386="no"))
1209 if test "$ac_cv_cpp_def_i386" = "yes"
1211 CFLAGS="$CFLAGS -D__i386__"
1212 LINTFLAGS="$LINTFLAGS -D__i386__"
1215 dnl **** Generate output files ****
1217 dnl Macro to create non-existent directories from config.status
1218 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
1219 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
1220 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
1222 AH_TOP([#define __WINE_CONFIG_H])
1224 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1225 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1226 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1227 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1228 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1229 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1230 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1231 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1232 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1233 WINE_CONFIG_EXTRA_DIR(dlls/gdi/enhmfdrv)
1234 WINE_CONFIG_EXTRA_DIR(dlls/gdi/mfdrv)
1235 WINE_CONFIG_EXTRA_DIR(dlls/gdi/win16drv)
1236 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1237 WINE_CONFIG_EXTRA_DIR(dlls/kernel/tests)
1238 WINE_CONFIG_EXTRA_DIR(dlls/oleaut32/tests)
1239 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1240 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1241 WINE_CONFIG_EXTRA_DIR(dlls/user/tests)
1242 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1243 WINE_CONFIG_EXTRA_DIR(include/wine)
1244 WINE_CONFIG_EXTRA_DIR(programs/regapi/tests)
1245 WINE_CONFIG_EXTRA_DIR(programs/winetest/tests)
1247 MAKE_RULES=Make.rules
1248 AC_SUBST_FILE(MAKE_RULES)
1250 MAKE_DLL_RULES=dlls/Makedll.rules
1251 AC_SUBST_FILE(MAKE_DLL_RULES)
1253 MAKE_PROG_RULES=programs/Makeprog.rules
1254 AC_SUBST_FILE(MAKE_PROG_RULES)
1259 programs/Makeprog.rules
1264 dlls/advapi32/Makefile
1265 dlls/avicap32/Makefile
1266 dlls/avifil32/Makefile
1267 dlls/comctl32/Makefile
1268 dlls/commdlg/Makefile
1269 dlls/crtdll/Makefile
1270 dlls/crypt32/Makefile
1271 dlls/dciman32/Makefile
1273 dlls/devenum/Makefile
1274 dlls/dinput/Makefile
1276 dlls/dplayx/Makefile
1277 dlls/dsound/Makefile
1281 dlls/imagehlp/Makefile
1283 dlls/kernel/Makefile
1284 dlls/lzexpand/Makefile
1285 dlls/mapi32/Makefile
1288 dlls/msacm/imaadp32/Makefile
1289 dlls/msacm/msg711/Makefile
1291 dlls/msimg32/Makefile
1292 dlls/msisys/Makefile
1293 dlls/msnet32/Makefile
1294 dlls/msrle32/Makefile
1295 dlls/msvcrt/Makefile
1296 dlls/msvcrt20/Makefile
1297 dlls/msvideo/Makefile
1298 dlls/netapi32/Makefile
1300 dlls/odbc32/Makefile
1302 dlls/oleaut32/Makefile
1303 dlls/olecli/Makefile
1304 dlls/oledlg/Makefile
1305 dlls/olepro32/Makefile
1306 dlls/olesvr/Makefile
1307 dlls/opengl32/Makefile
1310 dlls/quartz/Makefile
1311 dlls/rasapi32/Makefile
1312 dlls/richedit/Makefile
1313 dlls/rpcrt4/Makefile
1314 dlls/serialui/Makefile
1315 dlls/setupapi/Makefile
1316 dlls/shdocvw/Makefile
1317 dlls/shell32/Makefile
1318 dlls/shfolder/Makefile
1319 dlls/shlwapi/Makefile
1321 dlls/tapi32/Makefile
1322 dlls/ttydrv/Makefile
1325 dlls/urlmon/Makefile
1327 dlls/version/Makefile
1328 dlls/win32s/Makefile
1329 dlls/winaspi/Makefile
1330 dlls/winedos/Makefile
1331 dlls/wineps/Makefile
1332 dlls/wininet/Makefile
1334 dlls/winmm/joystick/Makefile
1335 dlls/winmm/mcianim/Makefile
1336 dlls/winmm/mciavi/Makefile
1337 dlls/winmm/mcicda/Makefile
1338 dlls/winmm/mciseq/Makefile
1339 dlls/winmm/mciwave/Makefile
1340 dlls/winmm/midimap/Makefile
1341 dlls/winmm/wavemap/Makefile
1342 dlls/winmm/winearts/Makefile
1343 dlls/winmm/wineoss/Makefile
1344 dlls/winnls/Makefile
1345 dlls/winsock/Makefile
1346 dlls/winspool/Makefile
1347 dlls/wintrust/Makefile
1349 dlls/wsock32/Makefile
1350 dlls/x11drv/Makefile
1351 documentation/Makefile
1354 graphics/x11drv/Makefile
1368 programs/avitools/Makefile
1369 programs/clock/Makefile
1370 programs/cmdlgtst/Makefile
1371 programs/control/Makefile
1372 programs/notepad/Makefile
1373 programs/osversioncheck/Makefile
1374 programs/progman/Makefile
1375 programs/regapi/Makefile
1376 programs/regedit/Makefile
1377 programs/regtest/Makefile
1378 programs/uninstaller/Makefile
1379 programs/view/Makefile
1380 programs/wcmd/Makefile
1381 programs/wineconsole/Makefile
1382 programs/winemine/Makefile
1383 programs/winetest/Makefile
1384 programs/winhelp/Makefile
1385 programs/winver/Makefile
1390 tools/winapi/Makefile
1391 tools/winebuild/Makefile
1392 tools/winedump/Makefile
1399 windows/x11drv/Makefile ])
1403 if test "$have_x" = "no"
1406 echo "*** Warning: X development files not found. Wine will be built without"
1407 echo "*** X support, which currently does not work, and would probably not be"
1408 echo "*** what you want anyway. You will need to install devel packages of"
1409 echo "*** Xlib/Xfree86 at the very least."
1412 if test "$ac_cv_lib_ncurses_resizeterm" = "no" -a "$ac_cv_lib_ncurses_waddch" = "yes"
1415 echo "*** Warning: resizeterm not found in ncurses. Wine will be built without"
1416 echo "*** terminal resize support. Consider upgrading ncurses."
1419 if test "$wine_cv_libc_reentrant" = "no"
1422 echo "*** Warning: non-reentrant libc detected. Wine will be built without"
1423 echo "*** threading support. Consider upgrading libc to a more recent"
1424 echo "*** reentrant version of libc."
1427 if test "$have_x" = "yes" -a "$wine_cv_x_reentrant" != "yes"
1430 echo "*** Warning: non-reentrant X11 library detected. Multi-threaded"
1431 echo "*** applications won't work properly. You should upgrade your X11 library."
1434 if test "$wine_cv_opengl_version_OK" = "no"
1437 echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1438 echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1441 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "x"
1444 echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
1445 echo "*** thread-safety. To prevent crashes, OpenGL support has been removed."
1446 echo "*** A fix for glibc 2.1.3 that seems to work is included in this version of Wine,"
1447 echo "*** start configure with '--enable-opengl' to force OpenGL support."
1450 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "xyes"
1453 echo "*** Warning: you explicitly linked in a thread-safe OpenGL version. If you"
1454 echo "*** experience unusual crashes on DirectDraw games, try first to disable OpenGL"
1455 echo "*** support before reporting bugs."
1458 if test "$wine_cv_warn_cups_h" = "yes"
1461 echo "*** Note: You have cups runtime libraries, but no development"
1462 echo "*** libraries. Install the cups-devel package or whichever package"
1463 echo "*** contains cups.h to enable CUPS support in Wine."
1466 if test "$wine_cv_msg_freetype" = "yes"
1469 echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1470 echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1471 echo "*** freetype-devel package (or its equivalent on your distribution) to"
1472 echo "*** enable Wine to use TrueType fonts."
1476 echo "Configure finished. Do 'make depend && make' to compile Wine."
1479 dnl Local Variables:
1480 dnl comment-start: "dnl "
1482 dnl comment-start-skip: "\\bdnl\\b\\s *"
1483 dnl compile-command: "autoconf"