--- configure.orig	2014-03-14 20:50:56.000000000 +0100
+++ configure	2014-03-14 20:51:25.000000000 +0100
@@ -779,6 +779,8 @@
 GBM_PC_REQ_PRIV
 LIBUDEV_LIBS
 LIBUDEV_CFLAGS
+LIBDEVQ_LIBS
+LIBDEVQ_CFLAGS
 OSMESA_PC_LIB_PRIV
 OSMESA_PC_REQ
 OSMESA_MESA_DEPS
@@ -1126,6 +1128,8 @@
 NOUVEAU_LIBS
 RADEON_CFLAGS
 RADEON_LIBS
+LIBDEVQ_CFLAGS
+LIBDEVQ_LIBS
 LIBUDEV_CFLAGS
 LIBUDEV_LIBS
 XORG_CFLAGS
@@ -1930,6 +1934,10 @@
   RADEON_CFLAGS
               C compiler flags for RADEON, overriding pkg-config
   RADEON_LIBS linker flags for RADEON, overriding pkg-config
+  LIBDEVQ_CFLAGS
+              C compiler flags for LIBDEVQ, overriding pkg-config
+  LIBDEVQ_LIBS
+              linker flags for LIBDEVQ, overriding pkg-config
   LIBUDEV_CFLAGS
               C compiler flags for LIBUDEV, overriding pkg-config
   LIBUDEV_LIBS
@@ -21184,9 +21192,34 @@
         DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
 
-        if test "x$DRI_DIRS" = "xyes"; then
-            DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
-        fi
+        case "$host_cpu" in
+        x86_64|ia64)
+            # i810 is missing because there is no x86-64 system where it
+            # could *ever* be used.
+            if test "x$DRI_DIRS" = "xyes"; then
+                DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
+            fi
+            ;;
+        i*86)
+            if test "x$DRI_DIRS" = "xyes"; then
+                DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
+            fi
+            ;;
+        powerpc*)
+            # Build only the drivers for cards that exist on PowerPC.
+            # At some point MGA will be added, but not yet.
+            if test "x$DRI_DIRS" = "xyes"; then
+                DRI_DIRS="r200 radeon swrast"
+           fi
+            ;;
+        sparc*)
+            # Build only the drivers for cards that exist on SPARC.
+            if test "x$DRI_DIRS" = "xyes"; then
+                DRI_DIRS="r200 radeon swrast"
+            fi
+            ;;
+        esac
+
         ;;
     gnu*)
         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
@@ -21684,6 +21717,81 @@
 if test "x$enable_gbm" = xyes; then
     SRC_DIRS="$SRC_DIRS gbm"
 
+    case "$host_os" in
+    *freebsd*)
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDEVQ" >&5
+$as_echo_n "checking for LIBDEVQ... " >&6; }
+
+if test -n "$LIBDEVQ_CFLAGS"; then
+    pkg_cv_LIBDEVQ_CFLAGS="$LIBDEVQ_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdevq-1.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBDEVQ_CFLAGS=`$PKG_CONFIG --cflags "libdevq-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBDEVQ_LIBS"; then
+    pkg_cv_LIBDEVQ_LIBS="$LIBDEVQ_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdevq-1.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBDEVQ_LIBS=`$PKG_CONFIG --libs "libdevq-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdevq-1.0" 2>&1`
+        else
+	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdevq-1.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBDEVQ_PKG_ERRORS" >&5
+
+	as_fn_error $? "gbm needs libdevq" "$LINENO" 5
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	as_fn_error $? "gbm needs libdevq" "$LINENO" 5
+else
+	LIBDEVQ_CFLAGS=$pkg_cv_LIBDEVQ_CFLAGS
+	LIBDEVQ_LIBS=$pkg_cv_LIBDEVQ_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+        ;;
+    *)
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUDEV" >&5
@@ -21755,6 +21863,8 @@
 $as_echo "yes" >&6; }
 
 fi
+        ;;
+    esac
 
     if test "x$enable_dri" = xyes; then
         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
@@ -21763,7 +21873,14 @@
         fi
     fi
 fi
-GBM_PC_REQ_PRIV="libudev"
+case "$host_os" in
+*freebsd*)
+    GBM_PC_REQ_PRIV="libdevq-1.0"
+    ;;
+*)
+    GBM_PC_REQ_PRIV="libudev"
+    ;;
+esac
 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
 
 
@@ -21782,6 +21899,81 @@
 
     if test "$enable_static" != yes; then
         # build egl_glx when libGL is built
