Skip to content
Snippets Groups Projects
configure.ac 41.4 KiB
Newer Older
Alexandre Julliard's avatar
Alexandre Julliard committed
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_INIT([Wine],WINE_VERSION)
AC_CONFIG_SRCDIR(server/atom.c)		
AC_CONFIG_HEADERS(include/config.h)
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_CONFIG_AUX_DIR(tools)
Alexandre Julliard's avatar
Alexandre Julliard committed

Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Command-line arguments ****

Alexandre Julliard's avatar
Alexandre Julliard committed
dnl Default values
LIBEXT=so       # library type .so or .a
AC_ARG_ENABLE(debug, AC_HELP_STRING([--disable-debug],[compile out all debugging messages]))
AC_ARG_ENABLE(trace, AC_HELP_STRING([--disable-trace],[compile out TRACE messages]))
AC_ARG_ENABLE(opengl,AC_HELP_STRING([--enable-opengl],[force usage of OpenGL even if the latter is thread-safe via pthread]))
AC_ARG_WITH(curses,     AC_HELP_STRING([--without-curses],[do not use curses]))
AC_ARG_WITH(reentrant-x,AC_HELP_STRING([--without-reentrant-x],[compile for use with non-reentrant X libraries]))
Alexandre Julliard's avatar
Alexandre Julliard committed

Alexandre Julliard's avatar
Alexandre Julliard committed
AC_SUBST(OPTIONS)
Alexandre Julliard's avatar
Alexandre Julliard committed
then
    AC_DEFINE(NO_DEBUG_MSGS,1,[Define to disable all debug messages.])
if test "x$enable_trace" = "xno" -o "x$enable_debug" = "xno"
    AC_DEFINE(NO_TRACE_MSGS,1,[Define to disable trace messages.])
Alexandre Julliard's avatar
Alexandre Julliard committed
fi

Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for some programs ****
Alexandre Julliard's avatar
Alexandre Julliard committed

Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_MAKE_SET
AC_PROG_CC
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_CPP
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PATH_XTRA
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_YACC
AC_PROG_LEX

dnl **** Just additional warning checks, since AC_PROG just sets 'yacc' even
dnl **** without one present.
AC_CHECK_PROGS(XYACC,$YACC bison yacc,none)
if test "$XYACC" = "none"
then
  AC_MSG_ERROR([no suitable bison/yacc found. Please install the 'bison' package.])
AC_CHECK_PROGS(XLEX,$LEX flex lex,none)
if test "$XLEX" = "none"
then
  AC_MSG_ERROR([no suitable lex found. Please install the 'flex' package.])
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_RANLIB
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_INSTALL
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_LN_S
AC_CHECK_PROG(C2MAN,c2man,c2man,\$(TOPSRCDIR)/tools/c2man.pl)
AC_PATH_PROG(LDCONFIG, ldconfig, true, /sbin:/usr/sbin:$PATH)
Alexandre Julliard's avatar
Alexandre Julliard committed

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)

case $host_os in
  *cygwin*) LDCOMBINE="ld -r --enable-stdcall-fixup" ;;
         *) LDCOMBINE="ld -r" ;;
esac
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for some libraries ****

