Skip to content
Snippets Groups Projects
configure.ac 47.7 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_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 ****

AC_ARG_ENABLE(win16, AC_HELP_STRING([--disable-win16],[do not include Win16 support]))
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_WITH(opengl,    AC_HELP_STRING([--without-opengl],[do not use OpenGL]))
AC_ARG_WITH(curses,    AC_HELP_STRING([--without-curses],[do not use curses]))
AC_ARG_WITH(wine-tools,AC_HELP_STRING([--with-wine-tools=<dir>],[use Wine tools from directory <dir>]))
Alexandre Julliard's avatar
Alexandre Julliard committed

AC_SUBST(WIN16_FILES,"\$(WIN16_FILES)")
AC_SUBST(WIN16_INSTALL,"\$(WIN16_INSTALL)")
if test "x$enable_win16" = "xno"
then
  WIN16_FILES=""
  WIN16_INSTALL=""
fi
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

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)

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
AC_CHECK_TOOL(STRIP,strip,strip)
AC_CHECK_TOOL(WINDRES,windres,false)
Alexandre Julliard's avatar
Alexandre Julliard committed
AC_PROG_LN_S
Alexandre Julliard's avatar
Alexandre Julliard committed
WINE_PROG_LN
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
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)

dnl Check for db2html
AC_CHECK_PROGS(DB2HTML, docbook2html db2html, false)
AC_SUBST(DB2HTML)

dnl Check for db2pdf
AC_CHECK_PROGS(DB2PDF, docbook2pdf db2pdf, false)
AC_SUBST(DB2PDF)

dnl Check for db2ps
AC_CHECK_PROGS(DB2PS, docbook2ps db2ps, false)
AC_SUBST(DB2PS)

dnl Check for db2txt
AC_CHECK_PROGS(DB2TXT, docbook2txt db2txt, false)
AC_SUBST(DB2TXT)

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

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))
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 -lpthread
AC_CHECK_LIB(pthread,pthread_create,AC_SUBST(LIBPTHREAD,"-lpthread"))
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(GIFLIB,"")
AC_CHECK_HEADERS(gif_lib.h,
    AC_CHECK_LIB(ungif,DGifOpen,
        [AC_DEFINE(HAVE_LIBGIF,1,[Define if you have libgif/libungif including devel headers])
         GIFLIB="-lungif"],
        [AC_CHECK_LIB(gif,DGifOpen,
                      [AC_DEFINE(HAVE_LIBGIF,1)
                       GIFLIB="-lgif"])]))

AC_SUBST(XFILES)
XFILES=""
Lionel Ulmer's avatar
Lionel Ulmer committed
AC_SUBST(OPENGLFILES)
OPENGLFILES=""
AC_SUBST(GLU32FILES)
AC_SUBST(OPENGL_LIBS)
OPENGL_LIBS=""
    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,
      [
        AC_CHECK_HEADERS([X11/XKBlib.h \
                          X11/Xutil.h \
                          X11/extensions/shape.h \
                          X11/extensions/XShm.h \
                          X11/extensions/Xrandr.h \
                          X11/extensions/Xrender.h \
                          X11/extensions/Xvlib.h \
                          X11/extensions/xf86dga.h \
                          X11/extensions/xf86vmode.h],,,
                         [#include <X11/Xlib.h>
                          #ifdef HAVE_X11_XUTIL_H
                          # include <X11/Xutil.h>
                          #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)
        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)
        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)
        dnl *** Check for XFree86 DGA / DGA 2.0 extension
        if test "$ac_cv_header_X11_extensions_xf86dga_h" = "yes"
        then
              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)
        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_CHECK_LIB(Xrandr, XRRSetScreenConfigAndRate,
                  [ AC_DEFINE(HAVE_LIBXRANDR, 1, [Define if you have the Xrandr library])
                     X_PRE_LIBS="$X_PRE_LIBS -lXrandr -lXrender"
                  $X_LIBS -lXrender -lXext -lX11 $X_EXTRA_LIBS)
        dnl *** Check for XVideo extension supporting XvImages
        if test "$ac_cv_header_X11_extensions_Xvlib_h" = "yes"
        then
                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)
        fi
      ]
    ) dnl *** End of X11/Xlib.h check
