$NetBSD: patch-ak,v 1.4 2009/09/22 15:50:46 joerg Exp $

--- configure.in.orig	2009-10-07 15:29:47.000000000 +0200
+++ configure.in
@@ -606,8 +606,8 @@ if test x$glib_native_win32 != xyes && t
 			{
 			  long long b, a = -0x3AFAFAFAFAFAFAFALL;
 			  char buffer[1000];
-			  sprintf (buffer, "%${format}u", a);
-  			  sscanf (buffer, "%${format}u", &b);
+			  sprintf (buffer, "%${format}d", a);
+  			  sscanf (buffer, "%${format}d", &b);
 			  exit (b!=a);
 			}
 			],
@@ -616,7 +616,7 @@ if test x$glib_native_win32 != xyes && t
 			[],[:])
 		done])
 	if test -n "$glib_cv_long_long_format"; then
-	  AC_MSG_RESULT(%${glib_cv_long_long_format}u)
+	  AC_MSG_RESULT(%${glib_cv_long_long_format}d)
 	  AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
 	  if test x"$glib_cv_long_long_format" = xI64; then
 	    AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
@@ -629,7 +629,7 @@ elif test x$ac_cv_sizeof___int64 = x8; t
 	AC_MSG_CHECKING(for format to printf and scanf a guint64)
 	# We know this is MSVCRT.DLL, and what the formats are
 	glib_cv_long_long_format=I64
-	AC_MSG_RESULT(%${glib_cv_long_long_format}u)
+	AC_MSG_RESULT(%${glib_cv_long_long_format}d)
         AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
 	AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
 fi
@@ -1002,14 +1002,14 @@ if test $glib_native_win32 = no; then
   AC_CHECK_FUNCS(strndup setresuid setreuid)
   AC_CHECK_HEADERS(sys/prctl.h arpa/nameser_compat.h)
   AC_CHECK_FUNC(res_query, ,
-    [AC_CHECK_LIB(resolv, res_query, [ LIBASYNCNS_LIBADD="-lresolv" ],
+    [AC_CHECK_LIB(socket, res_query, [ LIBASYNCNS_LIBADD="-lsocket" ],
       [ save_libs="$LIBS"
-        LIBS="-lresolv $LIBS"
-        AC_MSG_CHECKING([for res_query in -lresolv (alternate version)])
+        LIBS="-lsocket $LIBS"
+        AC_MSG_CHECKING([for res_query in -lsocket (alternate version)])
         AC_LINK_IFELSE(
           [AC_LANG_PROGRAM([[#include <resolv.h>]], [[res_query(0,0,0,0,0)]])],
           [ AC_MSG_RESULT(yes)
-  	  LIBASYNCNS_LIBADD="-lresolv" ],
+  	  LIBASYNCNS_LIBADD="-lsocket" ],
           [ AC_MSG_RESULT(no)
             AC_CHECK_LIB(bind, res_query,
               [ LIBASYNCNS_LIBADD="-lbind" ],
@@ -1384,6 +1384,7 @@ fi
 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
 G_MODULE_NEED_USCORE=0
 G_MODULE_BROKEN_RTLD_GLOBAL=0
+G_MODULE_BROKEN_DLOPEN_NULL=0
 G_MODULE_HAVE_DLERROR=0
 dnl *** force native WIN32 shared lib loader 
 if test -z "$G_MODULE_IMPL"; then
@@ -1508,6 +1509,38 @@ dnl *** check for having dlerror()
 		[G_MODULE_HAVE_DLERROR=0])
 	LIBS="$LIBS_orig"
 fi
+dnl *** check for dlopen(NULL, 0) brokenness
+	AC_CACHE_CHECK([for dlopen(NULL, 0) brokenness],
+		glib_cv_dlopennull_broken,[
+		AC_TRY_RUN([
+#include <stdio.h>
+#include <dlfcn.h>
+#ifndef RTLD_GLOBAL
+#  define RTLD_GLOBAL 0
+#endif
+#ifndef RTLD_LAZY
+#  define RTLD_LAZY 0
+#endif
+int gettext;
+int main () {
+    void *handle;
+    handle = dlopen ("libm.so", RTLD_GLOBAL | RTLD_LAZY);
+    if (!handle) return 0;
+    handle = dlopen (NULL, 0);
+    if (!handle) return 0;
+    handle = dlsym (handle, "sin");
+    return handle == NULL;
+}
+		],
+		[glib_cv_dlopennull_broken=no],
+		[glib_cv_dlopennull_broken=yes],
+		[glib_cv_dlopennull_broken=no])
+	])
+	if test "x$glib_cv_dlopennull_broken" = "xyes"; then
+		G_MODULE_BROKEN_DLOPEN_NULL=1
+	else
+		G_MODULE_BROKEN_DLOPEN_NULL=0
+	fi
 dnl *** done, have we got an implementation?
 if test -z "$G_MODULE_IMPL"; then
 	G_MODULE_IMPL=0
@@ -1537,6 +1570,8 @@ AC_SUBST(G_MODULE_PLUGIN_LIBS)
 AC_SUBST(G_MODULE_LDFLAGS)
 AC_SUBST(G_MODULE_HAVE_DLERROR)
 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
+AC_SUBST(G_MODULE_BROKEN_DLOPEN_NULL)
+
 AC_SUBST(G_MODULE_NEED_USCORE)
 AC_SUBST(GLIB_DEBUG_FLAGS)
 
@@ -1925,22 +1960,8 @@ if test x"$have_threads" != xno; then
         G_THREAD_LIBS="-lpthread -lthread"
         ;;
       *)
-        for flag in pthread pthreads mt; do
-          glib_save_CFLAGS="$CFLAGS"
-          CFLAGS="$CFLAGS -$flag"
-          AC_TRY_RUN(glib_thread_test(0),
-                     glib_flag_works=yes,
-                     glib_flag_works=no,
-                     [AC_LINK_IFELSE(glib_thread_test(0),
-                                     glib_flag_works=yes,
-                                     glib_flag_works=no)])
-          CFLAGS="$glib_save_CFLAGS"
-          if test $glib_flag_works = yes ; then
-             G_THREAD_CFLAGS=-$flag
-	     G_THREAD_LIBS=-$flag
-	     break;
-          fi
-        done
+	G_THREAD_LIBS="${PTHREAD_LDFLAGS} ${PTHREAD_LIBS}"
+	G_THREAD_CFLAGS="${PTHREAD_CFLAGS}"
          ;;
     esac 
   fi
@@ -2336,6 +2357,10 @@ case $host in
   *) 	 
     G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS" 	 
     ;;
+  *-*-netbsd*)
+    # On NetBSD, pkgsrc's libtool does the right thing.
+    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
+    ;;
 esac
 
 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
