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)
100 AC_CHECK_HEADERS(dlfcn.h,
101 [AC_CHECK_FUNCS(dlopen,,
102 [AC_CHECK_LIB(dl,dlopen,
103 [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
112 AC_CHECK_HEADERS(jpeglib.h,
113 AC_CHECK_LIB(jpeg,jpeg_start_decompress,
114 AC_DEFINE(HAVE_LIBJPEG,1,[Define if you have libjpeg including devel headers])
123 AC_SUBST(OPENGLFILES)
127 if test "$have_x" = "yes"
130 ac_save_CPPFLAGS="$CPPFLAGS"
131 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
133 dnl *** All of the following tests require X11/Xlib.h
134 AC_CHECK_HEADERS(X11/Xlib.h,
136 dnl *** Check for X keyboard extension
137 AC_CHECK_HEADERS(X11/XKBlib.h,
138 [ dnl *** If X11/XKBlib.h exists...
139 AC_CHECK_LIB(X11, XkbQueryExtension,
140 AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
141 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
143 AC_MSG_WARN([[Xkb extension not found, Wine will be built without it]])
146 dnl *** Check for X Shm extension
147 AC_CHECK_HEADERS(X11/extensions/XShm.h,
148 [ dnl *** If X11/extensions/XShm.h exists...
149 AC_CHECK_LIB(Xext, XShmQueryExtension,
150 AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
151 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
153 AC_MSG_WARN([[XShm extension not found, Wine will be built without it]]),
154 [#include <X11/Xlib.h>])
156 dnl *** Check for X shape extension
157 AC_CHECK_HEADERS(X11/extensions/shape.h,
158 [ dnl *** If X11/extensions/shape.h exists...
159 AC_CHECK_LIB(Xext,XShapeQueryExtension,
160 AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
161 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
163 AC_MSG_WARN([[XShape extension not found, Wine will be built without it]]),
164 [#include <X11/Xlib.h>])
166 dnl *** Check for XFree86 DGA / DGA 2.0 extension
167 AC_CHECK_HEADERS(X11/extensions/xf86dga.h,
168 [ dnl *** If X11/extensions/xf86dga.h exists, check
169 dnl *** for XDGAQueryExtension()...
170 AC_CHECK_LIB(Xxf86dga, XDGAQueryExtension,
171 [ dnl *** If found...
172 AC_DEFINE(HAVE_LIBXXF86DGA2, 1,
173 [Define if you have the Xxf86dga library version 2])
174 X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
176 [ dnl *** If not found, look for XF86DGAQueryExtension()
177 dnl *** instead (DGA 2.0 not found)...
178 AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
179 [ AC_DEFINE(HAVE_LIBXXF86DGA, 1,
180 [Define if you have the Xxf86dga library version 1])
181 X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
183 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
186 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
189 AC_MSG_WARN([[DGA extension not found, Wine will be built without it]]),
190 [#include <X11/Xlib.h>])
192 dnl *** Check for XFree86 VMODE extension
193 AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,
194 [ dnl *** If X11/extensions/xf86vmode.h exists...
195 AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension,
196 [ AC_DEFINE(HAVE_LIBXXF86VM, 1, [Define if you have the Xxf86vm library])
197 X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm"
199 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
202 AC_MSG_WARN([[XFree86 VMODE extension not found, Wine will be built without it]]),
203 [#include <X11/Xlib.h>])
205 dnl *** Check for XVideo extension supporting XvImages
206 AC_CHECK_HEADERS(X11/extensions/Xvlib.h,
207 [ dnl *** If X11/extensions/Xvlib.h exists...
208 AC_CHECK_LIB(Xv, XvShmCreateImage,
209 [ AC_DEFINE(HAVE_XVIDEO, 1, [Define if the X libraries support XVideo])
210 X_PRE_LIBS="$X_PRE_LIBS -lXv"
212 $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
215 AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]]),
216 [#include <X11/Xlib.h>])
218 dnl *** Check for XRender include file
219 AC_CHECK_HEADERS(X11/extensions/Xrender.h,,,[#include <X11/Xlib.h>])
221 ) dnl *** End of X11/Xlib.h check
223 dnl Check for the presence of OpenGL
224 if test "x$enable_opengl" != "xno"
226 if test -f /usr/X11R6/lib/libGL.a -a ! -f /usr/X11R6/lib/libGL.so
228 AC_MSG_ERROR([/usr/X11R6/lib/libGL.a is present on your system.
229 This prevents linking to OpenGL. Delete the file and restart configure.])
232 AC_CHECK_HEADERS(GL/gl.h GL/glx.h)
233 if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
235 AC_CHECK_HEADERS(GL/glext.h,,,[#include <GL/glx.h>])
236 dnl Check for some problems due to old Mesa versions
237 AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_version_OK,
239 [#include <GL/gl.h>],
240 [GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
241 [wine_cv_opengl_version_OK="yes"],
242 [wine_cv_opengl_version_OK="no"]
246 dnl Check for the thread-safety of the OpenGL library
247 AC_CACHE_CHECK([for thread-safe OpenGL version],
248 wine_cv_opengl_version_threadsafe,
251 AC_TRY_LINK([],[pthread_getspecific();],
252 [wine_cv_opengl_version_threadsafe="yes"],
253 [wine_cv_opengl_version_threadsafe="no"])
257 if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o "x$enable_opengl" = "xyes" \)
259 dnl Check for the presence of the library
260 AC_CHECK_LIB(GL,glXCreateContext,
261 X_PRE_LIBS="$X_PRE_LIBS -lGL"
263 $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
265 if test "$ac_cv_lib_GL_glXCreateContext" = "yes"
267 OPENGLFILES='$(OPENGLFILES)'
268 AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])
270 AC_CHECK_LIB(GL,glXGetProcAddressARB,
271 AC_DEFINE(HAVE_GLX_GETPROCADDRESS, 1,
272 [Define if the OpenGL library supports the glXGetProcAddressARB call]),,
273 $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
275 if test "$ac_cv_lib_GL_glXGetProcAddressARB" = "yes"
277 AC_CACHE_CHECK([for OpenGL extension functions prototypes], wine_cv_extension_prototypes,
278 [AC_TRY_COMPILE([#include <GL/gl.h>
279 #ifdef HAVE_GL_GLEXT_H
280 # include <GL/glext.h>
283 [PFNGLCOLORTABLEEXTPROC test_proc;],
284 [wine_cv_extension_prototypes="yes"],
285 [wine_cv_extension_prototypes="no"]
288 if test "$wine_cv_extension_prototypes" = "yes"
290 AC_DEFINE(HAVE_GLEXT_PROTOTYPES, 1,
291 [Define if the OpenGL headers define extension typedefs])
296 dnl Check for GLU32 library.
297 AC_CHECK_LIB(GLU,gluLookAt,
298 [X_PRE_LIBS="$X_PRE_LIBS -lGLU"
299 GLU32FILES='$(GLU32FILES)']
301 $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
307 CPPFLAGS="$ac_save_CPPFLAGS"
315 dnl **** Check which curses lib to use ***
317 if test "x$with_curses" != "xno"
319 AC_CHECK_HEADERS(ncurses.h,
320 [AC_CHECK_LIB(ncurses,waddch,
321 [AC_DEFINE(HAVE_LIBNCURSES, 1, [Define if you have the ncurses library (-lncurses)])
322 CURSESLIBS="-lncurses"],
323 [AC_CHECK_HEADERS(curses.h,
324 [AC_CHECK_LIB(curses,waddch,
325 [AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have the curses library (-lcurses)])
326 CURSESLIBS="-lcurses"])])])])
328 LIBS="$CURSESLIBS $LIBS"
329 AC_CHECK_FUNCS(getbkgd resizeterm)
335 dnl **** Check for CUPS ****
336 wine_cv_warn_cups_h=no
337 AC_CHECK_LIB(cups,cupsGetPPD,
338 [AC_CHECK_HEADER(cups/cups.h,
339 [AC_DEFINE(HAVE_CUPS, 1, [Define if we have CUPS])
341 wine_cv_warn_cups_h=yes)]
345 dnl **** Check for SANE ****
346 AC_CHECK_PROG(sane_devel,sane-config,sane-config,no)
347 if test "$sane_devel" = "no"
352 SANELIBS="`$sane_devel --libs`"
353 SANEINCL="`$sane_devel --cflags`"
354 ac_save_CPPFLAGS="$CPPFLAGS"
356 CPPFLAGS="$CPPFLAGS $SANEINCL"
357 LIBS="$LIBS $SANELIBS"
358 AC_CHECK_HEADER(sane/sane.h,
359 [AC_CHECK_LIB(sane,sane_open,
360 [AC_DEFINE(HAVE_SANE, 1, [Define if we have SANE development environment])],
366 CPPFLAGS="$ac_save_CPPFLAGS"
371 dnl **** Check for FreeType 2 ****
372 AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
373 if test "$ft_lib" = "no"
376 wine_cv_msg_freetype=no
378 AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
379 if test "$ft_devel" = "no"
381 AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
382 if test "$ft_devel2" = "freetype2-config"
387 if test "$ft_devel" = "no"
390 wine_cv_msg_freetype=yes
392 FREETYPEINCL=`$ft_devel --cflags`
393 ac_save_CPPFLAGS="$CPPFLAGS"
394 CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
395 AC_CHECK_HEADERS(freetype/freetype.h \
397 freetype/tttables.h \
399 freetype/ftsnames.h \
400 freetype/ttnameid.h \
402 freetype/internal/sfnt.h)
403 AC_TRY_CPP([#include <ft2build.h>
404 #include <freetype/fttrigon.h>],
405 [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
406 [Define if you have the <freetype/fttrigon.h> header file.])
407 wine_cv_fttrigon=yes],
409 CPPFLAGS="$ac_save_CPPFLAGS"
410 dnl Check that we have at least freetype/freetype.h
411 if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
413 AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
414 wine_cv_msg_freetype=no
417 wine_cv_msg_freetype=yes
421 AC_SUBST(FREETYPEINCL)
423 dnl **** Check for parport (currently Linux only) ****
424 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
426 [#include <linux/ppdev.h>],
427 [ioctl (1,PPCLAIM,0)],
428 [ac_cv_c_ppdev="yes"],
429 [ac_cv_c_ppdev="no"])
431 if test "$ac_cv_c_ppdev" = "yes"
433 AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
436 dnl **** Check for IPX (currently Linux only) ****
437 AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
439 [#include <sys/socket.h>
440 #include <netipx/ipx.h>],
441 [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
442 [ac_cv_c_ipx_gnu="yes"],
443 [ac_cv_c_ipx_gnu="no"])
445 if test "$ac_cv_c_ipx_gnu" = "yes"
447 AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
450 if test "$ac_cv_c_ipx_gnu" = "no"
452 AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
454 [#include <sys/socket.h>
455 #include <asm/types.h>
456 #include <linux/ipx.h>],
457 [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
458 [ac_cv_c_ipx_linux="yes"],
459 [ac_cv_c_ipx_linux="no"])
461 if test "$ac_cv_c_ipx_linux" = "yes"
463 AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
467 dnl **** Check for Open Sound System ****
468 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
470 AC_CACHE_CHECK([for Open Sound System],
471 ac_cv_c_opensoundsystem,
473 #if defined(HAVE_SYS_SOUNDCARD_H)
474 #include <sys/soundcard.h>
475 #elif defined(HAVE_MACHINE_SOUNDCARD_H)
476 #include <machine/soundcard.h>
477 #elif defined(HAVE_SOUNDCARD_H)
478 #include <soundcard.h>
482 /* check for one of the Open Sound System specific SNDCTL_ defines */
483 #if !defined(SNDCTL_DSP_STEREO)
484 #error No open sound system
486 ],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))
488 if test "$ac_cv_c_opensoundsystem" = "yes"
490 AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
493 AC_CACHE_CHECK([for Open Sound System/MIDI interface],
494 ac_cv_c_opensoundsystem_midi,
496 #if defined(HAVE_SYS_SOUNDCARD_H)
497 #include <sys/soundcard.h>
498 #elif defined(HAVE_MACHINE_SOUNDCARD_H)
499 #include <machine/soundcard.h>
500 #elif defined(HAVE_SOUNDCARD_H)
501 #include <soundcard.h>
505 /* check for one of the Open Sound System specific SNDCTL_SEQ defines */
506 #if !defined(SNDCTL_SEQ_SYNC)
507 #error No open sound system MIDI interface
509 ],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))
511 if test "$ac_cv_c_opensoundsystem_midi" = "yes"
513 AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
516 dnl **** Check for aRts Sound Server ****
517 AC_PATH_PROG(ARTSCCONFIG, artsc-config)
518 AC_CACHE_CHECK([for aRts Sound server],
520 if test x$ARTSCCONFIG = x -o x$ARTSCCONFIG = x'"$ARTSCCONFIG"';
522 ac_cv_c_artsserver=no
524 ARTSC_CFLAGS=`$ARTSCCONFIG --cflags`
525 ARTSC_LIBS=`$ARTSCCONFIG --libs`
526 ac_cv_c_artsserver=no
527 save_CFLAGS="$CFLAGS"
528 CFLAGS="$CFLAGS $ARTSC_CFLAGS"
532 arts_stream_t stream;
534 ac_cv_c_artsserver=yes
536 CFLAGS="$save_CFLAGS"
539 if test "$ac_cv_c_artsserver" = "yes"
541 AC_SUBST(ARTSLIBS, $ARTSC_LIBS)
542 AC_SUBST(ARTSINCL, $ARTSC_CFLAGS)
544 AC_DEFINE(HAVE_ARTS, 1, [Define if you have ARTS sound server])
547 dnl **** Check for broken glibc mmap64 ****
549 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
551 #define _FILE_OFFSET_BITS 64
555 #include <sys/mman.h>
558 int main(int argc,char **argv) {
559 int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
560 if (fd == -1) exit(1);
562 unlink("conftest.map");
566 if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
572 fprintf(stderr,"success!\n");
577 ac_cv_mmap64_works="yes",
578 ac_cv_mmap64_works="no",
579 ac_cv_mmap64_works="no") )
581 if test "$ac_cv_mmap64_works" = "yes"
583 AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
586 dnl **** Check for gcc strength-reduce bug ****
588 if test "x${GCC}" = "xyes"
590 CFLAGS="$CFLAGS -Wall"
591 AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
593 int L[[4]] = {0,1,2,3};
595 static int Array[[3]];
598 for(i=0; i<B; i++) Array[[i]] = i - 3;
599 for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
602 exit( Array[[1]] != -2 || L[[2]] != 3);
604 ac_cv_c_gcc_strength_bug="no",
605 ac_cv_c_gcc_strength_bug="yes",
606 ac_cv_c_gcc_strength_bug="yes") )
607 if test "$ac_cv_c_gcc_strength_bug" = "yes"
609 CFLAGS="$CFLAGS -fno-strength-reduce"
612 dnl Check for -mpreferred-stack-boundary
613 AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support],
614 ac_cv_c_gcc_stack_boundary,
615 [saved_cflags=$CFLAGS
616 CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
617 AC_TRY_COMPILE(,[return 0],ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")
620 if test "$ac_cv_c_gcc_stack_boundary" = "yes"
622 CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
626 dnl **** Check if we need to place .type inside a .def directive ****
628 AC_CACHE_CHECK([whether .type must sit inside a .def directive],
631 LIBS="conftest_asm.s $LIBS"
632 cat > conftest_asm.s <<EOF
634 .def _ac_test; .scl 2; .type 32; .endef
638 AC_TRY_LINK(,,ac_cv_c_type_in_def="yes",ac_cv_c_type_in_def="no")
640 if test "$ac_cv_c_type_in_def" = "yes"
642 AC_DEFINE(NEED_TYPE_IN_DEF, 1, [Define if .type asm directive must be inside a .def directive])
645 dnl **** Check for underscore on external symbols ****
647 AC_CACHE_CHECK([whether external symbols need an underscore prefix],
648 ac_cv_c_extern_prefix,
650 LIBS="conftest_asm.s $LIBS"
651 cat > conftest_asm.s <<EOF
656 AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
657 ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
659 if test "$ac_cv_c_extern_prefix" = "yes"
661 AC_DEFINE(NEED_UNDERSCORE_PREFIX, 1,
662 [Define if symbols declared in assembly code need an underscore prefix])
665 dnl **** Check whether stdcall symbols need to be decorated ****
667 AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
668 ac_cv_c_stdcall_decoration,
670 LIBS="conftest_asm.s $LIBS"
671 if test "$ac_cv_c_extern_prefix" = "yes"
673 cat > conftest_asm.s <<EOF
678 cat > conftest_asm.s <<EOF
683 AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
684 [ac_test(); return 0],
685 ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
687 if test "$ac_cv_c_stdcall_decoration" = "yes"
689 AC_DEFINE(NEED_STDCALL_DECORATION, 1,
690 [Define if stdcall symbols need to be decorated])
693 dnl **** Check for .string in assembler ****
695 AC_CACHE_CHECK([whether assembler accepts .string],
698 LIBS="conftest_asm.s $LIBS"
699 cat > conftest_asm.s <<EOF
702 AC_TRY_LINK(,,ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no")
704 if test "$ac_cv_c_asm_string" = "yes"
706 AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
709 dnl **** Check for working dll ****
713 if test "$LIBEXT" = "so"
715 AC_CACHE_CHECK([whether we can build a GNU style ELF dll],
717 [saved_cflags=$CFLAGS
718 CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
719 AC_TRY_LINK(,[return 1],ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")
722 if test "$ac_cv_c_dll_gnuelf" = "yes"
724 LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
725 LDDLLFLAGS="-Wl,-Bsymbolic"
727 AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll,
728 ac_cv_c_dll_unixware,
729 [saved_cflags=$CFLAGS
730 CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
731 AC_TRY_LINK(,[return 1],ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")
734 if test "$ac_cv_c_dll_unixware" = "yes"
736 LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
737 LDDLLFLAGS="-Wl,-B,symbolic"
740 if test "$ac_cv_c_dll_gnuelf" = "no" -a "$ac_cv_c_dll_unixware" = "no"
743 AC_CHECK_PROG(DLLWRAP,dllwrap,dllwrap,false)
744 if test "$DLLWRAP" = "dllwrap"; then
745 dnl FIXME - check whether dllwrap works correctly...
755 if test "$LIBEXT" = "a"; then
757 [could not find a way to build shared libraries.
758 It is currently not possible to build Wine without shared library
759 (.so) support to allow transparent switch between .so and .dll files.
760 If you are using Linux, you will need a newer binutils.]
767 if test "$LIBEXT" = "so"; then
770 LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/library:\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
771 elif test "$LIBEXT" = "dll"; then
772 #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
774 LDPATH="PATH=\"\$(TOPOBJDIR)/library:\$(TOPOBJDIR)/unicode:\$\$PATH\""
784 dnl **** Check for reentrant libc ****
786 dnl For cross-compiling we blindly assume that libc is reentrant. This is
787 dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).
789 AC_DEFUN([WINE_CHECK_ERRNO],
791 AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
792 [AC_TRY_RUN([int myerrno = 0;
794 int *$1(){return &myerrno;}
795 main(){connect(0,buf,255); exit(!myerrno);}],
796 wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
797 wine_cv_libc_r_$1=yes )
799 if test "$wine_cv_libc_r_$1" = "yes"
801 wine_cv_libc_reentrant=$1
805 wine_cv_libc_reentrant=no
806 dnl Linux style errno location
807 WINE_CHECK_ERRNO(__errno_location)
808 dnl FreeBSD style errno location
809 WINE_CHECK_ERRNO(__error)
810 dnl Solaris style errno location
811 WINE_CHECK_ERRNO(___errno)
812 dnl UnixWare style errno location
813 WINE_CHECK_ERRNO(__thr_errno)
814 dnl NetBSD style errno location
815 WINE_CHECK_ERRNO(__errno)
817 if test "$wine_cv_libc_reentrant" != "no"
819 AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
820 [Define to the name of the function returning errno for reentrant libc])
823 dnl **** Check for reentrant X libraries ****
825 dnl This may fail to determine whether X libraries are reentrant if
826 dnl AC_PATH_XTRA does not set x_libraries.
828 if test "$have_x" = "yes"
830 AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
832 for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
833 if test -r $dir/libX11.so; then
834 libX11_check="-D $dir/libX11.so"
837 if test -r $dir/libX11.a; then
838 libX11_check="$dir/libX11.a"
842 if test "$libX11_check" != "none"; then
843 if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
845 wine_cv_x_reentrant=yes
847 wine_cv_x_reentrant=no
850 wine_cv_x_reentrant=unknown
854 dnl **** Check for functions ****
902 dnl **** Check for header files ****
971 dnl **** Check for types ****
975 AC_CHECK_TYPES([mode_t, off_t, pid_t, size_t, ssize_t])
976 AC_CHECK_SIZEOF(long long,0)
978 AC_CACHE_CHECK([whether linux/input.h is for real],
979 wine_cv_linux_input_h,
981 #include <linux/input.h>
983 int foo = EVIOCGBIT(EV_ABS,42);
984 int bar = BTN_PINKIE;
987 wine_cv_linux_input_h=yes,
988 wine_cv_linux_input_h=no,
992 if test "$wine_cv_linux_input_h" = "yes"
994 AC_DEFINE(HAVE_CORRECT_LINUXINPUT_H, 1,
995 [Define if we have linux/input.h AND it contains the INPUT event API])
999 AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
1000 wine_cv_linux_gethostbyname_r_6,
1006 struct hostent *result;
1013 res=gethostbyname_r(name,&he,buf,bufsize,&result,&errnr);
1014 res=gethostbyaddr_r(addr, addrlen, addrtype,&he,buf,bufsize,&result,&errnr);
1016 wine_cv_linux_gethostbyname_r_6=yes,
1017 wine_cv_linux_gethostbyname_r_6=no
1020 if test "$wine_cv_linux_gethostbyname_r_6" = "yes"
1022 AC_DEFINE(HAVE_LINUX_GETHOSTBYNAME_R_6, 1,
1023 [Define if Linux-style gethostbyname_r and gethostbyaddr_r are available])
1026 if test "$ac_cv_header_linux_joystick_h" = "yes"
1028 AC_CACHE_CHECK([whether linux/joystick.h uses the Linux 2.2+ API],
1029 wine_cv_linux_joystick_22_api,
1031 #include <sys/ioctl.h>
1032 #include <linux/joystick.h>
1034 struct js_event blub;
1035 #if !defined(JS_EVENT_AXIS) || !defined(JS_EVENT_BUTTON)
1036 #error "no 2.2 header"
1039 wine_cv_linux_joystick_22_api=yes,
1040 wine_cv_linux_joystick_22_api=no,
1041 wine_cv_linux_joystick_22_api=no
1044 if test "$wine_cv_linux_joystick_22_api" = "yes"
1046 AC_DEFINE(HAVE_LINUX_22_JOYSTICK_API, 1,
1047 [Define if <linux/joystick.h> defines the Linux 2.2 joystick API])
1051 dnl **** statfs checks ****
1053 if test "$ac_cv_header_sys_vfs_h" = "yes"
1055 AC_CACHE_CHECK( [whether sys/vfs.h defines statfs],
1056 wine_cv_sys_vfs_has_statfs,
1058 #include <sys/types.h>
1059 #ifdef HAVE_SYS_PARAM_H
1060 # include <sys/param.h>
1062 #include <sys/vfs.h>
1066 memset(&stfs,0,sizeof(stfs));
1067 ],wine_cv_sys_vfs_has_statfs=yes,wine_cv_sys_vfs_has_statfs=no
1070 if test "$wine_cv_sys_vfs_has_statfs" = "yes"
1072 AC_DEFINE(STATFS_DEFINED_BY_SYS_VFS, 1,
1073 [Define if the struct statfs is defined by <sys/vfs.h>])
1077 if test "$ac_cv_header_sys_statfs_h" = "yes"
1079 AC_CACHE_CHECK( [whether sys/statfs.h defines statfs],
1080 wine_cv_sys_statfs_has_statfs,
1082 #include <sys/types.h>
1083 #ifdef HAVE_SYS_PARAM_H
1084 # include <sys/param.h>
1086 #include <sys/statfs.h>
1089 ],wine_cv_sys_statfs_has_statfs=yes,wine_cv_sys_statfs_has_statfs=no
1092 if test "$wine_cv_sys_statfs_has_statfs" = "yes"
1094 AC_DEFINE(STATFS_DEFINED_BY_SYS_STATFS, 1,
1095 [Define if the struct statfs is defined by <sys/statfs.h>])
1099 if test "$ac_cv_header_sys_mount_h" = "yes"
1101 AC_CACHE_CHECK( [whether sys/mount.h defines statfs],
1102 wine_cv_sys_mount_has_statfs,
1104 #include <sys/types.h>
1105 #ifdef HAVE_SYS_PARAM_H
1106 # include <sys/param.h>
1108 #include <sys/mount.h>
1111 ],wine_cv_sys_mount_has_statfs=yes,wine_cv_sys_mount_has_statfs=no
1114 if test "$wine_cv_sys_mount_has_statfs" = "yes"
1116 AC_DEFINE(STATFS_DEFINED_BY_SYS_MOUNT, 1,
1117 [Define if the struct statfs is defined by <sys/mount.h>])
1121 dnl *** Check for some structure members
1123 dnl Macro to check if a structure contains a specified member
1124 dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]])
1126 AC_DEFUN([WINE_CHECK_STRUCT_MEMBER],
1127 [AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2,
1128 AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no"))
1129 AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5])
1132 dnl **** FIXME: what about mixed cases, where we need two of them? ***
1134 WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree,
1135 [#include <sys/types.h>
1136 #ifdef HAVE_SYS_PARAM_H
1137 # include <sys/param.h>
1139 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1140 # include <sys/mount.h>
1142 # ifdef STATFS_DEFINED_BY_SYS_VFS
1143 # include <sys/vfs.h>
1145 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1146 # include <sys/statfs.h>
1150 [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])])
1152 WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail,
1153 [#include <sys/types.h>
1154 #ifdef HAVE_SYS_PARAM_H
1155 # include <sys/param.h>
1157 #ifdef STATFS_DEFINED_BY_SYS_MOUNT
1158 # include <sys/mount.h>
1160 # ifdef STATFS_DEFINED_BY_SYS_VFS
1161 # include <sys/vfs.h>
1163 # ifdef STATFS_DEFINED_BY_SYS_STATFS
1164 # include <sys/statfs.h>
1168 [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])])
1170 dnl Check for file descriptor passing with msg_accrights
1171 WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights,
1172 [#include <sys/types.h>
1173 #include <sys/socket.h>],
1174 [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])])
1176 dnl Check for the sa_len member in struct sockaddr
1177 WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len,
1178 [#include <sys/types.h>
1179 #include <sys/socket.h>],
1180 [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])])
1182 dnl Check for the sun_len member in struct sockaddr_un
1183 WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len,
1184 [#include <sys/types.h>
1185 #include <sys/socket.h>
1186 #include <sys/un.h>],
1187 [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])])
1189 dnl *** check for the need to define __i386__
1193 AC_CACHE_CHECK([whether we need to define __i386__],ac_cv_cpp_def_i386,
1194 AC_EGREP_CPP(yes,[#ifndef __i386__
1197 ac_cv_cpp_def_i386="yes", ac_cv_cpp_def_i386="no"))
1200 if test "$ac_cv_cpp_def_i386" = "yes"
1202 CFLAGS="$CFLAGS -D__i386__"
1203 LINTFLAGS="$LINTFLAGS -D__i386__"
1206 dnl **** Generate output files ****
1208 dnl Macro to create non-existent directories from config.status
1209 dnl Usage: WINE_CONFIG_EXTRA_DIR(dirname)
1210 AC_DEFUN([WINE_CONFIG_EXTRA_DIR],
1211 [AC_CONFIG_COMMANDS([$1],[test -d "$1" || (AC_MSG_NOTICE([creating $1]) && mkdir "$1")])])
1213 AH_TOP([#define __WINE_CONFIG_H])
1215 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/d3ddevice)
1216 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dclipper)
1217 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/ddraw)
1218 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/direct3d)
1219 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dpalette)
1220 WINE_CONFIG_EXTRA_DIR(dlls/ddraw/dsurface)
1221 WINE_CONFIG_EXTRA_DIR(dlls/dinput/joystick)
1222 WINE_CONFIG_EXTRA_DIR(dlls/dinput/keyboard)
1223 WINE_CONFIG_EXTRA_DIR(dlls/dinput/mouse)
1224 WINE_CONFIG_EXTRA_DIR(dlls/gdi/enhmfdrv)
1225 WINE_CONFIG_EXTRA_DIR(dlls/gdi/mfdrv)
1226 WINE_CONFIG_EXTRA_DIR(dlls/gdi/win16drv)
1227 WINE_CONFIG_EXTRA_DIR(dlls/kernel/messages)
1228 WINE_CONFIG_EXTRA_DIR(dlls/kernel/tests)
1229 WINE_CONFIG_EXTRA_DIR(dlls/oleaut32/tests)
1230 WINE_CONFIG_EXTRA_DIR(dlls/user/dde)
1231 WINE_CONFIG_EXTRA_DIR(dlls/user/resources)
1232 WINE_CONFIG_EXTRA_DIR(dlls/user/tests)
1233 WINE_CONFIG_EXTRA_DIR(dlls/wineps/data)
1234 WINE_CONFIG_EXTRA_DIR(dlls/winsock/tests)
1235 WINE_CONFIG_EXTRA_DIR(include/wine)
1236 WINE_CONFIG_EXTRA_DIR(programs/regapi/tests)
1237 WINE_CONFIG_EXTRA_DIR(programs/winetest/tests)
1239 MAKE_RULES=Make.rules
1240 AC_SUBST_FILE(MAKE_RULES)
1242 MAKE_DLL_RULES=dlls/Makedll.rules
1243 AC_SUBST_FILE(MAKE_DLL_RULES)
1245 MAKE_PROG_RULES=programs/Makeprog.rules
1246 AC_SUBST_FILE(MAKE_PROG_RULES)
1251 programs/Makeprog.rules
1256 dlls/advapi32/Makefile
1257 dlls/avicap32/Makefile
1258 dlls/avifil32/Makefile
1259 dlls/comctl32/Makefile
1260 dlls/commdlg/Makefile
1261 dlls/crtdll/Makefile
1262 dlls/crypt32/Makefile
1263 dlls/dciman32/Makefile
1265 dlls/devenum/Makefile
1266 dlls/dinput/Makefile
1268 dlls/dplayx/Makefile
1269 dlls/dsound/Makefile
1273 dlls/imagehlp/Makefile
1275 dlls/kernel/Makefile
1276 dlls/lzexpand/Makefile
1277 dlls/mapi32/Makefile
1280 dlls/msacm/imaadp32/Makefile
1281 dlls/msacm/msg711/Makefile
1283 dlls/msimg32/Makefile
1284 dlls/msisys/Makefile
1285 dlls/msnet32/Makefile
1286 dlls/msrle32/Makefile
1287 dlls/msvcrt/Makefile
1288 dlls/msvcrt20/Makefile
1289 dlls/msvideo/Makefile
1290 dlls/netapi32/Makefile
1292 dlls/odbc32/Makefile
1294 dlls/oleaut32/Makefile
1295 dlls/olecli/Makefile
1296 dlls/oledlg/Makefile
1297 dlls/olepro32/Makefile
1298 dlls/olesvr/Makefile
1299 dlls/opengl32/Makefile
1302 dlls/quartz/Makefile
1303 dlls/rasapi32/Makefile
1304 dlls/richedit/Makefile
1305 dlls/rpcrt4/Makefile
1306 dlls/serialui/Makefile
1307 dlls/setupapi/Makefile
1308 dlls/shdocvw/Makefile
1309 dlls/shell32/Makefile
1310 dlls/shfolder/Makefile
1311 dlls/shlwapi/Makefile
1312 dlls/snmpapi/Makefile
1314 dlls/tapi32/Makefile
1315 dlls/ttydrv/Makefile
1318 dlls/urlmon/Makefile
1320 dlls/version/Makefile
1321 dlls/win32s/Makefile
1322 dlls/winaspi/Makefile
1323 dlls/winedos/Makefile
1324 dlls/wineps/Makefile
1325 dlls/wininet/Makefile
1327 dlls/winmm/joystick/Makefile
1328 dlls/winmm/mcianim/Makefile
1329 dlls/winmm/mciavi/Makefile
1330 dlls/winmm/mcicda/Makefile
1331 dlls/winmm/mciseq/Makefile
1332 dlls/winmm/mciwave/Makefile
1333 dlls/winmm/midimap/Makefile
1334 dlls/winmm/wavemap/Makefile
1335 dlls/winmm/winearts/Makefile
1336 dlls/winmm/wineoss/Makefile
1337 dlls/winnls/Makefile
1338 dlls/winsock/Makefile
1339 dlls/winspool/Makefile
1340 dlls/wintrust/Makefile
1342 dlls/wsock32/Makefile
1343 dlls/x11drv/Makefile
1344 documentation/Makefile
1347 graphics/x11drv/Makefile
1361 programs/avitools/Makefile
1362 programs/clock/Makefile
1363 programs/cmdlgtst/Makefile
1364 programs/control/Makefile
1365 programs/notepad/Makefile
1366 programs/osversioncheck/Makefile
1367 programs/progman/Makefile
1368 programs/regapi/Makefile
1369 programs/regedit/Makefile
1370 programs/regsvr32/Makefile
1371 programs/regtest/Makefile
1372 programs/uninstaller/Makefile
1373 programs/view/Makefile
1374 programs/wcmd/Makefile
1375 programs/wineconsole/Makefile
1376 programs/winemine/Makefile
1377 programs/winetest/Makefile
1378 programs/winhelp/Makefile
1379 programs/winver/Makefile
1384 tools/winapi/Makefile
1385 tools/winebuild/Makefile
1386 tools/winedump/Makefile
1396 if test "$have_x" = "no"
1399 echo "*** Warning: X development files not found. Wine will be built without"
1400 echo "*** X support, which currently does not work, and would probably not be"
1401 echo "*** what you want anyway. You will need to install devel packages of"
1402 echo "*** Xlib/Xfree86 at the very least."
1405 if test "$ac_cv_lib_ncurses_resizeterm" = "no" -a "$ac_cv_lib_ncurses_waddch" = "yes"
1408 echo "*** Warning: resizeterm not found in ncurses. Wine will be built without"
1409 echo "*** terminal resize support. Consider upgrading ncurses."
1412 if test "$wine_cv_libc_reentrant" = "no"
1415 echo "*** Warning: non-reentrant libc detected. Wine will be built without"
1416 echo "*** threading support. Consider upgrading libc to a more recent"
1417 echo "*** reentrant version of libc."
1420 if test "$have_x" = "yes" -a "$wine_cv_x_reentrant" != "yes"
1423 echo "*** Warning: non-reentrant X11 library detected. Multi-threaded"
1424 echo "*** applications won't work properly. You should upgrade your X11 library."
1427 if test "$wine_cv_opengl_version_OK" = "no"
1430 echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
1431 echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
1434 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "x"
1437 echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
1438 echo "*** thread-safety. To prevent crashes, OpenGL support has been removed."
1439 echo "*** A fix for glibc 2.1.3 that seems to work is included in this version of Wine,"
1440 echo "*** start configure with '--enable-opengl' to force OpenGL support."
1443 if test "$wine_cv_opengl_version_threadsafe" = "yes" -a "x$enable_opengl" = "xyes"
1446 echo "*** Warning: you explicitly linked in a thread-safe OpenGL version. If you"
1447 echo "*** experience unusual crashes on DirectDraw games, try first to disable OpenGL"
1448 echo "*** support before reporting bugs."
1451 if test "$wine_cv_warn_cups_h" = "yes"
1454 echo "*** Note: You have cups runtime libraries, but no development"
1455 echo "*** libraries. Install the cups-devel package or whichever package"
1456 echo "*** contains cups.h to enable CUPS support in Wine."
1459 if test "$wine_cv_msg_freetype" = "yes"
1462 echo "*** Note: Your system appears to have the FreeType 2 runtime libraries"
1463 echo "*** installed, but 'freetype-config' is not in your PATH. Install the"
1464 echo "*** freetype-devel package (or its equivalent on your distribution) to"
1465 echo "*** enable Wine to use TrueType fonts."
1469 echo "Configure finished. Do 'make depend && make' to compile Wine."
1472 dnl Local Variables:
1473 dnl comment-start: "dnl "
1475 dnl comment-start-skip: "\\bdnl\\b\\s *"
1476 dnl compile-command: "autoconf"