Handle fbconfig comparison correctly for attributes the X server didn't send.
[mesa.git] / configure.ac
index 2acbd67e510493af688b05bed33bb2d348abc0ea..48921e010e2d5150787f526f4f0e322db1dcde8f 100644 (file)
@@ -26,10 +26,25 @@ dnl Check for progs
 AC_PROG_CPP
 AC_PROG_CC
 AC_PROG_CXX
-AC_PATH_PROG(MAKE, make)
+AC_CHECK_PROGS(MAKE, [gmake make])
 AC_PATH_PROG(MKDEP, makedepend)
 AC_PATH_PROG(SED, sed)
 
+MKDEP_OPTIONS=-fdepend
+dnl Ask gcc where it's keeping its secret headers
+if test "x$GCC" = xyes; then
+    GCC_INCLUDES=`$CC -print-file-name=include`
+    if test "x$GCC_INCLUDES" != x; then
+        MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
+    fi
+fi
+AC_SUBST(MKDEP_OPTIONS)
+
+dnl Check to see if dlopen is in default libraries (like Solaris, which
+dnl has it in libc), or if libdl is needed to get it.
+AC_CHECK_FUNC([dlopen], [],
+       AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
+
 dnl Make sure the pkg-config macros are defined
 m4_ifdef([PKG_PROG_PKG_CONFIG],,[
     AC_MSG_ERROR([The pkg-config autoconf macros are not defined.
@@ -54,11 +69,11 @@ AC_SUBST(X11_INCLUDES)
 dnl Compiler macros
 DEFINES=""
 AC_SUBST(DEFINES)
-if test "x$GCC" = xyes; then
-    DEFINES="-D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
-fi
 case "$host_os" in
 linux*)
+if test "x$GCC" = xyes; then
+    DEFINES="$DEFINES -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
+fi
     DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
     ;;
 esac
@@ -66,9 +81,15 @@ esac
 dnl Add flags for gcc and g++
 if test "x$GCC" = xyes; then
     CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
+
+    # Work around aliasing bugs - developers should comment this out
+    CFLAGS="$CFLAGS -fno-strict-aliasing"
 fi
 if test "x$GXX" = xyes; then
     CXXFLAGS="$CXXFLAGS -Wall"
+
+    # Work around aliasing bugs - developers should comment this out
+    CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
 fi
 
 dnl These should be unnecessary, but let the user set them if they want
@@ -275,7 +296,13 @@ fi
 dnl If $with_demos is yes, directories will be added as libs available
 PROGRAM_DIRS=""
 case "$with_demos" in
-no|yes) ;;
+no) ;;
+yes)
+    # If the driver isn't osmesa, we have libGL and can build xdemos
+    if test "$mesa_driver" != osmesa; then
+        PROGRAM_DIRS="xdemos"
+    fi
+    ;;
 *)
     # verify the requested demos directories exist
     demos=`IFS=,; echo $with_demos`
@@ -319,6 +346,17 @@ xlib|dri)
     ;;
 esac
 
+# SELinux awareness.
+AC_ARG_ENABLE(selinux, AS_HELP_STRING([--enable-selinux], [Build SELinux-aware Mesa (default: disabled)]), [MESA_SELINUX=$enableval], [MESA_SELINUX=no])
+if test "x$enable_selinux" = "xyes"; then
+    AC_CHECK_HEADER(selinux/selinux.h,,
+                   AC_MSG_ERROR([SELinux headers not found]))
+    AC_CHECK_LIB(selinux,is_selinux_enabled,,
+                AC_MSG_ERROR([SELinux library not found]))
+    SELINUX_LIBS="-lselinux"
+    DEFINES="$DEFINES -DMESA_SELINUX"
+fi
+
 dnl
 dnl libGL configuration per driver
 dnl
@@ -333,7 +371,7 @@ xlib)
         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
     fi
-    GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread"
+    GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
 
     # if static, move the external libraries to the programs
     # and empty the libraries for libGL
@@ -350,6 +388,7 @@ dri)
 
     # Check for libdrm
     PKG_CHECK_MODULES(LIBDRM, libdrm)
+    PKG_CHECK_MODULES(DRI2PROTO, dri2proto >= 1.1)
 
     # find the DRI deps for libGL
     if test "$x11_pkgconfig" = yes; then
@@ -363,7 +402,7 @@ dri)
     fi
 
     # need DRM libs, -lpthread, etc.
-    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread -ldl"
+    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
     ;;
 osmesa)
     # No libGL for osmesa
@@ -442,12 +481,6 @@ if test "$mesa_driver" = dri; then
         PROGRAM_DIRS="egl"
     fi
 