Lionel Ulmer's avatar
Lionel Ulmer committed
    dnl Check for the presence of OpenGL
    if test "x$with_opengl" != "xno"
        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"]
	    if test "$wine_cv_opengl_version_OK" = "yes"
		dnl Check for the presence of the library
		AC_CHECK_LIB(GL,glXCreateContext,
			     OPENGL_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.
			     [OPENGL_LIBS="$OPENGL_LIBS -lGLU"
			     GLU32FILES='$(GLU32FILES)']
			     $OPENGL_LIBS $X_LIBS $X_PRE_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS
    dnl **** Check for NAS ****
    AC_SUBST(NASLIBS,"")
    AC_CHECK_HEADERS(audio/audiolib.h,
         [AC_CHECK_HEADERS(audio/soundlib.h,,,[#include <audio/audiolib.h>])
          AC_CHECK_LIB(audio,AuCreateFlow,
                       [AC_DEFINE(HAVE_NAS,1,[Define if you have NAS including devel headers])
                        NASLIBS="-laudio -lXt $X_LIBS -lXext -lX11 $X_EXTRA_LIBS"],,
                       [-lXt $X_LIBS -lXext -lX11 $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"
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 the ICU library ****
AC_CHECK_HEADERS(unicode/ubidi.h)
if test "$ac_cv_header_unicode_ubidi_h" = "yes"
then
    AC_CACHE_CHECK([whether we can statically link the ICU libraries], ac_cv_lib_icu,
        [saved_libs="$LIBS"
         ICU_LIB_DIR="${ICU_LIB_DIR-/usr/lib}"
         ICUUC_LIB="${ICUUC_LIB-$ICU_LIB_DIR/libicuuc.a}"
         ICUDATA_LIB="${ICUDATA_LIB-$ICU_LIB_DIR/libicudata.a}"
         LIBS="$LIBS $ICUUC_LIB $ICUDATA_LIB -lstdc++ -lgcc_s"
         AC_TRY_LINK([#include <unicode/ubidi.h>],[ubidi_open()],
                     [ac_cv_lib_icu="yes"],[ac_cv_lib_icu="no"])
        LIBS="$saved_libs"])
    if test "$ac_cv_lib_icu" = "yes"
    then
        AC_DEFINE(HAVE_ICU,1,[Define to 1 if the ICU libraries are installed])
        AC_SUBST(ICULIBS,"$ICUUC_LIB $ICUDATA_LIB -lstdc++ -lgcc_s")
    fi
fi

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(ft2build.h \
                         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,,,
                         [#if HAVE_FT2BUILD_H
                          #include <ft2build.h>
                          #endif])
	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 va_copy ****
AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
 AC_TRY_LINK(
   [#include <stdarg.h>],
   [va_list ap1, ap2;
    va_copy(ap1,ap2);
   ],
   [ac_cv_c_va_copy="yes"],
   [ac_cv_c_va_copy="no"])
 )
if test "$ac_cv_c_va_copy" = "yes"
then
    AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
fi
AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
 AC_TRY_LINK(
   [#include <stdarg.h>],
   [va_list ap1, ap2;
    __va_copy(ap1,ap2);
   ],
   [ac_cv_c___va_copy="yes"],
   [ac_cv_c___va_copy="no"])
 )
if test "$ac_cv_c___va_copy" = "yes"
then
    AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
fi

dnl **** Check for sigsetjmp ****
AC_CACHE_CHECK([for sigsetjmp], ac_cv_c_sigsetjmp,
 AC_TRY_LINK(
   [#include <setjmp.h>],
   [sigjmp_buf buf;
    sigsetjmp( buf, 1 );
    siglongjmp( buf, 1 );],
   [ac_cv_c_sigsetjmp="yes"],
   [ac_cv_c_sigsetjmp="no"])
 )
if test "$ac_cv_c_sigsetjmp" = "yes"
then
    AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have the sigsetjmp (and siglongjmp) function])
fi

dnl **** Check for pthread_rwlock_t ****
AC_CHECK_TYPES([pthread_rwlock_t, pthread_rwlockattr_t],,,[#define _GNU_SOURCE
#include <pthread.h>])

dnl **** Check for pthread_getattr_np ****
ac_save_LIBS="$LIBS"
LIBS="$LIBS $LIBPTHREAD"
AC_CHECK_FUNCS(pthread_getattr_np)
LIBS="$ac_save_LIBS"

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 ALSA ****
AC_SUBST(ALSALIBS,"")
AC_CHECK_HEADERS(alsa/asoundlib.h sys/asoundlib.h, break)
if test "$ac_cv_header_sys_asoundlib_h" = "yes" -o "$ac_cv_header_alsa_asoundlib_h" = "yes"
then
    AC_CHECK_LIB(asound,snd_pcm_open,
    	AC_DEFINE(HAVE_ALSA,1,[Define if you have ALSA including devel headers])
	ALSALIBS="-lasound")
fi

dnl **** Check for libaudioio (which can be used to get solaris audio support) ****

AC_SUBST(AUDIOIOLIBS,"")
AC_CHECK_HEADERS(libaudioio.h,
    [AC_CHECK_LIB(audioio,AudioIOGetVersion,
                  [AUDIOIOLIBS="-laudioio"
                   AC_DEFINE(HAVE_LIBAUDIOIO, 1, [Define if you have libaudioIO])])])

dnl **** Check for capi4linux ****

AC_CHECK_HEADERS(capi20.h,[
	AC_CHECK_HEADERS(linux/capi.h,[
		AC_CHECK_LIB(capi20,capi20_register,[
			AC_DEFINE(HAVE_CAPI4LINUX,1,[Define if you have capi4linux libs and headers])
			AC_SUBST(CAPI4LINUXLIBS,"-lcapi20")
		])
	])
])

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

dnl **** Check for gcc specific options ****
Alexandre Julliard's avatar
Alexandre Julliard committed

Alexandre Julliard's avatar
Alexandre Julliard committed
if test "x${GCC}" = "xyes"
then
  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
    EXTRACFLAGS="$EXTRACFLAGS -fno-strength-reduce"
Alexandre Julliard's avatar
Alexandre Julliard committed
  fi

  dnl Check for -mpreferred-stack-boundary
  AC_CACHE_CHECK([for gcc -mpreferred-stack-boundary=2 support], ac_cv_c_gcc_stack_boundary,
      [WINE_TRY_CFLAGS([-mpreferred-stack-boundary=2],
                      ac_cv_c_gcc_stack_boundary="yes",ac_cv_c_gcc_stack_boundary="no")])
  if test "$ac_cv_c_gcc_stack_boundary" = "yes"
  then
    EXTRACFLAGS="$EXTRACFLAGS -mpreferred-stack-boundary=2"
  dnl Check for -fno-strict-aliasing
  AC_CACHE_CHECK([for gcc -fno-strict-aliasing support], ac_cv_c_gcc_no_strict_aliasing,
      [WINE_TRY_CFLAGS([-fno-strict-aliasing],
                      ac_cv_c_gcc_no_strict_aliasing="yes",ac_cv_c_gcc_no_strict_aliasing="no")])
  if test "$ac_cv_c_gcc_no_strict_aliasing" = "yes"
  then
    EXTRACFLAGS="$EXTRACFLAGS -fno-strict-aliasing"
  fi

  dnl Check for -gstabs+ option
  AC_CACHE_CHECK([for gcc -gstabs+ support], ac_cv_c_gcc_gstabs,
      [WINE_TRY_CFLAGS([-gstabs+],ac_cv_c_gcc_gstabs="yes", ac_cv_c_gcc_gstabs="no")])
  if test "$ac_cv_c_gcc_gstabs" = "yes"
  then
  CFLAGS="$CFLAGS -Wpointer-arith -Werror"
  AC_CACHE_CHECK([for broken string.h that generates warnings], ac_cv_c_string_h_warnings,
      AC_TRY_COMPILE([#include <string.h>],[],
                     [ac_cv_c_string_h_warnings=no],[ac_cv_c_string_h_warnings=yes]))
  if test "$ac_cv_c_string_h_warnings" = "no"
  then
    EXTRACFLAGS="$EXTRACFLAGS -Wpointer-arith"
dnl **** Check how to define a function in assembly code ****

AC_CACHE_CHECK([how to define a function in assembly code], ac_cv_asm_func_def,
  WINE_TRY_ASM_LINK(
      ["\t.globl _ac_test\n\t.def _ac_test; .scl 2; .type 32; .endef\n_ac_test:\t.long 0"],,,
      ac_cv_asm_func_def=".def",
    [WINE_TRY_ASM_LINK(["\t.globl _ac_test\n\t.type _ac_test,@function\n_ac_test:\t.long 0"],,,
      ac_cv_asm_func_def=".type @function",
    [WINE_TRY_ASM_LINK(["\t.globl _ac_test\n\t.type _ac_test,2\n_ac_test:\t.long 0"],,,
      ac_cv_asm_func_def=".type 2",
      ac_cv_asm_func_def="unknown")])]))

AH_TEMPLATE(__ASM_FUNC,[Define to a macro to generate an assembly function directive])
case "$ac_cv_asm_func_def" in
  ".def")
     AC_DEFINE([__ASM_FUNC(name)], [".def " __ASM_NAME(name) "; .scl 2; .type 32; .endef"]) ;;
  ".type @function")
     AC_DEFINE([__ASM_FUNC(name)], [".type " __ASM_NAME(name) ",@function"]) ;;
  ".type 2")
     AC_DEFINE([__ASM_FUNC(name)], [".type " __ASM_NAME(name) ",2"]) ;;
  *)
     AC_DEFINE([__ASM_FUNC(name)], [""]) ;;
esac
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for underscore on external symbols ****

AC_CACHE_CHECK([whether external symbols need an underscore prefix], ac_cv_c_extern_prefix,
    WINE_TRY_ASM_LINK([".globl _ac_test\n_ac_test:\t.long 0"],
                      [extern int ac_test;],
                      [if (ac_test) return 1],
                      ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no"))

AH_TEMPLATE(__ASM_NAME,[Define to a macro to generate an assembly name from a C symbol])
Alexandre Julliard's avatar
Alexandre Julliard committed
if test "$ac_cv_c_extern_prefix" = "yes"
then
  AC_DEFINE([__ASM_NAME(name)], ["_" name])
else
  AC_DEFINE([__ASM_NAME(name)], [name])
dnl **** Check how to do strings in assembler ****
Alexandre Julliard's avatar
Alexandre Julliard committed

AC_CACHE_CHECK([whether assembler accepts .string], ac_cv_c_asm_string,
    WINE_TRY_ASM_LINK([".data\n\t.string \"test\"\n\t.text"],,,
                      ac_cv_c_asm_string="yes",ac_cv_c_asm_string="no"))
Alexandre Julliard's avatar
Alexandre Julliard committed
if test "$ac_cv_c_asm_string" = "yes"
then
  AC_DEFINE(__ASM_STRING, [".string"], [Define to the assembler keyword used to specify an ASCII string])
else
    AC_CACHE_CHECK([whether assembler accepts .asciz], ac_cv_c_asm_asciz,
        WINE_TRY_ASM_LINK([".data\n\t.asciz \"test\"\n\t.text"],,,
                      ac_cv_c_asm_asciz="yes",ac_cv_c_asm_asciz="no"))
    if test "$ac_cv_c_asm_asciz" = "yes"
    then
      AC_DEFINE(__ASM_STRING, [".asciz"])
    else
      AC_DEFINE(__ASM_STRING, [".ascii"])
    fi					
fi

dnl **** Check for .short in assembler ****

AC_CACHE_CHECK([whether assembler accepts .short], ac_cv_c_asm_short,
    WINE_TRY_ASM_LINK([".data\n\t.short 1\n\t.text"],,,
                      ac_cv_c_asm_short="yes",ac_cv_c_asm_short="no"))
if test "$ac_cv_c_asm_short" = "yes"
then
  AC_DEFINE(__ASM_SHORT, [".short"], [Define to the assembler keyword used to specify a word value])
else
  AC_DEFINE(__ASM_SHORT, [".half"])
Alexandre Julliard's avatar
Alexandre Julliard committed
dnl **** Check for working dll ****

AC_SUBST(DLLIBS,"")
AC_SUBST(LDSHARED,"")
AC_SUBST(LIBEXT,"so")
AC_SUBST(IMPLIBEXT,"def")
case $host_os in
  cygwin*|mingw32*)
    AC_CHECK_TOOL(DLLTOOL,dlltool,false)
    AC_CHECK_TOOL(DLLWRAP,dllwrap,false)
    if test "$DLLWRAP" = "false"; then
      LIBEXT="a"
    else
      dnl FIXME - check whether dllwrap works correctly...
      LIBEXT="dll"
    fi
    ;;
  *)
    AC_CHECK_HEADERS(dlfcn.h,
        [AC_CHECK_FUNCS(dlopen,,
            [AC_CHECK_LIB(dl,dlopen,
                         [AC_DEFINE(HAVE_DLOPEN,1,[Define if you have dlopen])
                          DLLIBS="-ldl"],
                         [LIBEXT="a"])])],
        [LIBEXT="a"])

    if test "$LIBEXT" = "so"
    then
      AC_CACHE_CHECK([whether we can build a GNU style ELF dll], ac_cv_c_dll_gnuelf,
          [WINE_TRY_CFLAGS([-fPIC -shared -Wl,-soname,conftest.so.1.0,-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 \$(SONAME:%=-Wl,-soname,%)"
        LDDLL="\$(CC) -shared -Wl,-Bsymbolic"
        AC_CACHE_CHECK([whether the linker accepts -z defs], ac_cv_c_dll_zdefs,
          [WINE_TRY_CFLAGS([-fPIC -shared -Wl,-Bsymbolic,-z,defs],
                           ac_cv_c_dll_zdefs="yes",ac_cv_c_dll_zdefs="no")])
        if test "$ac_cv_c_dll_zdefs" = "yes"
        then
        AC_CACHE_CHECK([whether the linker accepts --export-dynamic], ac_cv_c_export_dynamic,
          [WINE_TRY_CFLAGS([-fPIC -Wl,--export-dynamic],
                           ac_cv_c_export_dynamic="yes",ac_cv_c_export_dynamic="no")])
        if test "$ac_cv_c_export_dynamic" = "yes"
        then
          AC_SUBST(LDEXECFLAGS,["-Wl,--export-dynamic"])

        case $host_cpu in
          *i[[3456789]]86*)
            AC_CACHE_CHECK([whether we can relocate the executable to 0x00110000], ac_cv_ld_reloc_exec,
              [saved_CFLAGS="$CFLAGS"
               CFLAGS="$CFLAGS -Wl,--section-start,.interp=0x00110400"
               AC_TRY_RUN([#include <unistd.h>
                           int main() { return (sbrk(32*1024*1024) == (void *)-1); }],
                          ac_cv_ld_reloc_exec="yes", ac_cv_ld_reloc_exec="no", ac_cv_ld_reloc_exec="no")
               CFLAGS="$saved_CFLAGS"])
            if test "$ac_cv_ld_reloc_exec" = "yes"
            then
              LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x00110400"
            fi
            ;;
        esac

        AC_CACHE_CHECK(whether we can build a UnixWare (Solaris) dll, ac_cv_c_dll_unixware,
            [WINE_TRY_CFLAGS([-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,%)"

    dnl Check for cross compiler to build test programs
    AC_SUBST(CROSSTEST,"")
    if test "$cross_compiling" = "no"
    then
      AC_CHECK_PROGS(CROSSCC,i586-mingw32msvc-gcc i386-mingw32-gcc,false)
      AC_CHECK_PROGS(DLLTOOL,i586-mingw32msvc-dlltool i386-mingw32-dlltool,false)
      AC_CHECK_PROGS(CROSSWINDRES,i586-mingw32msvc-windres i386-mingw32-windres,false)
      if test "$CROSSCC" != "false"; then CROSSTEST="\$(CROSSTEST)"; 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.]
)
case $build_os in
  cygwin*|mingw32*)
    AC_SUBST(LDPATH,"PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$PATH\"") ;;
    AC_SUBST(LDPATH,"LD_LIBRARY_PATH=\"\$(TOOLSDIR)/libs/unicode:\$\$LD_LIBRARY_PATH\"") ;;
dnl Mingw needs explicit msvcrt for linking libwine
case $host_os in
  mingw32*)
    AC_SUBST(CRTLIBS,"-lmsvcrt") ;;
esac

case $host_os in
  linux*)
    AC_SUBST(WINE_BINARIES,"wine-glibc wine-kthread wine-pthread")
    AC_SUBST(MAIN_BINARY,"wine-glibc")
    ;;
  *)
    AC_SUBST(WINE_BINARIES,"wine-kthread")
    AC_SUBST(MAIN_BINARY,"wine-kthread")
    ;;
Alexandre Julliard's avatar
Alexandre Julliard committed

dnl **** Get the soname for libraries that we load dynamically ****

if test "$LIBEXT" = "so"
  WINE_GET_SONAME(X11,XCreateWindow,[$X_LIBS $X_EXTRA_LIBS])
  WINE_GET_SONAME(Xext,XextCreateExtension,[$X_LIBS -lX11 $X_EXTRA_LIBS])
  WINE_GET_SONAME(Xrender,XRenderQueryExtension,[$X_LIBS -lXext -lX11 $X_EXTRA_LIBS])
  WINE_GET_SONAME(freetype,FT_Init_FreeType,[$X_LIBS])
  WINE_GET_SONAME(GL,glXQueryExtension,[$X_LIBS $X_EXTRA_LIBS])
  WINE_GET_SONAME(cups,cupsGetDefault)
  WINE_GET_SONAME(jack,jack_client_new)
  WINE_GET_SONAME(fontconfig,FcInit)
  WINE_GET_SONAME(ssl,SSL_library_init)
  WINE_GET_SONAME(crypto,BIO_new_socket)
  WINE_GET_SONAME(ncurses,waddch)
  WINE_GET_SONAME(curses,waddch)
dnl **** Check for functions ****

Patrik Stridvall's avatar
Patrik Stridvall committed
AC_FUNC_ALLOCA()
AC_CHECK_FUNCS(\
	_lwp_create \