dnl Check for -lm
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl Check for -li386 for NetBSD and OpenBSD
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_CHECK_LIB(i386,i386_set_ldt)
dnl Check for -lossaudio for NetBSD
AC_CHECK_LIB(ossaudio,_oss_ioctl)
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl Check for -lw for Solaris
AC_CHECK_FUNCS(iswalnum,,AC_CHECK_LIB(w,iswalnum))
dnl Check for -lnsl for Solaris
AC_CHECK_FUNCS(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname))
dnl Check for -lsocket for Solaris
AC_CHECK_FUNCS(connect,,AC_CHECK_LIB(socket,connect))
dnl Check for -lresolv for Solaris
AC_CHECK_FUNCS(inet_aton,,AC_CHECK_LIB(resolv,inet_aton))
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl Check for -lxpg4 for FreeBSD
AC_CHECK_LIB(xpg4,_xpg4_setrunelocale)
dnl Check for -lmmap for OS/2
AC_CHECK_LIB(mmap,mmap)
dnl Check for openpty
UTILLIBS=""
AC_SUBST(UTILLIBS)
AC_CHECK_FUNCS(openpty,,
	[AC_CHECK_LIB(util,openpty,
		[AC_DEFINE(HAVE_OPENPTY)
		UTILLIBS="-lutil"]
DLLIBS=""
AC_SUBST(DLLIBS)
    [AC_CHECK_FUNCS(dlopen,,
        [AC_CHECK_LIB(dl,dlopen,
                     [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
                     DLLIBS="-ldl"],
JPEGLIB=""
AC_SUBST(JPEGLIB)
AC_CHECK_HEADERS(jpeglib.h,
    AC_CHECK_LIB(jpeg,jpeg_start_decompress,
    	AC_DEFINE(HAVE_LIBJPEG,1,[Define if you have libjpeg including devel headers])
	JPEGLIB="-ljpeg"
    )
)


AC_SUBST(XFILES)
XFILES=""
Lionel Ulmer's avatar
Lionel Ulmer committed
AC_SUBST(OPENGLFILES)
OPENGLFILES=""
AC_SUBST(GLU32FILES)
    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,
      [
        dnl *** Check for X keyboard extension
        AC_CHECK_HEADERS(X11/XKBlib.h,
            [ dnl *** If X11/XKBlib.h exists...
              AC_CHECK_LIB(X11, XkbQueryExtension,
              AC_DEFINE(HAVE_XKB, 1, [Define if you have the XKB extension]),,
              $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
            ],
            AC_MSG_WARN([[Xkb extension not found, Wine will be built without it]])
        dnl *** Check for X Shm extension
        AC_CHECK_HEADERS(X11/extensions/XShm.h,
            [ dnl *** If X11/extensions/XShm.h exists...
              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)
            ],
            AC_MSG_WARN([[XShm extension not found, Wine will be built without it]]),
            [#include <X11/Xlib.h>])
        dnl *** Check for X shape extension
        AC_CHECK_HEADERS(X11/extensions/shape.h,
            [ dnl *** If X11/extensions/shape.h exists...
              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)
	    ],
	    AC_MSG_WARN([[XShape extension not found, Wine will be built without it]]),
            [#include <X11/Xlib.h>])
        dnl *** Check for XFree86 DGA / DGA 2.0 extension
        AC_CHECK_HEADERS(X11/extensions/xf86dga.h,
            [ dnl *** If X11/extensions/xf86dga.h exists, check 
              dnl *** for XDGAQueryExtension()...
              AC_CHECK_LIB(Xxf86dga, XDGAQueryExtension,
                [ dnl *** If found...
                  AC_DEFINE(HAVE_LIBXXF86DGA2, 1,
                            [Define if you have the Xxf86dga library version 2])
                  X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
               ],
                [ dnl *** If not found, look for XF86DGAQueryExtension()
                  dnl *** instead (DGA 2.0 not found)...
                  AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
                    [ AC_DEFINE(HAVE_LIBXXF86DGA, 1,
                                [Define if you have the Xxf86dga library version 1])
                      X_PRE_LIBS="$X_PRE_LIBS -lXxf86dga"
                    ],,
                    $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
                  )
                ],
                $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
              )
            ],
            AC_MSG_WARN([[DGA extension not found, Wine will be built without it]]),
            [#include <X11/Xlib.h>])

        dnl *** Check for XFree86 VMODE extension
        AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,
            [ dnl *** If X11/extensions/xf86vmode.h exists...
                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
                )
            ],
            AC_MSG_WARN([[XFree86 VMODE extension not found, Wine will be built without it]]),
            [#include <X11/Xlib.h>])

        dnl *** Check for XVideo extension supporting XvImages
        AC_CHECK_HEADERS(X11/extensions/Xvlib.h,
            [ dnl *** If X11/extensions/Xvlib.h exists...
                AC_CHECK_LIB(Xv, XvShmCreateImage,
                  [ AC_DEFINE(HAVE_XVIDEO, 1, [Define if the X libraries support XVideo])
                     X_PRE_LIBS="$X_PRE_LIBS -lXv"
                  ],,
                  $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
                )
            ],
            AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]]),
            [#include <X11/Xlib.h>])
        dnl *** Check for XRender extension
        AC_CHECK_HEADERS(X11/extensions/Xrender.h,
            [ dnl *** If X11/extensions/Xrender.h exists...
                AC_CHECK_LIB(Xrender, XRenderQueryExtension,
                  [ AC_DEFINE(HAVE_LIBXRENDER, 1, [Define if you have the XRender extension library])
                     X_PRE_LIBS="$X_PRE_LIBS -lXrender"
                  ],,
                  $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
                )
            ],
            AC_MSG_WARN([[XRender extension not found, Wine will be built without it]]),
            [#include <X11/Xlib.h>])
      ]
    ) dnl *** End of X11/Xlib.h check
Lionel Ulmer's avatar
Lionel Ulmer committed
    dnl Check for the presence of OpenGL
        if test -f /usr/X11R6/lib/libGL.a -a ! -f /usr/X11R6/lib/libGL.so
        then
	    AC_MSG_ERROR([/usr/X11R6/lib/libGL.a is present on your system.
This prevents linking to OpenGL. Delete the file and restart configure.])
        fi

	AC_CHECK_HEADERS(GL/gl.h GL/glx.h)
	if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
            AC_CHECK_HEADERS(GL/glext.h,,,[#include <GL/glx.h>])
	    dnl Check for some problems due to old Mesa versions
	    AC_CACHE_CHECK([for up-to-date OpenGL version], wine_cv_opengl_version_OK,
		[GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
Lionel Ulmer's avatar
Lionel Ulmer committed
		[wine_cv_opengl_version_OK="yes"],
		[wine_cv_opengl_version_OK="no"]
            )

	    dnl Check for the thread-safety of the OpenGL library
	    AC_CACHE_CHECK([for thread-safe OpenGL version], 
Lionel Ulmer's avatar
Lionel Ulmer committed
			   wine_cv_opengl_version_threadsafe,
              [saved_libs=$LIBS
	       LIBS="$X_LIBS -lGL"
	       AC_TRY_LINK([],[pthread_getspecific();],
Lionel Ulmer's avatar
Lionel Ulmer committed
			      [wine_cv_opengl_version_threadsafe="yes"],
			      [wine_cv_opengl_version_threadsafe="no"])
	    if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o "x$enable_opengl" = "xyes" \)
		dnl Check for the presence of the library
		AC_CHECK_LIB(GL,glXCreateContext,
			     X_PRE_LIBS="$X_PRE_LIBS -lGL"
			     ,,
			     $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)

		if test "$ac_cv_lib_GL_glXCreateContext" = "yes"
			OPENGLFILES='$(OPENGLFILES)'
			AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is present on the system])
			AC_CHECK_LIB(GL,glXGetProcAddressARB,
                                     AC_DEFINE(HAVE_GLX_GETPROCADDRESS, 1,
                                               [Define if the OpenGL library supports the glXGetProcAddressARB call]),,
                                     $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
			if test "$ac_cv_lib_GL_glXGetProcAddressARB" = "yes"
Lionel Ulmer's avatar
Lionel Ulmer committed
			then
			       AC_CACHE_CHECK([for OpenGL extension functions prototypes], wine_cv_extension_prototypes,
			          [AC_TRY_COMPILE([#include <GL/gl.h>
				  		  #ifdef HAVE_GL_GLEXT_H
						  # include <GL/glext.h>
						  #endif
						  ],
						 [PFNGLCOLORTABLEEXTPROC test_proc;],
						 [wine_cv_extension_prototypes="yes"],
						 [wine_cv_extension_prototypes="no"]
				if test "$wine_cv_extension_prototypes" = "yes"
				    AC_DEFINE(HAVE_GLEXT_PROTOTYPES, 1,
                                              [Define if the OpenGL headers define extension typedefs])
	        dnl Check for GLU32 library.
			     [X_PRE_LIBS="$X_PRE_LIBS -lGLU"
			     GLU32FILES='$(GLU32FILES)']
			     ,,
			     $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
		)

    CPPFLAGS="$ac_save_CPPFLAGS"
    XFILES='$(XFILES)'
Alexandre Julliard's avatar
Alexandre Julliard committed

dnl **** Check which curses lib to use ***
        [AC_CHECK_LIB(ncurses,waddch,
            [AC_DEFINE(HAVE_LIBNCURSES, 1, [Define if you have the ncurses library (-lncurses)])
             CURSESLIBS="-lncurses"],
             [AC_CHECK_HEADERS(curses.h,
                 [AC_CHECK_LIB(curses,waddch,
                     [AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have the curses library (-lcurses)])
                      CURSESLIBS="-lcurses"])])])])
    saved_libs="$LIBS"
    LIBS="$CURSESLIBS $LIBS"
CUPSLIBS=""
dnl **** Check for CUPS ****
AC_CHECK_LIB(cups,cupsGetPPD,
	[AC_CHECK_HEADER(cups/cups.h,
	    [AC_DEFINE(HAVE_CUPS, 1, [Define if we have CUPS])
	    CUPSLIBS="-lcups"],
            wine_cv_warn_cups_h=yes)]
)
AC_SUBST(CUPSLIBS)

dnl **** Check for SANE ****
AC_CHECK_PROG(sane_devel,sane-config,sane-config,no)
if test "$sane_devel" = "no"
then
    SANELIBS=""
    SANEINCL=""
else
    SANELIBS="`$sane_devel --libs`"
    SANEINCL="`$sane_devel --cflags`"
    ac_save_CPPFLAGS="$CPPFLAGS"
    ac_save_LIBS="$LIBS"
    CPPFLAGS="$CPPFLAGS $SANEINCL"
    LIBS="$LIBS $SANELIBS"
    AC_CHECK_HEADER(sane/sane.h,
                    [AC_CHECK_LIB(sane,sane_open,
                                  [AC_DEFINE(HAVE_SANE, 1, [Define if we have SANE development environment])],
                                  [SANELIBS=""
                                  SANEINCL=""])],
                    [SANELIBS=""
                    SANEINCL=""])
    LIBS="$ac_save_LIBS"
    CPPFLAGS="$ac_save_CPPFLAGS"
fi
AC_SUBST(SANELIBS)
AC_SUBST(SANEINCL)

dnl **** Check for FreeType 2 ****
AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS)
if test "$ft_lib" = "no"
then
    FREETYPEINCL=""
    wine_cv_msg_freetype=no
else
    AC_CHECK_PROG(ft_devel,freetype-config,freetype-config,no)
    if test "$ft_devel" = "no"
    then
        AC_CHECK_PROG(ft_devel2,freetype2-config,freetype2-config,no)
        if test "$ft_devel2" = "freetype2-config"
	then
		ft_devel=$ft_devel2
	fi
    fi
    if test "$ft_devel" = "no"
    then
	FREETYPEINCL=""
	wine_cv_msg_freetype=yes
    else
	ac_save_CPPFLAGS="$CPPFLAGS"
	CPPFLAGS="$FREETYPEINCL $CPPFLAGS"
	AC_CHECK_HEADERS(freetype/freetype.h \
                         freetype/ftglyph.h \
                         freetype/tttables.h \
                         freetype/ftnames.h \
                         freetype/ftsnames.h \
Huw D. M. Davies's avatar
Huw D. M. Davies committed
                         freetype/ftoutln.h \
                         freetype/internal/sfnt.h)
	AC_TRY_CPP([#include <ft2build.h>
                    #include <freetype/fttrigon.h>],
                    [AC_DEFINE(HAVE_FREETYPE_FTTRIGON_H, 1,
          [Define if you have the <freetype/fttrigon.h> header file.])
                    wine_cv_fttrigon=yes],
                    wine_cv_fttrigon=no)
	CPPFLAGS="$ac_save_CPPFLAGS"
	dnl Check that we have at least freetype/freetype.h
	if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
	then
	    AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
	    wine_cv_msg_freetype=no
	else
	    FREETYPEINCL=""
	    wine_cv_msg_freetype=yes
	fi
    fi
fi
AC_SUBST(FREETYPEINCL)

dnl **** Check for parport (currently Linux only) ****
AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
 AC_TRY_COMPILE(
   [#include <linux/ppdev.h>],
   [ioctl (1,PPCLAIM,0)],
   [ac_cv_c_ppdev="yes"],
   [ac_cv_c_ppdev="no"])
 )
if test "$ac_cv_c_ppdev" = "yes"
then
    AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access])
dnl **** Check for IPX (currently Linux only) ****
AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu,
 AC_TRY_COMPILE(
   [#include <sys/socket.h>
    #include <netipx/ipx.h>],
   [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
Aaron Hope's avatar
Aaron Hope committed
   [ac_cv_c_ipx_gnu="yes"],
Aaron Hope's avatar
Aaron Hope committed
if test "$ac_cv_c_ipx_gnu" = "yes"
then
    AC_DEFINE(HAVE_IPX_GNU, 1, [Define if IPX should use netipx/ipx.h from libc])
Aaron Hope's avatar
Aaron Hope committed
fi
 AC_CACHE_CHECK([for linux style IPX support], ac_cv_c_ipx_linux,
  AC_TRY_COMPILE(
    [#include <sys/socket.h>
     #include <asm/types.h>
     #include <linux/ipx.h>],
    [((struct sockaddr_ipx *)0)->sipx_family == AF_IPX],
Aaron Hope's avatar
Aaron Hope committed
    [ac_cv_c_ipx_linux="yes"],
Aaron Hope's avatar
Aaron Hope committed
  if test "$ac_cv_c_ipx_linux" = "yes"
  then
      AC_DEFINE(HAVE_IPX_LINUX, 1, [Define if IPX includes are taken from Linux kernel])
Aaron Hope's avatar
Aaron Hope committed
  fi
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for Open Sound System ****
AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h soundcard.h, break)
Alexandre Julliard's avatar
Alexandre Julliard committed

AC_CACHE_CHECK([for Open Sound System],
Alexandre Julliard's avatar
Alexandre Julliard committed
	ac_cv_c_opensoundsystem,
Alexandre Julliard's avatar
Alexandre Julliard committed
	AC_TRY_COMPILE([
Alexandre Julliard's avatar
Alexandre Julliard committed
		#include <sys/soundcard.h>
	#elif defined(HAVE_MACHINE_SOUNDCARD_H)
Alexandre Julliard's avatar
Alexandre Julliard committed
		#include <machine/soundcard.h>
	#elif defined(HAVE_SOUNDCARD_H)
		#include <soundcard.h>
Alexandre Julliard's avatar
Alexandre Julliard committed
	#endif
	],[
Alexandre Julliard's avatar
Alexandre Julliard committed

Alexandre Julliard's avatar
Alexandre Julliard committed
/* check for one of the Open Sound System specific SNDCTL_ defines */
#if !defined(SNDCTL_DSP_STEREO)
#error No open sound system
#endif
Alexandre Julliard's avatar
Alexandre Julliard committed
],ac_cv_c_opensoundsystem="yes",ac_cv_c_opensoundsystem="no"))

if test "$ac_cv_c_opensoundsystem" = "yes"
then
    AC_DEFINE(HAVE_OSS, 1, [Define if you have the Open Sound system])
Alexandre Julliard's avatar
Alexandre Julliard committed
fi
Alexandre Julliard's avatar
Alexandre Julliard committed

AC_CACHE_CHECK([for Open Sound System/MIDI interface],
	ac_cv_c_opensoundsystem_midi,
	AC_TRY_COMPILE([
	#if defined(HAVE_SYS_SOUNDCARD_H)
		#include <sys/soundcard.h>
	#elif defined(HAVE_MACHINE_SOUNDCARD_H)
		#include <machine/soundcard.h>
	#elif defined(HAVE_SOUNDCARD_H)
		#include <soundcard.h>
	#endif
	],[

/* check for one of the Open Sound System specific SNDCTL_SEQ defines */
#if !defined(SNDCTL_SEQ_SYNC)
#error No open sound system MIDI interface
#endif
],ac_cv_c_opensoundsystem_midi="yes",ac_cv_c_opensoundsystem_midi="no"))

if test "$ac_cv_c_opensoundsystem_midi" = "yes"
then
    AC_DEFINE(HAVE_OSS_MIDI, 1, [Define if you have the Open Sound system (MIDI interface)])
Chris Morgan's avatar
Chris Morgan committed
dnl **** Check for aRts Sound Server ****
AC_PATH_PROG(ARTSCCONFIG, artsc-config)
AC_CACHE_CHECK([for aRts Sound server],
        ac_cv_c_artsserver,
        if test x$ARTSCCONFIG = x -o x$ARTSCCONFIG = x'"$ARTSCCONFIG"';
        then
            ac_cv_c_artsserver=no
        else
            ARTSC_CFLAGS=`$ARTSCCONFIG --cflags`
            ARTSC_LIBS=`$ARTSCCONFIG --libs`
            ac_cv_c_artsserver=no
            save_CFLAGS="$CFLAGS"
            CFLAGS="$CFLAGS $ARTSC_CFLAGS"
            AC_TRY_COMPILE([
             #include <artsc.h>
            ],[
             arts_stream_t stream;
            ],[
            ac_cv_c_artsserver=yes
            ])
            CFLAGS="$save_CFLAGS"
        fi)

if test "$ac_cv_c_artsserver" = "yes"
then
    AC_SUBST(ARTSLIBS, $ARTSC_LIBS)
    AC_SUBST(ARTSINCL, $ARTSC_CFLAGS)

    AC_DEFINE(HAVE_ARTS, 1, [Define if you have ARTS sound server])
fi

dnl **** Check for broken glibc mmap64 ****

AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
	AC_TRY_RUN([
		#define _FILE_OFFSET_BITS 64
		#include <stdio.h>
		#include <unistd.h>
		#include <fcntl.h>
		#include <sys/mman.h>
		#include <errno.h>

		int main(int argc,char **argv) {
			int fd = open("conftest.map",O_CREAT|O_RDWR,0600);
			if (fd == -1) exit(1);

			unlink("conftest.map");

			write(fd,"test",4);

			if ((-1 == mmap(0,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) &&
			    (errno == EINVAL)
			) {
				exit(1);
			}
			close(fd);
			fprintf(stderr,"success!\n");
			exit(0);
		}

	],
    ac_cv_mmap64_works="yes",
    ac_cv_mmap64_works="no",
    ac_cv_mmap64_works="no") )

if test "$ac_cv_mmap64_works" = "yes"
then
    AC_DEFINE(_FILE_OFFSET_BITS, 64, [Set this to 64 to enable 64-bit file support on Linux])
fi

Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for gcc strength-reduce bug ****

if test "x${GCC}" = "xyes"
then
  CFLAGS="$CFLAGS -Wall"
  AC_CACHE_CHECK( [for gcc strength-reduce bug], ac_cv_c_gcc_strength_bug,
Alexandre Julliard's avatar
Alexandre Julliard committed
                  AC_TRY_RUN([
int	L[[4]] = {0,1,2,3};
Alexandre Julliard's avatar
Alexandre Julliard committed
int main(void) {
Alexandre Julliard's avatar
Alexandre Julliard committed
  static int Array[[3]];
Alexandre Julliard's avatar
Alexandre Julliard committed
  unsigned int B = 3;
  int i;
Alexandre Julliard's avatar
Alexandre Julliard committed
  for(i=0; i<B; i++) Array[[i]] = i - 3;
  for(i=0; i<4 - 1; i++) L[[i]] = L[[i + 1]];
  L[[i]] = 4;
  
  exit( Array[[1]] != -2 || L[[2]] != 3);
Alexandre Julliard's avatar
Alexandre Julliard committed
}],
    ac_cv_c_gcc_strength_bug="no",
    ac_cv_c_gcc_strength_bug="yes",
    ac_cv_c_gcc_strength_bug="yes") )
  if test "$ac_cv_c_gcc_strength_bug" = "yes"
  then
    CFLAGS="$CFLAGS -fno-strength-reduce"
  fi

  dnl Check for -mpreferred-stack-boundary
  AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support],
                 ac_cv_c_gcc_stack_boundary,
  [saved_cflags=$CFLAGS
  CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
  AC_TRY_COMPILE(,[return 0],ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")
  CFLAGS=$saved_cflags
  ])
  if test "$ac_cv_c_gcc_stack_boundary" = "yes"
  then
    CFLAGS="$CFLAGS -mpreferred-stack-boundary=2"
  fi
dnl **** Check if we need to place .type inside a .def directive ****

AC_CACHE_CHECK([whether .type must sit inside a .def directive],
	       ac_cv_c_type_in_def,
[saved_libs=$LIBS
LIBS="conftest_asm.s $LIBS"
cat > conftest_asm.s <<EOF
	.globl _ac_test
	.def _ac_test; .scl 2; .type 32; .endef
_ac_test:
	.long 0
EOF
AC_TRY_LINK(,,ac_cv_c_type_in_def="yes",ac_cv_c_type_in_def="no")
LIBS=$saved_libs])
if test "$ac_cv_c_type_in_def" = "yes"
then
  AC_DEFINE(NEED_TYPE_IN_DEF, 1, [Define if .type asm directive must be inside a .def directive])
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for underscore on external symbols ****

AC_CACHE_CHECK([whether external symbols need an underscore prefix],
Alexandre Julliard's avatar
Alexandre Julliard committed
               ac_cv_c_extern_prefix,
[saved_libs=$LIBS
LIBS="conftest_asm.s $LIBS"
cat > conftest_asm.s <<EOF
	.globl _ac_test
_ac_test:
	.long 0
EOF
AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
            ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
LIBS=$saved_libs])
if test "$ac_cv_c_extern_prefix" = "yes"
then
  AC_DEFINE(NEED_UNDERSCORE_PREFIX, 1,
            [Define if symbols declared in assembly code need an underscore prefix])
dnl **** Check whether stdcall symbols need to be decorated ****

AC_CACHE_CHECK([whether stdcall symbols need to be decorated],
               ac_cv_c_stdcall_decoration,
[saved_libs=$LIBS
LIBS="conftest_asm.s $LIBS"
if test "$ac_cv_c_extern_prefix" = "yes"
then
cat > conftest_asm.s <<EOF
	.globl _ac_test@0
_ac_test@0:
EOF
else
cat > conftest_asm.s <<EOF
	.globl ac_test@0
ac_test@0:
EOF
fi
AC_TRY_LINK([extern void __attribute__((__stdcall__)) ac_test(void);],
            [ac_test(); return 0],
            ac_cv_c_stdcall_decoration="yes",ac_cv_c_stdcall_decoration="no")
LIBS=$saved_libs])
if test "$ac_cv_c_stdcall_decoration" = "yes"
then
  AC_DEFINE(NEED_STDCALL_DECORATION, 1,
            [Define if stdcall symbols need to be decorated])
fi

Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for .string in assembler ****

AC_CACHE_CHECK([whether assembler accepts .string],
Alexandre Julliard's avatar
Alexandre Julliard committed
               ac_cv_c_asm_string,
[saved_libs=$LIBS
LIBS="conftest_asm.s $LIBS"
cat > conftest_asm.s <<EOF
	.string "test"
EOF
AC_TRY_LINK(,,ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no")
LIBS=$saved_libs])
if test "$ac_cv_c_asm_string" = "yes"
then
  AC_DEFINE(HAVE_ASM_STRING, 1, [Define to use .string instead of .ascii])
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for working dll ****

LDDLLFLAGS=""
if test "$LIBEXT" = "so"
Alexandre Julliard's avatar
Alexandre Julliard committed
then
  AC_CACHE_CHECK([whether we can build a GNU style ELF dll],
                 ac_cv_c_dll_gnuelf,
Alexandre Julliard's avatar
Alexandre Julliard committed
  [saved_cflags=$CFLAGS
  CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0,-Bsymbolic"
  AC_TRY_LINK(,[return 1],ac_cv_c_dll_gnuelf="yes",ac_cv_c_dll_gnuelf="no")
Alexandre Julliard's avatar
Alexandre Julliard committed
  CFLAGS=$saved_cflags
  ])
  if test "$ac_cv_c_dll_gnuelf" = "yes"
Alexandre Julliard's avatar
Alexandre Julliard committed
  then
    LDSHARED="\$(CC) -shared \$(SONAME:%=-Wl,-soname,%)"
    LDDLLFLAGS="-Wl,-Bsymbolic"
Alexandre Julliard's avatar
Alexandre Julliard committed
  else
    AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll,
    CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0,-B,symbolic"
    AC_TRY_LINK(,[return 1],ac_cv_c_dll_unixware="yes",ac_cv_c_dll_unixware="no")
    if test "$ac_cv_c_dll_unixware" = "yes"
      LDSHARED="\$(CC) -Wl,-G \$(SONAME:%=-Wl,-h,%)"
      LDDLLFLAGS="-Wl,-B,symbolic"
  if test "$ac_cv_c_dll_gnuelf" = "no" -a "$ac_cv_c_dll_unixware" = "no"
    AC_CHECK_PROG(DLLWRAP,dllwrap,dllwrap,false)
    if test "$DLLWRAP" = "dllwrap"; then
      dnl FIXME - check whether dllwrap works correctly...
Alexandre Julliard's avatar
Alexandre Julliard committed
  fi
fi
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.]
)
DLLFLAGS=""
if test "$LIBEXT" = "so"; then
    DLLFLAGS="-fPIC"
    LDPATH="LD_LIBRARY_PATH=\"\$(TOPOBJDIR)/unicode:\$\$LD_LIBRARY_PATH\""
elif test "$LIBEXT" = "dll"; then
    #DLLFLAGS="-fPIC" # -fPIC doesn't work(at least in cygwin-b20) - FIXME
    LDPATH="PATH=\"\$(TOPOBJDIR)/unicode:\$\$PATH\""
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_SUBST(DLLFLAGS)
AC_SUBST(LDDLLFLAGS)
AC_SUBST(LIBEXT)
Alexandre Julliard's avatar
Alexandre Julliard committed

Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for reentrant libc ****
dnl
dnl For cross-compiling we blindly assume that libc is reentrant. This is
dnl ok since non-reentrant libc is quite rare (mostly old libc5 versions).

AC_DEFUN([WINE_CHECK_ERRNO],
[
  AC_CACHE_CHECK(for reentrant libc: $1, wine_cv_libc_r_$1,
Alexandre Julliard's avatar
Alexandre Julliard committed
  [AC_TRY_RUN([int myerrno = 0;
char buf[256];
Alexandre Julliard's avatar
Alexandre Julliard committed
main(){connect(0,buf,255); exit(!myerrno);}],
  wine_cv_libc_r_$1=yes, wine_cv_libc_r_$1=no,
  wine_cv_libc_r_$1=yes )
if test "$wine_cv_libc_r_$1" = "yes"

wine_cv_libc_reentrant=no 
dnl Linux style errno location
WINE_CHECK_ERRNO(__errno_location)
dnl FreeBSD style errno location
WINE_CHECK_ERRNO(__error)
dnl Solaris style errno location
dnl UnixWare style errno location
WINE_CHECK_ERRNO(__thr_errno)
dnl NetBSD style errno location
WINE_CHECK_ERRNO(__errno)

if test "$wine_cv_libc_reentrant" != "no" 
Alexandre Julliard's avatar
Alexandre Julliard committed
then
  AC_DEFINE_UNQUOTED(ERRNO_LOCATION,$wine_cv_libc_reentrant,
	             [Define to the name of the function returning errno for reentrant libc])
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for reentrant X libraries ****
dnl
dnl This may fail to determine whether X libraries are reentrant if
dnl AC_PATH_XTRA does not set x_libraries. In this case manual configuration
dnl is possible with the --without-reentrant-x option.

if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
AC_CACHE_CHECK( [for reentrant X libraries], wine_cv_x_reentrant,
  [ if test "x$with_reentrant_x" = "xno" 
Alexandre Julliard's avatar
Alexandre Julliard committed
    then
        wine_cv_x_reentrant=no
    else
	libX11_check=none
Alexandre Julliard's avatar
Alexandre Julliard committed
	for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
Alexandre Julliard's avatar
Alexandre Julliard committed
	    if test -r $dir/libX11.so; then
Alexandre Julliard's avatar
Alexandre Julliard committed
		libX11_check="-D $dir/libX11.so"
		break 1
	    fi
Alexandre Julliard's avatar
Alexandre Julliard committed
	    if test -r $dir/libX11.a; then
Alexandre Julliard's avatar
Alexandre Julliard committed
		libX11_check="$dir/libX11.a"
		break 1
	    fi
	done
	if test "$libX11_check" != "none"; then
	    if nm $libX11_check | grep $wine_cv_libc_reentrant >/dev/null 2>&1
Alexandre Julliard's avatar
Alexandre Julliard committed
	    then
Alexandre Julliard's avatar
Alexandre Julliard committed
		wine_cv_x_reentrant=yes
	    else
		wine_cv_x_reentrant=no
	    fi
	else
	    wine_cv_x_reentrant=unknown
	fi
    fi ] )
else
    wine_cv_x_reentrant=no
fi
Alexandre Julliard's avatar
Alexandre Julliard committed
if test "$wine_cv_x_reentrant" = "no"
then
  AC_DEFINE(NO_REENTRANT_X11, 1,
            [Define if X libraries are not reentrant (compiled without -D_REENTRANT)])
dnl **** Check for functions ****

Patrik Stridvall's avatar
Patrik Stridvall committed
AC_FUNC_ALLOCA()
	ftruncate64 \
	getnetbyaddr \
	getnetbyname \
	getprotobyname \
	getprotobynumber \
	getrlimit \
	getservbyport \
	getsockopt \
	inet_network \
	mmap \
	tcgetattr \
	timegm \
	usleep \
	vfscanf \
	wait4 \
	waitpid \
)

dnl **** Check for header files ****

AC_CHECK_HEADERS(\
	linux/ucdrom.h \
	net/if.h \
	netdb.h \
	netinet/in_systm.h \
	netinet/ip.h \
	sys/file.h \
	sys/filio.h \
Eric Pouech's avatar
Eric Pouech committed
	sys/link.h \
	sys/modem.h \
	sys/mount.h \
	sys/reg.h \
	sys/sockio.h \
	sys/statfs.h \
	sys/strtio.h \
	sys/syscall.h \
	sys/wait.h \
	sys/v86.h \
	sys/v86intr.h \