-    # default drivers
-    if test "x$DRI_DIRS" = x; then
-        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
-            savage sis tdfx trident unichrome ffb"
-    fi
-
     # Platform specific settings and drivers to build
     case "$host_os" in
     linux*)
@@ -496,6 +529,13 @@ if test "$mesa_driver" = dri; then
         fi
         ;;
     esac
+
+    # default drivers
+    if test "x$DRI_DIRS" = x; then
+        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
+            savage sis tdfx trident unichrome ffb"
+    fi
+
     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
 
     # Check for expat
@@ -513,7 +553,7 @@ if test "$mesa_driver" = dri; then
         AC_MSG_ERROR([Expat required for DRI.]))
 
     # put all the necessary libs together
-    DRI_LIB_DEPS="$LIBDRM_LIBS $EXPAT_LIB -lm -lpthread -ldl"
+    DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
 fi
 AC_SUBST(DRI_DIRS)
 AC_SUBST(EXPAT_INCLUDES)
@@ -523,20 +563,20 @@ dnl
 dnl OSMesa configuration
 dnl
 if test "$mesa_driver" = xlib; then
-    default_xlib_osmesa=yes
+    default_gl_osmesa=yes
 else
-    default_xlib_osmesa=no
-fi
-AC_ARG_ENABLE(xlib-osmesa,
-    [AS_HELP_STRING([--disable-xlib-osmesa],
-        [enable OSMesa on Xlib libGL @<:@default=enabled for xlib driver@:>@])],
-        xlib_osmesa="$enableval",
-        xlib_osmesa="$default_xlib_osmesa")
-if test "x$xlib_osmesa" = xyes; then
-    if test "$mesa_driver" = xlib; then
-        DRIVER_DIRS="$DRIVER_DIRS osmesa"
+    default_gl_osmesa=no
+fi
+AC_ARG_ENABLE(gl-osmesa,
+    [AS_HELP_STRING([--enable-gl-osmesa],
+        [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
+        gl_osmesa="$enableval",
+        gl_osmesa="$default_gl_osmesa")
+if test "x$gl_osmesa" = xyes; then
+    if test "$mesa_driver" = osmesa; then
+        AC_MSG_ERROR([libGL is not available for OSMesa driver])
     else
-        AC_MSG_ERROR([Can only enable OSMesa on libGL for Xlib])
+        DRIVER_DIRS="$DRIVER_DIRS osmesa"
     fi
 fi
 
@@ -568,7 +608,7 @@ case "$mesa_driver" in
 osmesa)
     # only link librararies with osmesa if shared
     if test "$enable_static" = no; then
-        OSMESA_LIB_DEPS="-lm -lpthread"
+        OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS"
     else
         OSMESA_LIB_DEPS=""
     fi
@@ -616,11 +656,6 @@ if test "x$enable_glu" = xyes; then
         fi
         ;;
     *)
-        # If GLU is available, we can build the xdemos
-        if test "$with_demos" = yes; then
-            PROGRAM_DIRS="$PROGRAM_DIRS xdemos"
-        fi
-
         # If static, empty GLU_LIB_DEPS and add libs for programs to link
         if test "$enable_static" = no; then
             GLU_LIB_DEPS="-lm"
@@ -777,7 +812,7 @@ linux*)
     ;;
 freebsd*)
     PIC_FLAGS="-fPIC"
-    case "$host_os" in
+    case "$host_cpu" in
     i*86)
         PIC_FLAGS=""
         if test "x$enable_asm" = xyes; then
@@ -822,21 +857,17 @@ echo "        libdir:          $libdir"
 dnl Driver info
 echo ""
 echo "        Driver:          $mesa_driver"
-case "$mesa_driver" in
-xlib|osmesa)
-    if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
-        echo "        OSMesa:          lib$OSMESA_LIB"
-    else
-        echo "        OSMesa:          no"
-    fi
-    ;;
-dri)
+if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
+    echo "        OSMesa:          lib$OSMESA_LIB"
+else
+    echo "        OSMesa:          no"
+fi
+if test "$mesa_driver" = dri; then
     # cleanup the drivers var
     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
     echo "        DRI drivers:     $dri_dirs"
     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
-    ;;
-esac
+fi
 
 dnl Libraries
 echo ""
@@ -868,5 +899,5 @@ echo "        CXXFLAGS:        $cxxflags"
 echo "        Macros:          $defines"
 
 echo ""
-echo "        Run 'make' to build Mesa"
+echo "        Run '${MAKE-make}' to build Mesa"
 echo ""