dnl Process this file with autoconf to produce a configure script.
dnl Original author: Michael Patra
dnl See ChangeLog file for detailed change history.
m4_define(WINE_VERSION,regexp(m4_include(VERSION),[version \([-.0-9A-Za-z]+\)],[\1]))
AC_PREREQ(2.53b)
AC_INIT([Wine],[WINE_VERSION],[wine-devel@winehq.org])
AC_CONFIG_SRCDIR(server/atom.c)
AC_CONFIG_HEADERS(include/config.h)
AC_CONFIG_AUX_DIR(tools)
dnl **** Command-line arguments ****
AC_ARG_ENABLE(win16, AS_HELP_STRING([--disable-win16],[do not include Win16 support]))
AC_ARG_ENABLE(win64, AS_HELP_STRING([--enable-win64],[build a Win64 emulator on AMD64 (won't run Win32 binaries)]))
AC_ARG_WITH(opengl, AS_HELP_STRING([--without-opengl],[do not use OpenGL]))
AC_ARG_WITH(wine-tools,AS_HELP_STRING([--with-wine-tools=
],[use Wine tools from directory ]))
AC_CANONICAL_HOST
case $host in
x86_64*linux*)
if test "x$enable_win64" != "xyes"
then
test -n "$CC" || CC="gcc -m32"
test -n "$LD" || LD="ld -m elf_i386"
test -n "$AS" || AS="as --32"
host_cpu="i386"
fi
;;
esac
dnl enable_win16 defaults to yes on x86, to no on other CPUs
case $host_cpu in
*i[[3456789]]86*)
if test "x$enable_win16" != "xno"
then
enable_win16="yes"
fi
;;
esac
AC_SUBST(WIN16_FILES,"\$(WIN16_FILES)")
AC_SUBST(WIN16_INSTALL,"\$(WIN16_INSTALL)")
if test "x$enable_win16" != "xyes"
then
WIN16_FILES=""
WIN16_INSTALL=""
fi
dnl check for out of tree build with unclean source tree
case "$srcdir" in
.) ;;
*) if test -f "$srcdir/Makefile" -o -f "$srcdir/include/config.h"; then
AC_MSG_ERROR([you are building out of the source tree, but the source tree contains object files.
You need to run 'make distclean' in the source tree first.])
fi ;;
esac
dnl **** Check for some programs ****
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_CXX
dnl We can't use AC_PROG_CPP for winegcc, it uses by default $(CC) -E
AC_CHECK_TOOL(CPPBIN,cpp,cpp)
AC_CACHE_CHECK([for the directory containing the Wine tools], wine_cv_toolsdir,
[if test -z "$with_wine_tools"; then
if test "$cross_compiling" = "yes"; then
AC_MSG_ERROR([you must use the --with-wine-tools option when cross-compiling.])
else
wine_cv_toolsdir="\$(TOPOBJDIR)"
fi
elif test -d "$with_wine_tools/tools/winebuild"; then
case $with_wine_tools in
/*) wine_cv_toolsdir="$with_wine_tools" ;;
*) wine_cv_toolsdir="\$(TOPOBJDIR)/$with_wine_tools" ;;
esac
else
AC_MSG_ERROR([could not find Wine tools in $with_wine_tools.])
fi])
AC_SUBST(TOOLSDIR,$wine_cv_toolsdir)
AC_PATH_XTRA
dnl Check for flex
AC_CHECK_PROGS(FLEX,flex,none)
if test "$FLEX" = "none"
then
AC_MSG_ERROR([no suitable flex found. Please install the 'flex' package.])
fi
dnl Check for bison
AC_CHECK_PROGS(BISON,bison,none)
if test "$BISON" = "none"
then
AC_MSG_ERROR([no suitable bison found. Please install the 'bison' package.])
fi
AC_CHECK_TOOLS(AS,[gas as],as)
AC_CHECK_TOOL(LD,ld,ld)
AC_CHECK_TOOL(AR,ar,ar)
AC_PROG_RANLIB
AC_CHECK_TOOL(STRIP,strip,strip)
AC_CHECK_TOOL(WINDRES,windres,false)
AC_PROG_LN_S
WINE_PROG_LN
AC_PROG_EGREP
AC_PATH_PROG(LDCONFIG, ldconfig, true, [/sbin /usr/sbin $PATH])
AC_PROG_INSTALL
dnl Prepend src dir to install path dir if it's a relative path
case "$INSTALL" in
[[\\/$]]* | ?:[[\\/]]* ) ;;
*) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
esac
dnl Check for lint
AC_CHECK_PROGS(LINT, lclint lint)
if test "$LINT" = "lint"
then
LINTFLAGS="$LINTFLAGS -errchk=%all,no%longptr64 -errhdr=%user -Ncheck=macro -Nlevel=4"
dnl LINTFLAGS='-D_SIZE_T "-Dsize_t=unsigned long" -errchk=longptr64'
fi
AC_SUBST(LINT)
AC_SUBST(LINTFLAGS)
dnl Check for various programs
AC_CHECK_PROGS(FONTFORGE, fontforge, false)
AC_CHECK_PROGS(PKG_CONFIG, pkg-config, false)
case $host_cpu in
*i[[3456789]]86*)
AC_PATH_PROG(PRELINK, prelink, false, [/sbin /usr/sbin $PATH])
;;
esac
dnl **** Check for some libraries ****
dnl Check for -li386 for NetBSD and OpenBSD
AC_CHECK_LIB(i386,i386_set_ldt)
dnl Check for -lossaudio for NetBSD
AC_CHECK_LIB(ossaudio,_oss_ioctl)
dnl Check for -lxpg4 for FreeBSD
AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
dnl Check for -lpthread
AC_CHECK_LIB(pthread,pthread_create,AC_SUBST(LIBPTHREAD,"-lpthread"))
AC_SUBST(XLIB,"")
AC_SUBST(XFILES,"")
AC_SUBST(OPENGLFILES,"")
AC_SUBST(GLU32FILES,"")
AC_SUBST(OPENGL_LIBS,"")
AC_SUBST(QUARTZFILES,"")
dnl **** Check for header files ****
AC_CHECK_HEADERS(\
AudioUnit/AudioUnit.h \
Carbon/Carbon.h \
CoreAudio/CoreAudio.h \
DiskArbitration/DiskArbitration.h \
IOKit/IOKitLib.h \
alsa/asoundlib.h \
arpa/inet.h \
arpa/nameser.h \
asm/types.h \
capi20.h \
cups/cups.h \
curses.h \
direct.h \
dlfcn.h \
elf.h \
float.h \
fontconfig/fontconfig.h \
getopt.h \
ieeefp.h \
io.h \
jack/jack.h \
jpeglib.h \
lber.h \
lcms.h \
lcms/lcms.h \
ldap.h \
libaudioio.h \
link.h \
linux/cdrom.h \
linux/compiler.h \
linux/hdreg.h \
linux/input.h \
linux/ioctl.h \
linux/joystick.h \
linux/major.h \
linux/param.h \
linux/serial.h \
linux/ucdrom.h \
mach/mach.h \
mach/machine.h \
machine/cpu.h \
machine/limits.h \
machine/soundcard.h \
mntent.h \
ncurses.h \
netdb.h \
netinet/in.h \
netinet/in_systm.h \
netinet/tcp.h \
netinet/tcp_fsm.h \
openssl/err.h \
openssl/ssl.h \
poll.h \
process.h \
pthread.h \
pwd.h \
regex.h \
sched.h \
scsi/scsi.h \
scsi/scsi_ioctl.h \
scsi/sg.h \
soundcard.h \
stdint.h \
strings.h \
sys/asoundlib.h \
sys/cdio.h \
sys/elf32.h \
sys/epoll.h \
sys/errno.h \
sys/event.h \
sys/exec_elf.h \
sys/filio.h \
sys/ioctl.h \
sys/ipc.h \
sys/limits.h \
sys/link.h \
sys/lwp.h \
sys/mman.h \
sys/modem.h \
sys/msg.h \
sys/mtio.h \
sys/param.h \
sys/poll.h \
sys/prctl.h \
sys/ptrace.h \
sys/reg.h \
sys/resource.h \
sys/scsiio.h \
sys/shm.h \
sys/signal.h \
sys/socket.h \
sys/sockio.h \
sys/soundcard.h \
sys/statvfs.h \
sys/strtio.h \
sys/syscall.h \
sys/sysctl.h \
sys/time.h \
sys/times.h \
sys/uio.h \
sys/un.h \
sys/vm86.h \
sys/wait.h \
syscall.h \
termios.h \
unicode/ubidi.h \
unistd.h \
utime.h \
valgrind/memcheck.h
)
AC_HEADER_STAT()
dnl **** Checks for headers that depend on other ones ****
AC_CHECK_HEADERS([sys/mount.h sys/statfs.h sys/user.h sys/vfs.h],,,
[#include
#if HAVE_SYS_PARAM_H
# include
#endif])
AC_CHECK_HEADERS([net/if.h net/if_arp.h net/if_dl.h net/if_types.h net/route.h netipx/ipx.h],,,
[#include
#if HAVE_SYS_SOCKET_H
# include
#endif])
AC_CHECK_HEADERS([linux/ipx.h],,,
[#include
#ifdef HAVE_ASM_TYPES_H
# include
#endif
#if HAVE_SYS_SOCKET_H
# include
#endif])
AC_CHECK_HEADERS([resolv.h],,,
[#include
#if HAVE_SYS_SOCKET_H
# include
#endif
#if HAVE_NETINET_IN_H
# include
#endif
#if HAVE_ARPA_NAMESER_H
# include
#endif])
AC_CHECK_HEADERS(ucontext.h,,,[#include ])
AC_CHECK_HEADERS([pthread_np.h],,,
[#ifdef HAVE_PTHREAD_H
#include
#endif])
AC_CHECK_HEADERS([linux/videodev.h],,,
[#ifdef HAVE_SYS_TIME_H
#include
#endif
#include
#ifdef HAVE_ASM_TYPES_H
#include
#endif])
dnl Check for broken kernel header that doesn't define __user
AC_CHECK_HEADERS([linux/capi.h],,,[#define __user])
dnl **** Check for working dll ****
AC_SUBST(DLLEXT,"")
AC_SUBST(DLLFLAGS,"-D_REENTRANT")
AC_SUBST(LDSHARED,"")
AC_SUBST(LDDLLFLAGS,"")
AC_SUBST(LIBEXT,"so")
AC_SUBST(IMPLIBEXT,"def")
AC_SUBST(LDRPATH_INSTALL,"")
AC_SUBST(LDRPATH_LOCAL,"")
WINE_PATH_LDD
case $host_os in
cygwin*|mingw32*)
AC_CHECK_TOOL(DLLTOOL,dlltool,false)
AC_CHECK_TOOL(DLLWRAP,dllwrap,false)
AC_CHECK_TOOL(MINGWAR,ar,false)
if test "$DLLWRAP" = "false"; then
LIBEXT="a"
else
dnl FIXME - check whether dllwrap works correctly...
LIBEXT="dll"
fi
IMPLIBEXT="a"
dnl We can't build 16-bit NE dlls
WIN16_FILES=""
WIN16_INSTALL=""
;;
darwin*|macosx*)
DLLEXT=".so"
LIBEXT="dylib"
DLLFLAGS="$DLLFLAGS -fPIC"
LDDLLFLAGS="-bundle -multiply_defined suppress"
LIBWINE_LDFLAGS="-multiply_defined suppress"
LDSHARED="\$(CC) -dynamiclib"
STRIP="$STRIP -x"
LDRPATH_LOCAL="&& install_name_tool -change @executable_path/\`\$(RELPATH) \$(bindir) \$(libdir)\`/libwine.1.dylib @executable_path/\$(TOPOBJDIR)/libs/wine/libwine.1.dylib \$@ || \$(RM) \$@"
dnl declare needed frameworks
AC_SUBST(COREFOUNDATIONLIB,"-framework CoreFoundation")
AC_SUBST(IOKITLIB,"-framework IOKit -framework CoreFoundation")
AC_SUBST(LDEXECFLAGS,["-image_base 0x7bf00000 -Wl,-segaddr,WINE_DOS,0x00000000,-segaddr,WINE_SHARED_HEAP,0x7f000000"])
if test "$ac_cv_header_DiskArbitration_DiskArbitration_h" = "yes"
then
dnl DiskArbitration API is not public on Darwin < 8.0, use it only if header found
AC_SUBST(DISKARBITRATIONLIB,"-framework DiskArbitration -framework CoreFoundation")
fi
if test "$ac_cv_header_CoreAudio_CoreAudio_h" = "yes" -a "$ac_cv_header_AudioUnit_AudioUnit_h" = "yes"
then
dnl CoreServices needed by AudioUnit
AC_SUBST(COREAUDIO,"-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI")
fi
case $host_cpu in
*powerpc*)
LDDLLFLAGS="$LDDLLFLAGS -read_only_relocs warning" dnl FIXME
;;
esac
dnl Enable quartz driver on Mac OS X
if test "$ac_cv_header_Carbon_Carbon_h" = "yes"
then
AC_SUBST(CARBONLIB,"-framework Carbon")
QUARTZFILES='$(QUARTZFILES)'
fi
;;
*)
DLLFLAGS="$DLLFLAGS -fPIC"
DLLEXT=".so"
AC_CACHE_CHECK([whether we can build a GNU style ELF dll], ac_cv_c_dll_gnuelf,
[WINE_TRY_SHLIB_FLAGS([-fPIC -shared -Wl,-Bsymbolic],
ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")])
if test "$ac_cv_c_dll_gnuelf" = "yes"
then
LDSHARED="\$(CC) -shared"
LDDLLFLAGS="-shared -Wl,-Bsymbolic"
WINE_TRY_CFLAGS([-fPIC -shared -Wl,-soname,confest.so.1],
[LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"],
[WINE_TRY_CFLAGS([-fPIC -shared -Wl,-h,confest.so.1],
[LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-h,%)"])])
WINE_TRY_CFLAGS([-fPIC -shared -Wl,-Bsymbolic,-z,defs], [LDDLLFLAGS="$LDDLLFLAGS,-z,defs"])
WINE_TRY_CFLAGS([-fPIC -shared -Wl,-Bsymbolic,-init,__wine_spec_init,-fini,__wine_spec_fini],
[LDDLLFLAGS="$LDDLLFLAGS,-init,__wine_spec_init,-fini,__wine_spec_fini"])
echo '{ global: *; };' >conftest.map
WINE_TRY_CFLAGS([-fPIC -shared -Wl,--version-script=conftest.map],
[LDSHARED="$LDSHARED \$(VERSCRIPT:%=-Wl,--version-script=%)"])
rm -f conftest.map
WINE_TRY_CFLAGS([-fPIC -Wl,--export-dynamic],
[AC_SUBST(LDEXECFLAGS,["-Wl,--export-dynamic"])])
WINE_TRY_CFLAGS([-fPIC -Wl,--rpath,\$ORIGIN/../lib],
[LDRPATH_INSTALL="-Wl,--rpath,\\\$\$ORIGIN/\`\$(RELPATH) \$(bindir) \$(libdir)\`"
LDRPATH_LOCAL="-Wl,--rpath,\\\$\$ORIGIN/\$(TOPOBJDIR)/libs/wine"],
[WINE_TRY_CFLAGS([-fPIC -Wl,-R,\$ORIGIN/../lib],
[LDRPATH_INSTALL="-Wl,-R,\\\$\$ORIGIN/\`\$(RELPATH) \$(bindir) \$(libdir)\`"
LDRPATH_LOCAL="-Wl,-R,\\\$\$ORIGIN/\$(TOPOBJDIR)/libs/wine"])])
case $host_cpu in
*i[[3456789]]86* | x86_64)
WINE_TRY_CFLAGS([-Wl,--section-start,.interp=0x7bf00400],
[LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x7bf00400"])
;;
esac
else
AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll, ac_cv_c_dll_unixware,
[WINE_TRY_SHLIB_FLAGS([-fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic],
ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")])
if test "$ac_cv_c_dll_unixware" = "yes"
then
LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
LDDLLFLAGS="-Wl,-G,-B,symbolic"
else
AC_CACHE_CHECK(whether we can build an HP-UX dll, ac_cv_c_dll_hpux,
[WINE_TRY_SHLIB_FLAGS([-shared], ac_cv_c_dll_hpux="yes", ac_cv_c_dll_hpux="no")])
if test "$ac_cv_c_dll_hpux" = "yes"
then
LIBEXT="sl"
DLLEXT=".sl"
LDDLLFLAGS="-shared -fPIC"
LDSHARED="\$(CC) -shared"
fi
fi
fi
dnl Check for cross compiler to build test programs
AC_SUBST(CROSSTEST,"")
if test "$cross_compiling" = "no"
then
WINE_CHECK_MINGW_PROG(CROSSCC,gcc,false)
WINE_CHECK_MINGW_PROG(DLLTOOL,dlltool,false)
WINE_CHECK_MINGW_PROG(CROSSWINDRES,windres,false)
WINE_CHECK_MINGW_PROG(MINGWAR,ar,false)
if test "$CROSSCC" != "false"; then CROSSTEST="\$(CROSSTEST)"; fi
fi
;;
esac
if test "$LIBEXT" = "a"; then
AC_MSG_ERROR(
[could not find a way to build shared libraries.
It is currently not possible to build Wine without shared library
(.so) support to allow transparent switch between .so and .dll files.
If you are using Linux, you will need a newer binutils.]
)
fi
dnl **** Check for X11 ****
if test "$have_x" = "yes"
then
XLIB="-lXext -lX11"
ac_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
dnl *** All of the following tests require X11/Xlib.h
AC_CHECK_HEADERS([X11/Xlib.h \
X11/XKBlib.h \
X11/Xutil.h \
X11/Xcursor/Xcursor.h \
X11/extensions/shape.h \
X11/extensions/XInput.h \
X11/extensions/XShm.h \
X11/extensions/Xinerama.h \
X11/extensions/Xrandr.h \
X11/extensions/Xrender.h \
X11/extensions/xf86vmode.h],,,
[#ifdef HAVE_X11_XLIB_H
# include
#endif
#ifdef HAVE_X11_XUTIL_H
# include
#endif])
dnl *** Check for X keyboard extension
if test "$ac_cv_header_X11_XKBlib_h" = "yes"
then
AC_CHECK_LIB(X11, XkbQueryExtension,
AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
$X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
fi
dnl *** Check for X Shm extension
if test "$ac_cv_header_X11_extensions_XShm_h" = "yes"
then
AC_CHECK_LIB(Xext, XShmQueryExtension,
AC_DEFINE(HAVE_LIBXXSHM, 1, [Define if you have the X Shm extension]),,
$X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
fi
dnl *** Check for X shape extension
if test "$ac_cv_header_X11_extensions_shape_h" = "yes"
then
AC_CHECK_LIB(Xext,XShapeQueryExtension,
AC_DEFINE(HAVE_LIBXSHAPE, 1, [Define if you have the X Shape extension]),,
$X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
fi
dnl *** Check for XFree86 VMODE extension
if test "$ac_cv_header_X11_extensions_xf86vmode_h" = "yes"
then
AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension,
[ AC_DEFINE(HAVE_LIBXXF86VM, 1, [Define if you have the Xxf86vm library])
X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm"
],,
$X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
fi
dnl *** Check for X RandR extension
if test "$ac_cv_header_X11_extensions_Xrandr_h" = "yes"
then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
#include ]], [[static typeof(XRRSetScreenConfigAndRate) * func;]])],
[AC_DEFINE(HAVE_LIBXRANDR, 1, [Define if you have the Xrandr library])],[])
fi
dnl *** Check for Transform functions in Xrender
if test "$ac_cv_header_X11_extensions_Xrender_h" = "yes"
then
AC_CHECK_LIB(Xrender, XRenderSetPictureTransform,
[AC_DEFINE(HAVE_XRENDERSETPICTURETRANSFORM, 1,
[Define if Xrender has the XRenderSetPictureTransform function])],,
$X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
fi
dnl *** Check for Xinerama extension
if test "$ac_cv_header_X11_extensions_Xinerama_h" = "yes"
then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
#include ]], [[static typeof(XineramaQueryScreens) * func;]])],
[AC_DEFINE(HAVE_LIBXINERAMA, 1, [Define if you have the Xinerama library])],[])
fi
dnl *** End of X11/Xlib.h check
dnl Check for the presence of OpenGL
if test "x$with_opengl" != "xno"
then
AC_CHECK_HEADERS(GL/gl.h GL/glx.h GL/glext.h GL/glu.h,,,
[#ifdef HAVE_GL_GLX_H
# include
#endif])
if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
then
dnl Check for some problems due to old Mesa versions
AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_header_version_OK,
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[GLenum test = GL_UNSIGNED_SHORT_5_6_5;]])],
[wine_cv_opengl_header_version_OK="yes"],
[wine_cv_opengl_header_version_OK="no"]))
if test "$wine_cv_opengl_header_version_OK" = "yes"
then
dnl Check for the presence of the library
AC_CHECK_LIB(GL,glXCreateContext,
[OPENGL_LIBS="-lGL"
OPENGLFILES='$(OPENGLFILES)'
AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])]
,,
$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
dnl Check for GLU32 library.
AC_CHECK_LIB(GLU,gluLookAt,
[OPENGL_LIBS="$OPENGL_LIBS -lGLU"
GLU32FILES='$(GLU32FILES)']
,,
$OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
)
fi
else
wine_cv_opengl_headers_found="no"
fi
fi
dnl **** Check for NAS ****
AC_SUBST(NASLIBS,"")
AC_CHECK_HEADERS(audio/audiolib.h,
[AC_CHECK_HEADERS(audio/soundlib.h,,,[#include