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
735 LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
736 elif test "$LIBEXT" = "dll"; then
737 #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
738 LDPATH="PATH=\"\$(TOPOBJDIR)/unicode:\$\$PATH\""
747 dnl **** Check for reentrant libc ****
749 dnl For cross-compiling we blindly assume that libc is reentrant. This is
750 dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
752 AC_DEFUN([WINE_CHECK_ERRNO],
754 AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
755 [AC_TRY_RUN([int myerrno = 0;
757 int *$1(){return &myerrno;}
758 main(){connect(0,buf,255); exit(!myerrno);}],
759 wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
760 wine_cv_libc_r_$1=yes )
762 if test "$wine_cv_libc_r_$1" = "yes"
764 wine_cv_libc_reentrant=$1
768 wine_cv_libc_reentrant=no
769 dnl Linux style errno location
770 WINE_CHECK_ERRNO(__errno_location)
771 dnl FreeBSD style errno location
772 WINE_CHECK_ERRNO(__error)
773 dnl Solaris style errno location
774 WINE_CHECK_ERRNO(___errno)
775 dnl UnixWare style errno location
776 WINE_CHECK_ERRNO(__thr_errno)
777 dnl NetBSD style errno location
778 WINE_CHECK_ERRNO(__errno)
780 if test "$wine_cv_libc_reentrant" != "no"
782 AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
783 [Define to the name of the function returning errno for reentrant libc])
786 dnl **** Check for reentrant X libraries ****
788 dnl This may fail to determine whether X libraries are reentrant if
789 dnl AC_PATH_XTRA does not set x_libraries. In this case manual configuration
790 dnl is possible with the --without-reentrant-x option.
792 if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
794 AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
795 [ if test "x$with_reentrant_x" = "xno"
797 wine_cv_x_reentrant=no
800 for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
801 if test -r $dir/libX11.so; then
802 libX11_check="-D $dir/libX11.so"
805 if test -r $dir/libX11.a; then
806 libX11_check="$dir/libX11.a"
810 if test "$libX11_check" != "none"; then
811 if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
813 wine_cv_x_reentrant=yes
815 wine_cv_x_reentrant=no
818 wine_cv_x_reentrant=unknown
822 wine_cv_x_reentrant=no
824 if test "$wine_cv_x_reentrant" = "no"
826 AC_DEFINE(NO_REENTRANT_X11, 1,
827 [Define if X libraries are not reentrant (compiled without -D_REENTRANT)])
831 dnl **** Check for functions ****
874 dnl **** Check for header files ****
934 dnl **** Check for types ****
942 AC_CHECK_SIZEOF(long long,0)
944 AC_CACHE_CHECK([whether linux/input.h is for real],
945 wine_cv_linux_input_h,
947 #include <linux/input.h>
949 int foo = EVIOCGBIT(EV_ABS,42);
950 int bar = BTN_PINKIE;
953 wine_cv_linux_input_h=yes,
954 wine_cv_linux_input_h=no,
958 if test "$wine_cv_linux_input_h" = "yes"
960 AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
961 [Define if we have linux/input.h AND it contains the INPUT event API])
965 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
966 wine_cv_linux_gethostbyname_r_6,
972 struct hostent *result;
979 res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
980 res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
982 wine_cv_linux_gethostbyname_r_6=yes,
983 wine_cv_linux_gethostbyname_r_6=no
986 if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
988 AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
989 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
992 if test "$ac_cv_header_linux_joystick_h" = "yes"
994 AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
995 wine_cv_linux_joystick_22_api,
997 #include <sys/ioctl.h>
998 #include <linux/joystick.h>
1000 struct js_event blub;
1001 #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1002 #error "no 2.2 header"
1005 wine_cv_linux_joystick_22_api=yes,
1006 wine_cv_linux_joystick_22_api=no,
1007 wine_cv_linux_joystick_22_api=no
1010 if test "$wine_cv_linux_joystick_22_api" = "yes"
1012 AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1013 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1017 dnl **** statfs checks ****
1019 if test "$ac_cv_header_sys_vfs_h" = "yes"
1021 AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1022 wine_cv_sys_vfs_has_statfs,
1024 #include <sys/types.h>
1025 #ifdef HAVE_SYS_PARAM_H
1026 # include <sys/param.h>
1028 #include <sys/vfs.h>
1032 memset(&stfs,0,sizeof(stfs));
1033 ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1036 if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1038 AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1039 [Define if the struct statfs is defined by <sys/vfs.h>])
1043 if test "$ac_cv_header_sys_statfs_h" = "yes"
1045 AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1046 wine_cv_sys_statfs_has_statfs,
1048 #include <sys/types.h>
1049 #ifdef HAVE_SYS_PARAM_H
1050 # include <sys/param.h>
1052 #include <sys/statfs.h>
1055 ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1058 if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1060 AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1061 [Define if the struct statfs is defined by <sys/statfs.h>])
1065 if test "$ac_cv_header_sys_mount_h" = "yes"
1067 AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1068 wine_cv_sys_mount_has_statfs,
1070 #include <sys/types.h>
1071 #ifdef HAVE_SYS_PARAM_H
1072 # include <sys/param.h>
1074 #include <sys/mount.h>
1077 ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1080 if test "$wine_cv_sys_mount_has_statfs" = "yes"
1082 AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1083 [Define if the struct statfs is defined by <sys/mount.h>])
1087 dnl *** Check for some structure members
1089 dnl Macro to check if a structure contains a specified member
1090 dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
1092 AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
1093 [AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
1094 AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
1095 AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
1098 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1100 WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree,
1101 [#include <sys/types.h>
1102 #ifdef HAVE_SYS_PARAM_H
1103 # include <sys/param.h>
1105 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1106 # include <sys/mount.h>
1108 # ifdef STATFS_DEFINED_BY_SYS_VFS
1109 # include <sys/vfs.h>
1111 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1112 # include <sys/statfs.h>
1116 [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])])
1118 WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail,
1119 [#include <sys/types.h>
1120 #ifdef HAVE_SYS_PARAM_H
1121 # include <sys/param.h>
1123 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1124 # include <sys/mount.h>
1126 # ifdef STATFS_DEFINED_BY_SYS_VFS
1127 # include <sys/vfs.h>
1129 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1130 # include <sys/statfs.h>
1134 [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])])
1136 dnl Check for file descriptor passing with msg_accrights
1137 WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights,
1138 [#include <sys/types.h>
1139 #include <sys/socket.h>],
1140 [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])])
1142 dnl Check for the sa_len member in struct sockaddr
1143 WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len,
1144 [#include <sys/types.h>
1145 #include <sys/socket.h>],
1146 [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])])
1148 dnl Check for the sun_len member in struct sockaddr_un
1149 WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len,
1150 [#include <sys/types.h>
1151 #include <sys/socket.h>
1152 #include <sys/un.h>],
1153 [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])])
1155 dnl *** check for the need to define __i386__
1159 AC_CACHE_CHECK([whether we need to define __i386__],ac_cv_cpp_def_i386,
1160 AC_EGREP_CPP(yes,[#ifndef __i386__
1163 ac_cv_cpp_def_i386="yes", ac_cv_cpp_def_i386="no"))
1166 if test "$ac_cv_cpp_def_i386" = "yes"
1168 CFLAGS="$CFLAGS -D__i386__"
1169 LINTFLAGS="$LINTFLAGS -D__i386__"
1172 dnl **** Generate output files ****
1174 dnl Macro to create non-existent directories from config.status
1175 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
1176 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
1177 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
1179 AH_TOP([#define __WINE_CONFIG_H])
1181 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1182 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1183 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1184 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1185 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1186 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1187 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1188 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1189 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1190 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1191 WINE_CONFIG_EXTRA_DIR(dlls/kernel/tests)
1192 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1193 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1194 WINE_CONFIG_EXTRA_DIR(dlls/user/tests)
1195 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1196 WINE_CONFIG_EXTRA_DIR(include/wine)
1197 WINE_CONFIG_EXTRA_DIR(programs/regapi/tests)
1198 WINE_CONFIG_EXTRA_DIR(programs/winetest/tests)
1200 AC_CONFIG_COMMANDS([include/wine/version.h],
1201 [AC_MSG_NOTICE([creating include/wine/version.h])
1202 cat >$tmp/version.h <<CEOF
1203 /* Generated automatically by configure; DO NOT EDIT! */
1204 #define WINE_RELEASE_INFO "Wine version $wine_version"
1206 if cmp -s $tmp/version.h include/wine/version.h 2>/dev/null; then
1207 AC_MSG_NOTICE([include/wine/version.h is unchanged])
1208 rm -f $tmp/version.h
1210 rm -f include/wine/version.h
1211 mv $tmp/version.h include/wine/version.h
1213 [wine_version=$PACKAGE_VERSION])
1215 MAKE_RULES=Make.rules
1216 AC_SUBST_FILE(MAKE_RULES)
1218 MAKE_DLL_RULES=dlls/Makedll.rules
1219 AC_SUBST_FILE(MAKE_DLL_RULES)
1221 MAKE_PROG_RULES=programs/Makeprog.rules
1222 AC_SUBST_FILE(MAKE_PROG_RULES)
1227 programs/Makeprog.rules
1233 dlls/advapi32/Makefile
1234 dlls/avicap32/Makefile
1235 dlls/avifil32/Makefile
1236 dlls/comctl32/Makefile
1237 dlls/commdlg/Makefile
1238 dlls/crtdll/Makefile
1239 dlls/crypt32/Makefile
1240 dlls/dciman32/Makefile
1242 dlls/devenum/Makefile
1243 dlls/dinput/Makefile
1245 dlls/dplayx/Makefile
1246 dlls/dsound/Makefile
1250 dlls/imagehlp/Makefile
1252 dlls/kernel/Makefile
1253 dlls/lzexpand/Makefile
1254 dlls/mapi32/Makefile
1258 dlls/msimg32/Makefile
1259 dlls/msnet32/Makefile
1260 dlls/msrle32/Makefile
1261 dlls/msvcrt/Makefile
1262 dlls/msvcrt20/Makefile
1263 dlls/msvideo/Makefile
1264 dlls/netapi32/Makefile
1266 dlls/odbc32/Makefile
1268 dlls/oleaut32/Makefile
1269 dlls/olecli/Makefile
1270 dlls/oledlg/Makefile
1271 dlls/olepro32/Makefile
1272 dlls/olesvr/Makefile
1273 dlls/opengl32/Makefile
1276 dlls/quartz/Makefile
1277 dlls/rasapi32/Makefile
1278 dlls/richedit/Makefile
1279 dlls/rpcrt4/Makefile
1280 dlls/serialui/Makefile
1281 dlls/setupapi/Makefile
1282 dlls/shdocvw/Makefile
1283 dlls/shell32/Makefile
1284 dlls/shfolder/Makefile
1285 dlls/shlwapi/Makefile
1287 dlls/tapi32/Makefile
1288 dlls/ttydrv/Makefile
1290 dlls/urlmon/Makefile
1292 dlls/version/Makefile
1293 dlls/win32s/Makefile
1294 dlls/winaspi/Makefile
1295 dlls/winedos/Makefile
1296 dlls/wineps/Makefile
1297 dlls/wininet/Makefile
1299 dlls/winmm/joystick/Makefile
1300 dlls/winmm/mcianim/Makefile
1301 dlls/winmm/mciavi/Makefile
1302 dlls/winmm/mcicda/Makefile
1303 dlls/winmm/mciseq/Makefile
1304 dlls/winmm/mciwave/Makefile
1305 dlls/winmm/midimap/Makefile
1306 dlls/winmm/wavemap/Makefile
1307 dlls/winmm/wineoss/Makefile
1308 dlls/winnls/Makefile
1309 dlls/winsock/Makefile
1310 dlls/winspool/Makefile
1311 dlls/wintrust/Makefile
1313 dlls/wsock32/Makefile
1314 dlls/x11drv/Makefile
1315 documentation/Makefile
1318 graphics/enhmetafiledrv/Makefile
1319 graphics/metafiledrv/Makefile
1320 graphics/win16drv/Makefile
1321 graphics/x11drv/Makefile
1335 programs/avitools/Makefile
1336 programs/clock/Makefile
1337 programs/cmdlgtst/Makefile
1338 programs/control/Makefile
1339 programs/notepad/Makefile
1340 programs/osversioncheck/Makefile
1341 programs/progman/Makefile
1342 programs/regapi/Makefile
1343 programs/regtest/Makefile
1344 programs/uninstaller/Makefile
1345 programs/view/Makefile
1346 programs/wcmd/Makefile
1347 programs/wineconsole/Makefile
1348 programs/winemine/Makefile
1349 programs/winetest/Makefile
1350 programs/winhelp/Makefile
1351 programs/winver/Makefile
1356 tools/winapi/Makefile
1357 tools/winebuild/Makefile
1358 tools/winedump/Makefile
1365 windows/x11drv/Makefile ])
1369 if test "$have_x" = "no"
1372 echo "*** Warning: X development files not found. Wine will be built without"
1373 echo "*** X support, which currently does not work, and would probably not be"
1374 echo "*** what you want anyway. You will need to install devel packages of"
1375 echo "*** Xlib/Xfree86 at the very least."
1378 if test "$ac_cv_lib_ncurses_resizeterm" = "no" -a "$ac_cv_lib_ncurses_waddch" = "yes"
1381 echo "*** Warning: resizeterm not found in ncurses. Wine will be built without"
1382 echo "*** terminal resize support. Consider upgrading ncurses."
1385 if test "$wine_cv_libc_reentrant" = "no"
1388 echo "*** Warning: non-reentrant libc detected. Wine will be built without"
1389 echo "*** threading support. Consider upgrading libc to a more recent"
1390 echo "*** reentrant version of libc."
1393 if test "$wine_cv_opengl_version_OK" = "no"
1396 echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1397 echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1400 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "x"
1403 echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
1404 echo "*** thread-safety. To prevent crashes, OpenGL support has been removed."
1405 echo "*** A fix for glibc 2.1.3 that seems to work is included in this version of Wine,"
1406 echo "*** start configure with '--enable-opengl' to force OpenGL support."
1409 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "xyes"
1412 echo "*** Warning: you explicitly linked in a thread-safe OpenGL version. If you"
1413 echo "*** experience unusual crashes on DirectDraw games, try first to disable OpenGL"
1414 echo "*** support before reporting bugs."
1417 if test "$wine_cv_warn_cups_h" = "yes"
1420 echo "*** Note: You have cups runtime libraries, but no development"
1421 echo "*** libraries. Install the cups-devel package or whichever package"
1422 echo "*** contains cups.h to enable CUPS support in Wine."
1425 if test "$wine_cv_msg_freetype" = "yes"
1428 echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1429 echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1430 echo "*** freetype-devel package (or its equivalent on your distribution) to"
1431 echo "*** enable Wine to use TrueType fonts."
1435 echo "Configure finished. Do 'make depend && make' to compile Wine."
1438 dnl Local Variables:
1439 dnl comment-start: "dnl "
1441 dnl comment-start-skip: "\\bdnl\\b\\s *"
1442 dnl compile-command: "autoconf"