+        case "$host_os" in
+        *freebsd*)
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDEVQ" >&5
+$as_echo_n "checking for LIBDEVQ... " >&6; }
+
+if test -n "$LIBDEVQ_CFLAGS"; then
+    pkg_cv_LIBDEVQ_CFLAGS="$LIBDEVQ_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdevq-1.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBDEVQ_CFLAGS=`$PKG_CONFIG --cflags "libdevq-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBDEVQ_LIBS"; then
+    pkg_cv_LIBDEVQ_LIBS="$LIBDEVQ_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdevq-1.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBDEVQ_LIBS=`$PKG_CONFIG --libs "libdevq-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdevq-1.0" 2>&1`
+        else
+	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdevq-1.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBDEVQ_PKG_ERRORS" >&5
+
+	have_libdevq=no
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	have_libdevq=no
+else
+	LIBDEVQ_CFLAGS=$pkg_cv_LIBDEVQ_CFLAGS
+	LIBDEVQ_LIBS=$pkg_cv_LIBDEVQ_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_libdevq=yes
+fi
+            ;;
+        *)
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUDEV" >&5
@@ -21853,8 +22045,12 @@
 $as_echo "yes" >&6; }
 	have_libudev=yes
 fi
+            ;;
+        esac
         if test "$have_libudev" = yes; then
             DEFINES="$DEFINES -DHAVE_LIBUDEV"
+        elif test "$have_libdevq" = yes; then
+            DEFINES="$DEFINES -DHAVE_LIBDEVQ"
         fi
 
         if test "x$enable_dri" = xyes; then
@@ -23053,9 +23249,19 @@
 		;;
 	esac
 
-        case "$plat$have_libudev" in
-                waylandno|drmno)
-                    as_fn_error $? "cannot build $plat platfrom without udev" "$LINENO" 5 ;;
+        case "$host_os" in
+        *freebsd*)
+            case "$plat$have_libdevq" in
+                    waylandno|drmno)
+                        as_fn_error $? "cannot build $plat platfrom without libdevq" "$LINENO" 5 ;;
+            esac
+            ;;
+        *)
+            case "$plat$have_libudev" in
+                    waylandno|drmno)
+                        as_fn_error $? "cannot build $plat platfrom without udev" "$LINENO" 5 ;;
+            esac
+            ;;
         esac
 done
 
@@ -23348,29 +23554,6 @@
                 CLANG_LIBDIR=${LLVM_LIBDIR}
             fi
             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
-            as_ac_File=`$as_echo "ac_cv_file_"$CLANG_RESOURCE_DIR/include/stddef.h"" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$CLANG_RESOURCE_DIR/include/stddef.h\"" >&5
-$as_echo_n "checking for \"$CLANG_RESOURCE_DIR/include/stddef.h\"... " >&6; }
-if eval \${$as_ac_File+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r ""$CLANG_RESOURCE_DIR/include/stddef.h""; then
-  eval "$as_ac_File=yes"
-else
-  eval "$as_ac_File=no"
-fi
-fi
-eval ac_res=\$$as_ac_File
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
-
-else
-  as_fn_error $? "Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries." "$LINENO" 5
-fi
-
         fi
     else
 	MESA_LLVM=0
@@ -23453,6 +23636,81 @@
 
 gallium_require_drm_loader() {
     if test "x$enable_gallium_loader" = xyes; then
+        case "$host_os" in
+        *freebsd*)
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDEVQ" >&5
+$as_echo_n "checking for LIBDEVQ... " >&6; }
+
+if test -n "$LIBDEVQ_CFLAGS"; then
+    pkg_cv_LIBDEVQ_CFLAGS="$LIBDEVQ_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdevq-1.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBDEVQ_CFLAGS=`$PKG_CONFIG --cflags "libdevq-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBDEVQ_LIBS"; then
+    pkg_cv_LIBDEVQ_LIBS="$LIBDEVQ_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdevq-1.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBDEVQ_LIBS=`$PKG_CONFIG --libs "libdevq-1.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdevq-1.0" 2>&1`
+        else
+	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdevq-1.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBDEVQ_PKG_ERRORS" >&5
+
+	as_fn_error $? "Gallium drm loader requires libdevq" "$LINENO" 5
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	as_fn_error $? "Gallium drm loader requires libdevq" "$LINENO" 5
+else
+	LIBDEVQ_CFLAGS=$pkg_cv_LIBDEVQ_CFLAGS
+	LIBDEVQ_LIBS=$pkg_cv_LIBDEVQ_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+            ;;
+        *)
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUDEV" >&5
@@ -23524,6 +23782,8 @@
 $as_echo "yes" >&6; }
 
 fi
+            ;;
+        esac
         if test "x$have_libdrm" != xyes; then
             as_fn_error $? "Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED" "$LINENO" 5
         fi
@@ -23534,7 +23794,7 @@
 radeon_llvm_check() {
     LLVM_REQUIRED_VERSION_MAJOR="3"
     LLVM_REQUIRED_VERSION_MINOR="2"
-    if test "$LLVM_VERSION_INT" -ne "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
+    if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
         as_fn_error $? "LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR with R600 target enabled is required.
                      To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from:
                      git://people.freedesktop.org/~tstellar/llvm master
