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]))
22 AC_ARG_WITH(reentrant-x,AC_HELP_STRING([--without-reentrant-x],[compile for use with non-reentrant X libraries]))
25 if test "x$enable_debug" = "xno"
27 AC_DEFINE(NO_DEBUG_MSGS,1,[Define to disable all debug messages.])
29 if test "x$enable_trace" = "xno" -o "x$enable_debug" = "xno"
31 AC_DEFINE(NO_TRACE_MSGS,1,[Define to disable trace messages.])
34 dnl **** Check for some programs ****
44 dnl **** Just additional warning checks, since AC_PROG just sets 'yacc' even
45 dnl **** without one present.
46 AC_CHECK_PROGS(XYACC,$YACC bison yacc,none)
47 if test "$XYACC" = "none"
49 AC_MSG_ERROR([no suitable bison/yacc found. Please install the 'bison' package.])
51 AC_CHECK_PROGS(XLEX,$LEX flex lex,none)
52 if test "$XLEX" = "none"
54 AC_MSG_ERROR([no suitable lex found. Please install the 'flex' package.])
59 AC_CHECK_PROG(C2MAN,c2man,c2man,\$(TOPSRCDIR)/tools/c2man.pl)
60 AC_PATH_PROG(LDCONFIG, ldconfig, true, /sbin:/usr/sbin:$PATH)
63 AC_CHECK_PROGS(LINT, lclint lint)
64 if test "$LINT" = "lint"
66 LINTFLAGS="$LINTFLAGS -errchk=%all,no%longptr64 -errhdr=%user -Ncheck=macro -Nlevel=4"
67 dnl LINTFLAGS='-D_SIZE_T "-Dsize_t=unsigned long" -errchk=longptr64'
73 *cygwin*) LDCOMBINE="ld -r --enable-stdcall-fixup" ;;
74 *) LDCOMBINE="ld -r" ;;
78 dnl **** Check for some libraries ****
82 dnl Check for -li386 for NetBSD and OpenBSD
83 AC_CHECK_LIB(i386,i386_set_ldt)
84 dnl Check for -lossaudio for NetBSD
85 AC_CHECK_LIB(ossaudio,_oss_ioctl)
86 dnl Check for -lw for Solaris
87 AC_CHECK_FUNCS(iswalnum,,AC_CHECK_LIB(w,iswalnum))
88 dnl Check for -lnsl for Solaris
89 AC_CHECK_FUNCS(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname))
90 dnl Check for -lsocket for Solaris
91 AC_CHECK_FUNCS(connect,,AC_CHECK_LIB(socket,connect))
92 dnl Check for -lxpg4 for FreeBSD
93 AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
94 dnl Check for -lmmap for OS/2
95 AC_CHECK_LIB(mmap,mmap)
100 AC_CHECK_FUNCS(openpty,,
101 [AC_CHECK_LIB(util,openpty,
102 [AC_DEFINE(HAVE_OPENPTY)
108 AC_CHECK_HEADERS(dlfcn.h,
109 [AC_CHECK_FUNCS(dlopen,,
110 [AC_CHECK_LIB(dl,dlopen,
111 [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
120 AC_CHECK_HEADERS(jpeglib.h,
121 AC_CHECK_LIB(jpeg,jpeg_start_decompress,
122 AC_DEFINE(HAVE_LIBJPEG,1,[Define if you have libjpeg including devel headers])
131 AC_SUBST(OPENGLFILES)
135 if test "$have_x" = "yes"
138 ac_save_CPPFLAGS="$CPPFLAGS"
139 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
141 dnl *** All of the following tests require X11/Xlib.h
142 AC_CHECK_HEADERS(X11/Xlib.h,
144 dnl *** Check for X keyboard extension
145 AC_CHECK_HEADERS(X11/XKBlib.h,
146 [ dnl *** If X11/XKBlib.h exists...
147 AC_CHECK_LIB(X11, XkbQueryExtension,
148 AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
149 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
151 AC_MSG_WARN([[Xkb extension not found, Wine will be built without it]])
154 dnl *** Check for X Shm extension
155 AC_CHECK_HEADERS(X11/extensions/XShm.h,
156 [ dnl *** If X11/extensions/XShm.h exists...
157 AC_CHECK_LIB(Xext, XShmQueryExtension,
158 AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
159 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
161 AC_MSG_WARN([[XShm extension not found, Wine will be built without it]])
164 dnl *** Check for X shape extension
165 AC_CHECK_HEADERS(X11/extensions/shape.h,
166 [ dnl *** If X11/extensions/shape.h exists...
167 AC_CHECK_LIB(Xext,XShapeQueryExtension,
168 AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
169 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
171 AC_MSG_WARN([[XShape extension not found, Wine will be built without it]])
174 dnl *** Check for XFree86 DGA / DGA 2.0 extension
175 AC_CHECK_HEADERS(X11/extensions/xf86dga.h,
176 [ dnl *** If X11/extensions/xf86dga.h exists, check
177 dnl *** for XDGAQueryExtension()...
178 AC_CHECK_LIB(Xxf86dga, XDGAQueryExtension,
179 [ dnl *** If found...
180 AC_DEFINE(HAVE_LIBXXF86DGA2, 1,
181 [Define if you have the Xxf86dga library version 2])
182 X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
184 [ dnl *** If not found, look for XF86DGAQueryExtension()
185 dnl *** instead (DGA 2.0 not found)...
186 AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
187 [ AC_DEFINE(HAVE_LIBXXF86DGA, 1,
188 [Define if you have the Xxf86dga library version 1])
189 X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
191 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
194 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
197 AC_MSG_WARN([[DGA extension not found, Wine will be built without it]])
200 dnl *** Check for XFree86 VMODE extension
201 AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,
202 [ dnl *** If X11/extensions/xf86vmode.h exists...
203 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension,
204 [ AC_DEFINE(HAVE_LIBXXF86VM, 1, [Define if you have the Xxf86vm library])
205 X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm"
207 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
210 AC_MSG_WARN([[XFree86 VMODE extension not found, Wine will be built without it]])
213 dnl *** Check for XVideo extension supporting XvImages
214 AC_CHECK_HEADERS(X11/extensions/Xvlib.h,
215 [ dnl *** If X11/extensions/Xvlib.h exists...
216 AC_CHECK_LIB(Xv, XvShmCreateImage,
217 [ AC_DEFINE(HAVE_XVIDEO, 1, [Define if the X libraries support XVideo])
218 X_PRE_LIBS="$X_PRE_LIBS -lXv"
220 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
223 AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]])
226 dnl *** Check for XRender extension
227 AC_CHECK_HEADERS(X11/extensions/Xrender.h,
228 [ dnl *** If X11/extensions/Xrender.h exists...
229 AC_CHECK_LIB(Xrender, XRenderQueryExtension,
230 [ AC_DEFINE(HAVE_LIBXRENDER, 1, [Define if you have the XRender extension library])
231 X_PRE_LIBS="$X_PRE_LIBS -lXrender"
233 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
236 AC_MSG_WARN([[XRender extension not found, Wine will be built without it]])
240 ) dnl *** End of X11/Xlib.h check
242 dnl Check for the presence of OpenGL
243 if test "x$enable_opengl" != "xno"
245 if test -f /usr/X11R6/lib/libGL.a -a ! -f /usr/X11R6/lib/libGL.so
247 AC_MSG_ERROR([/usr/X11R6/lib/libGL.a is present on your system.
248 This prevents linking to OpenGL. Delete the file and restart configure.])
251 AC_CHECK_HEADERS(GL/gl.h GL/glx.h GL/glext.h)
252 if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
254 dnl Check for some problems due to old Mesa versions
255 AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_version_OK,
257 [#include <GL/gl.h>],
258 [GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
259 [wine_cv_opengl_version_OK="yes"],
260 [wine_cv_opengl_version_OK="no"]
264 dnl Check for the thread-safety of the OpenGL library
265 AC_CACHE_CHECK([for thread-safe OpenGL version],
266 wine_cv_opengl_version_threadsafe,
269 AC_TRY_LINK([],[pthread_getspecific();],
270 [wine_cv_opengl_version_threadsafe="yes"],
271 [wine_cv_opengl_version_threadsafe="no"])
275 if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o "x$enable_opengl" = "xyes" \)
277 dnl Check for the presence of the library
278 AC_CHECK_LIB(GL,glXCreateContext,
279 X_PRE_LIBS="$X_PRE_LIBS -lGL"
281 $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
283 if test "$ac_cv_lib_GL_glXCreateContext" = "yes"
285 OPENGLFILES='$(OPENGLFILES)'
286 AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])
288 AC_CHECK_LIB(GL,glXGetProcAddressARB,
289 AC_DEFINE(HAVE_GLX_GETPROCADDRESS, 1,
290 [Define if the OpenGL library supports the glXGetProcAddressARB call]),,
291 $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
293 if test "$ac_cv_lib_GL_glXGetProcAddressARB" = "yes"
295 AC_CACHE_CHECK([for OpenGL extension functions prototypes], wine_cv_extension_prototypes,
296 [AC_TRY_COMPILE([#include <GL/gl.h>
297 #ifdef HAVE_GL_GLEXT_H
298 # include <GL/glext.h>
301 [PFNGLCOLORTABLEEXTPROC test_proc;],
302 [wine_cv_extension_prototypes="yes"],
303 [wine_cv_extension_prototypes="no"]
306 if test "$wine_cv_extension_prototypes" = "yes"
308 AC_DEFINE(HAVE_GLEXT_PROTOTYPES, 1,
309 [Define if the OpenGL headers define extension typedefs])
314 dnl Check for GLU32 library.
315 AC_CHECK_LIB(GLU,gluLookAt,
316 [X_PRE_LIBS="$X_PRE_LIBS -lGLU"
317 GLU32FILES='$(GLU32FILES)']
319 $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
325 CPPFLAGS="$ac_save_CPPFLAGS"
333 dnl **** Check which curses lib to use ***
335 if test "x$with_curses" != "xno"
337 AC_CHECK_HEADERS(ncurses.h,
338 [AC_CHECK_LIB(ncurses,waddch,
339 [AC_DEFINE(HAVE_LIBNCURSES, 1, [Define if you have the ncurses library (-lncurses)])
340 CURSESLIBS="-lncurses"],
341 [AC_CHECK_HEADERS(curses.h,
342 [AC_CHECK_LIB(curses,waddch,
343 [AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have the curses library (-lcurses)])
344 CURSESLIBS="-lcurses"])])])])
346 LIBS="$CURSESLIBS $LIBS"
347 AC_CHECK_FUNCS(getbkgd resizeterm)
353 dnl **** Check for CUPS ****
354 wine_cv_warn_cups_h=no
355 AC_CHECK_LIB(cups,cupsGetPPD,
356 [AC_CHECK_HEADER(cups/cups.h,
357 [AC_DEFINE(HAVE_CUPS, 1, [Define if we have CUPS])
359 wine_cv_warn_cups_h=yes)]
363 dnl **** Check for FreeType 2 ****
364 AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
365 if test "$ft_lib" = "no"
369 wine_cv_msg_freetype=no
371 AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
372 if test "$ft_devel" = "no"
374 AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
375 if test "$ft_devel2" = "freetype2-config"
380 if test "$ft_devel" = "no"
384 wine_cv_msg_freetype=yes
386 FREETYPELIBS=`$ft_devel --libs`
387 FREETYPEINCL=`$ft_devel --cflags`
388 ac_save_CPPFLAGS="$CPPFLAGS"
389 CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
390 AC_CHECK_HEADERS(freetype/freetype.h \
392 freetype/tttables.h \
394 freetype/ftsnames.h \
395 freetype/ttnameid.h \
397 freetype/internal/sfnt.h)
398 AC_TRY_CPP([#include <ft2build.h>
399 #include <freetype/fttrigon.h>],
400 [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
401 [Define if you have the <freetype/fttrigon.h> header file.])
402 wine_cv_fttrigon=yes],
404 CPPFLAGS="$ac_save_CPPFLAGS"
405 dnl Check that we have at least freetype/freetype.h
406 if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
408 AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
409 wine_cv_msg_freetype=no
413 wine_cv_msg_freetype=yes
417 AC_SUBST(FREETYPELIBS)
418 AC_SUBST(FREETYPEINCL)
420 dnl **** Check for parport (currently Linux only) ****
421 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
423 [#include <linux/ppdev.h>],
424 [ioctl (1,PPCLAIM,0)],
425 [ac_cv_c_ppdev="yes"],
426 [ac_cv_c_ppdev="no"])
428 if test "$ac_cv_c_ppdev" = "yes"
430 AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
433 dnl **** Check for IPX (currently Linux only) ****
434 AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
436 [#include <sys/socket.h>
437 #include <netipx/ipx.h>],
438 [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
439 [ac_cv_c_ipx_gnu="yes"],
440 [ac_cv_c_ipx_gnu="no"])
442 if test "$ac_cv_c_ipx_gnu" = "yes"
444 AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
447 if test "$ac_cv_c_ipx_gnu" = "no"
449 AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
451 [#include <sys/socket.h>
452 #include <asm/types.h>
453 #include <linux/ipx.h>],
454 [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
455 [ac_cv_c_ipx_linux="yes"],
456 [ac_cv_c_ipx_linux="no"])
458 if test "$ac_cv_c_ipx_linux" = "yes"
460 AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
464 dnl **** Check for Open Sound System ****
465 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
467 AC_CACHE_CHECK([for Open Sound System],
468 ac_cv_c_opensoundsystem,
470 #if defined(HAVE_SYS_SOUNDCARD_H)
471 #include <sys/soundcard.h>
472 #elif defined(HAVE_MACHINE_SOUNDCARD_H)
473 #include <machine/soundcard.h>
474 #elif defined(HAVE_SOUNDCARD_H)
475 #include <soundcard.h>
479 /* check for one of the Open Sound System specific SNDCTL_ defines */
480 #if !defined(SNDCTL_DSP_STEREO)
481 #error No open sound system
483 ],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))
485 if test "$ac_cv_c_opensoundsystem" = "yes"
487 AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
490 AC_CACHE_CHECK([for Open Sound System/MIDI interface],
491 ac_cv_c_opensoundsystem_midi,
493 #if defined(HAVE_SYS_SOUNDCARD_H)
494 #include <sys/soundcard.h>
495 #elif defined(HAVE_MACHINE_SOUNDCARD_H)
496 #include <machine/soundcard.h>
497 #elif defined(HAVE_SOUNDCARD_H)
498 #include <soundcard.h>
502 /* check for one of the Open Sound System specific SNDCTL_SEQ defines */
503 #if !defined(SNDCTL_SEQ_SYNC)
504 #error No open sound system MIDI interface
506 ],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))
508 if test "$ac_cv_c_opensoundsystem_midi" = "yes"
510 AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
513 dnl **** Check for broken glibc mmap64 ****
515 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
517 #define _FILE_OFFSET_BITS 64
521 #include <sys/mman.h>
524 int main(int argc,char **argv) {
525 int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
526 if (fd == -1) exit(1);
528 unlink("conftest.map");
532 if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
538 fprintf(stderr,"success!\n");
543 ac_cv_mmap64_works="yes",
544 ac_cv_mmap64_works="no",
545 ac_cv_mmap64_works="no") )
547 if test "$ac_cv_mmap64_works" = "yes"
549 AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
552 dnl **** Check for gcc strength-reduce bug ****
554 if test "x${GCC}" = "xyes"
556 CFLAGS="$CFLAGS -Wall"
557 AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
559 int L[[4]] = {0,1,2,3};
561 static int Array[[3]];
564 for(i=0; i<B; i++) Array[[i]] = i - 3;
565 for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
568 exit( Array[[1]] != -2 || L[[2]] != 3);
570 ac_cv_c_gcc_strength_bug="no",
571 ac_cv_c_gcc_strength_bug="yes",
572 ac_cv_c_gcc_strength_bug="yes") )
573 if test "$ac_cv_c_gcc_strength_bug" = "yes"
575 CFLAGS="$CFLAGS -fno-strength-reduce"
578 dnl Check for -mpreferred-stack-boundary
579 AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support],
580 ac_cv_c_gcc_stack_boundary,
581 [saved_cflags=$CFLAGS
582 CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
583 AC_TRY_COMPILE(,[return 0],ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")
586 if test "$ac_cv_c_gcc_stack_boundary" = "yes"
588 CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
592 dnl **** Check if we need to place .type inside a .def directive ****
594 AC_CACHE_CHECK([whether .type must sit inside a .def directive],
597 LIBS="conftest_asm.s $LIBS"
598 cat > conftest_asm.s <<EOF
600 .def _ac_test; .scl 2; .type 32; .endef
604 AC_TRY_LINK(,,ac_cv_c_type_in_def="yes",ac_cv_c_type_in_def="no")
606 if test "$ac_cv_c_type_in_def" = "yes"
608 AC_DEFINE(NEED_TYPE_IN_DEF, 1, [Define if .type asm directive must be inside a .def directive])
611 dnl **** Check for underscore on external symbols ****
613 AC_CACHE_CHECK([whether external symbols need an underscore prefix],
614 ac_cv_c_extern_prefix,
616 LIBS="conftest_asm.s $LIBS"
617 cat > conftest_asm.s <<EOF
622 AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
623 ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
625 if test "$ac_cv_c_extern_prefix" = "yes"
627 AC_DEFINE(NEED_UNDERSCORE_PREFIX, 1,
628 [Define if symbols declared in assembly code need an underscore prefix])
631 dnl **** Check whether stdcall symbols need to be decorated ****
633 AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
634 ac_cv_c_stdcall_decoration,
636 LIBS="conftest_asm.s $LIBS"
637 if test "$ac_cv_c_extern_prefix" = "yes"
639 cat > conftest_asm.s <<EOF
644 cat > conftest_asm.s <<EOF
649 AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
650 [ac_test(); return 0],
651 ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
653 if test "$ac_cv_c_stdcall_decoration" = "yes"
655 AC_DEFINE(NEED_STDCALL_DECORATION, 1,
656 [Define if stdcall symbols need to be decorated])
659 dnl **** Check for .string in assembler ****
661 AC_CACHE_CHECK([whether assembler accepts .string],
664 LIBS="conftest_asm.s $LIBS"
665 cat > conftest_asm.s <<EOF
668 AC_TRY_LINK(,,ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no")
670 if test "$ac_cv_c_asm_string" = "yes"
672 AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
675 dnl **** Check for working dll ****
679 if test "$LIBEXT" = "so"
681 AC_CACHE_CHECK([whether we can build a GNU style ELF dll],
683 [saved_cflags=$CFLAGS
684 CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
685 AC_TRY_LINK(,[return 1],ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")
688 if test "$ac_cv_c_dll_gnuelf" = "yes"
690 LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
691 LDDLLFLAGS="-Wl,-Bsymbolic"
693 AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll,
694 ac_cv_c_dll_unixware,
695 [saved_cflags=$CFLAGS
696 CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
697 AC_TRY_LINK(,[return 1],ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")
700 if test "$ac_cv_c_dll_unixware" = "yes"
702 LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
703 LDDLLFLAGS="-Wl,-B,symbolic"
706 if test "$ac_cv_c_dll_gnuelf" = "no" -a "$ac_cv_c_dll_unixware" = "no"
709 AC_CHECK_PROG(DLLWRAP,dllwrap,dllwrap,false)
710 if test "$DLLWRAP" = "dllwrap"; then
711 dnl FIXME - check whether dllwrap works correctly...
721 if test "$LIBEXT" = "a"; then
723 [could not find a way to build shared libraries.
724 It is currently not possible to build Wine without shared library
725 (.so) support to allow transparent switch between .so and .dll files.
726 If you are using Linux, you will need a newer binutils.]
733 if test "$LIBEXT" = "so"; then
736 LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
737 elif test "$LIBEXT" = "dll"; then
738 #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
740 LDPATH="PATH=\"\$(TOPOBJDIR)/unicode:\$\$PATH\""
750 dnl **** Check for reentrant libc ****
752 dnl For cross-compiling we blindly assume that libc is reentrant. This is
753 dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
755 AC_DEFUN([WINE_CHECK_ERRNO],
757 AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
758 [AC_TRY_RUN([int myerrno = 0;
760 int *$1(){return &myerrno;}
761 main(){connect(0,buf,255); exit(!myerrno);}],
762 wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
763 wine_cv_libc_r_$1=yes )
765 if test "$wine_cv_libc_r_$1" = "yes"
767 wine_cv_libc_reentrant=$1
771 wine_cv_libc_reentrant=no
772 dnl Linux style errno location
773 WINE_CHECK_ERRNO(__errno_location)
774 dnl FreeBSD style errno location
775 WINE_CHECK_ERRNO(__error)
776 dnl Solaris style errno location
777 WINE_CHECK_ERRNO(___errno)
778 dnl UnixWare style errno location
779 WINE_CHECK_ERRNO(__thr_errno)
780 dnl NetBSD style errno location
781 WINE_CHECK_ERRNO(__errno)
783 if test "$wine_cv_libc_reentrant" != "no"
785 AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
786 [Define to the name of the function returning errno for reentrant libc])
789 dnl **** Check for reentrant X libraries ****
791 dnl This may fail to determine whether X libraries are reentrant if
792 dnl AC_PATH_XTRA does not set x_libraries. In this case manual configuration
793 dnl is possible with the --without-reentrant-x option.
795 if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
797 AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
798 [ if test "x$with_reentrant_x" = "xno"
800 wine_cv_x_reentrant=no
803 for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
804 if test -r $dir/libX11.so; then
805 libX11_check="-D $dir/libX11.so"
808 if test -r $dir/libX11.a; then
809 libX11_check="$dir/libX11.a"
813 if test "$libX11_check" != "none"; then
814 if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
816 wine_cv_x_reentrant=yes
818 wine_cv_x_reentrant=no
821 wine_cv_x_reentrant=unknown
825 wine_cv_x_reentrant=no
827 if test "$wine_cv_x_reentrant" = "no"
829 AC_DEFINE(NO_REENTRANT_X11, 1,
830 [Define if X libraries are not reentrant (compiled without -D_REENTRANT)])
834 dnl **** Check for functions ****
883 dnl **** Check for header files ****
947 dnl **** Check for types ****
955 AC_CHECK_SIZEOF(long long,0)
957 AC_CACHE_CHECK([whether linux/input.h is for real],
958 wine_cv_linux_input_h,
960 #include <linux/input.h>
962 int foo = EVIOCGBIT(EV_ABS,42);
963 int bar = BTN_PINKIE;
966 wine_cv_linux_input_h=yes,
967 wine_cv_linux_input_h=no,
971 if test "$wine_cv_linux_input_h" = "yes"
973 AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
974 [Define if we have linux/input.h AND it contains the INPUT event API])
978 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
979 wine_cv_linux_gethostbyname_r_6,
985 struct hostent *result;
992 res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
993 res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
995 wine_cv_linux_gethostbyname_r_6=yes,
996 wine_cv_linux_gethostbyname_r_6=no
999 if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
1001 AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
1002 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
1005 if test "$ac_cv_header_linux_joystick_h" = "yes"
1007 AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
1008 wine_cv_linux_joystick_22_api,
1010 #include <sys/ioctl.h>
1011 #include <linux/joystick.h>
1013 struct js_event blub;
1014 #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1015 #error "no 2.2 header"
1018 wine_cv_linux_joystick_22_api=yes,
1019 wine_cv_linux_joystick_22_api=no,
1020 wine_cv_linux_joystick_22_api=no
1023 if test "$wine_cv_linux_joystick_22_api" = "yes"
1025 AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1026 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1030 dnl **** statfs checks ****
1032 if test "$ac_cv_header_sys_vfs_h" = "yes"
1034 AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1035 wine_cv_sys_vfs_has_statfs,
1037 #include <sys/types.h>
1038 #ifdef HAVE_SYS_PARAM_H
1039 # include <sys/param.h>
1041 #include <sys/vfs.h>
1045 memset(&stfs,0,sizeof(stfs));
1046 ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1049 if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1051 AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1052 [Define if the struct statfs is defined by <sys/vfs.h>])
1056 if test "$ac_cv_header_sys_statfs_h" = "yes"
1058 AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1059 wine_cv_sys_statfs_has_statfs,
1061 #include <sys/types.h>
1062 #ifdef HAVE_SYS_PARAM_H
1063 # include <sys/param.h>
1065 #include <sys/statfs.h>
1068 ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1071 if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1073 AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1074 [Define if the struct statfs is defined by <sys/statfs.h>])
1078 if test "$ac_cv_header_sys_mount_h" = "yes"
1080 AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1081 wine_cv_sys_mount_has_statfs,
1083 #include <sys/types.h>
1084 #ifdef HAVE_SYS_PARAM_H
1085 # include <sys/param.h>
1087 #include <sys/mount.h>
1090 ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1093 if test "$wine_cv_sys_mount_has_statfs" = "yes"
1095 AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1096 [Define if the struct statfs is defined by <sys/mount.h>])
1100 dnl *** Check for some structure members
1102 dnl Macro to check if a structure contains a specified member
1103 dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
1105 AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
1106 [AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
1107 AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
1108 AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
1111 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1113 WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree,
1114 [#include <sys/types.h>
1115 #ifdef HAVE_SYS_PARAM_H
1116 # include <sys/param.h>
1118 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1119 # include <sys/mount.h>
1121 # ifdef STATFS_DEFINED_BY_SYS_VFS
1122 # include <sys/vfs.h>
1124 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1125 # include <sys/statfs.h>
1129 [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])])
1131 WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail,
1132 [#include <sys/types.h>
1133 #ifdef HAVE_SYS_PARAM_H
1134 # include <sys/param.h>
1136 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1137 # include <sys/mount.h>
1139 # ifdef STATFS_DEFINED_BY_SYS_VFS
1140 # include <sys/vfs.h>
1142 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1143 # include <sys/statfs.h>
1147 [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])])
1149 dnl Check for file descriptor passing with msg_accrights
1150 WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights,
1151 [#include <sys/types.h>
1152 #include <sys/socket.h>],
1153 [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])])
1155 dnl Check for the sa_len member in struct sockaddr
1156 WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len,
1157 [#include <sys/types.h>
1158 #include <sys/socket.h>],
1159 [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])])
1161 dnl Check for the sun_len member in struct sockaddr_un
1162 WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len,
1163 [#include <sys/types.h>
1164 #include <sys/socket.h>
1165 #include <sys/un.h>],
1166 [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])])
1168 dnl *** check for the need to define __i386__
1172 AC_CACHE_CHECK([whether we need to define __i386__],ac_cv_cpp_def_i386,
1173 AC_EGREP_CPP(yes,[#ifndef __i386__
1176 ac_cv_cpp_def_i386="yes", ac_cv_cpp_def_i386="no"))
1179 if test "$ac_cv_cpp_def_i386" = "yes"
1181 CFLAGS="$CFLAGS -D__i386__"
1182 LINTFLAGS="$LINTFLAGS -D__i386__"
1185 dnl **** Generate output files ****
1187 dnl Macro to create non-existent directories from config.status
1188 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
1189 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
1190 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
1192 AH_TOP([#define __WINE_CONFIG_H])
1194 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1195 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1196 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1197 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1198 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1199 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1200 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1201 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1202 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1203 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1204 WINE_CONFIG_EXTRA_DIR(dlls/kernel/tests)
1205 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1206 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1207 WINE_CONFIG_EXTRA_DIR(dlls/user/tests)
1208 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1209 WINE_CONFIG_EXTRA_DIR(include/wine)
1210 WINE_CONFIG_EXTRA_DIR(programs/regapi/tests)
1211 WINE_CONFIG_EXTRA_DIR(programs/winetest/tests)
1213 AC_CONFIG_COMMANDS([include/wine/version.h],
1214 [AC_MSG_NOTICE([creating include/wine/version.h])
1215 cat >$tmp/version.h <<CEOF
1216 /* Generated automatically by configure; DO NOT EDIT! */
1217 #define WINE_RELEASE_INFO "Wine version $wine_version"
1219 if cmp -s $tmp/version.h include/wine/version.h 2>/dev/null; then
1220 AC_MSG_NOTICE([include/wine/version.h is unchanged])
1221 rm -f $tmp/version.h
1223 rm -f include/wine/version.h
1224 mv $tmp/version.h include/wine/version.h
1226 [wine_version=$PACKAGE_VERSION])
1228 MAKE_RULES=Make.rules
1229 AC_SUBST_FILE(MAKE_RULES)
1231 MAKE_DLL_RULES=dlls/Makedll.rules
1232 AC_SUBST_FILE(MAKE_DLL_RULES)
1234 MAKE_PROG_RULES=programs/Makeprog.rules
1235 AC_SUBST_FILE(MAKE_PROG_RULES)
1240 programs/Makeprog.rules
1246 dlls/advapi32/Makefile
1247 dlls/avicap32/Makefile
1248 dlls/avifil32/Makefile
1249 dlls/comctl32/Makefile
1250 dlls/commdlg/Makefile
1251 dlls/crtdll/Makefile
1252 dlls/crypt32/Makefile
1253 dlls/dciman32/Makefile
1255 dlls/devenum/Makefile
1256 dlls/dinput/Makefile
1258 dlls/dplayx/Makefile
1259 dlls/dsound/Makefile
1263 dlls/imagehlp/Makefile
1265 dlls/kernel/Makefile
1266 dlls/lzexpand/Makefile
1267 dlls/mapi32/Makefile
1271 dlls/msimg32/Makefile
1272 dlls/msnet32/Makefile
1273 dlls/msrle32/Makefile
1274 dlls/msvcrt/Makefile
1275 dlls/msvcrt20/Makefile
1276 dlls/msvideo/Makefile
1277 dlls/netapi32/Makefile
1279 dlls/odbc32/Makefile
1281 dlls/oleaut32/Makefile
1282 dlls/olecli/Makefile
1283 dlls/oledlg/Makefile
1284 dlls/olepro32/Makefile
1285 dlls/olesvr/Makefile
1286 dlls/opengl32/Makefile
1289 dlls/quartz/Makefile
1290 dlls/rasapi32/Makefile
1291 dlls/richedit/Makefile
1292 dlls/rpcrt4/Makefile
1293 dlls/serialui/Makefile
1294 dlls/setupapi/Makefile
1295 dlls/shdocvw/Makefile
1296 dlls/shell32/Makefile
1297 dlls/shfolder/Makefile
1298 dlls/shlwapi/Makefile
1300 dlls/tapi32/Makefile
1301 dlls/ttydrv/Makefile
1303 dlls/urlmon/Makefile
1305 dlls/version/Makefile
1306 dlls/win32s/Makefile
1307 dlls/winaspi/Makefile
1308 dlls/winedos/Makefile
1309 dlls/wineps/Makefile
1310 dlls/wininet/Makefile
1312 dlls/winmm/joystick/Makefile
1313 dlls/winmm/mcianim/Makefile
1314 dlls/winmm/mciavi/Makefile
1315 dlls/winmm/mcicda/Makefile
1316 dlls/winmm/mciseq/Makefile
1317 dlls/winmm/mciwave/Makefile
1318 dlls/winmm/midimap/Makefile
1319 dlls/winmm/wavemap/Makefile
1320 dlls/winmm/wineoss/Makefile
1321 dlls/winnls/Makefile
1322 dlls/winsock/Makefile
1323 dlls/winspool/Makefile
1324 dlls/wintrust/Makefile
1326 dlls/wsock32/Makefile
1327 dlls/x11drv/Makefile
1328 documentation/Makefile
1331 graphics/enhmetafiledrv/Makefile
1332 graphics/metafiledrv/Makefile
1333 graphics/win16drv/Makefile
1334 graphics/x11drv/Makefile
1348 programs/avitools/Makefile
1349 programs/clock/Makefile
1350 programs/cmdlgtst/Makefile
1351 programs/control/Makefile
1352 programs/notepad/Makefile
1353 programs/osversioncheck/Makefile
1354 programs/progman/Makefile
1355 programs/regapi/Makefile
1356 programs/regtest/Makefile
1357 programs/uninstaller/Makefile
1358 programs/view/Makefile
1359 programs/wcmd/Makefile
1360 programs/wineconsole/Makefile
1361 programs/winemine/Makefile
1362 programs/winetest/Makefile
1363 programs/winhelp/Makefile
1364 programs/winver/Makefile
1369 tools/winapi/Makefile
1370 tools/winebuild/Makefile
1371 tools/winedump/Makefile
1378 windows/x11drv/Makefile ])
1382 if test "$have_x" = "no"
1385 echo "*** Warning: X development files not found. Wine will be built without"
1386 echo "*** X support, which currently does not work, and would probably not be"
1387 echo "*** what you want anyway. You will need to install devel packages of"
1388 echo "*** Xlib/Xfree86 at the very least."
1391 if test "$ac_cv_lib_ncurses_resizeterm" = "no" -a "$ac_cv_lib_ncurses_waddch" = "yes"
1394 echo "*** Warning: resizeterm not found in ncurses. Wine will be built without"
1395 echo "*** terminal resize support. Consider upgrading ncurses."
1398 if test "$wine_cv_libc_reentrant" = "no"
1401 echo "*** Warning: non-reentrant libc detected. Wine will be built without"
1402 echo "*** threading support. Consider upgrading libc to a more recent"
1403 echo "*** reentrant version of libc."
1406 if test "$wine_cv_opengl_version_OK" = "no"
1409 echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1410 echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1413 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "x"
1416 echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
1417 echo "*** thread-safety. To prevent crashes, OpenGL support has been removed."
1418 echo "*** A fix for glibc 2.1.3 that seems to work is included in this version of Wine,"
1419 echo "*** start configure with '--enable-opengl' to force OpenGL support."
1422 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "xyes"
1425 echo "*** Warning: you explicitly linked in a thread-safe OpenGL version. If you"
1426 echo "*** experience unusual crashes on DirectDraw games, try first to disable OpenGL"
1427 echo "*** support before reporting bugs."
1430 if test "$wine_cv_warn_cups_h" = "yes"
1433 echo "*** Note: You have cups runtime libraries, but no development"
1434 echo "*** libraries. Install the cups-devel package or whichever package"
1435 echo "*** contains cups.h to enable CUPS support in Wine."
1438 if test "$wine_cv_msg_freetype" = "yes"
1441 echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1442 echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1443 echo "*** freetype-devel package (or its equivalent on your distribution) to"
1444 echo "*** enable Wine to use TrueType fonts."
1448 echo "Configure finished. Do 'make depend && make' to compile Wine."
1451 dnl Local Variables:
1452 dnl comment-start: "dnl "
1454 dnl comment-start-skip: "\\bdnl\\b\\s *"
1455 dnl compile-command: "autoconf"