Patch #752671: NetBSD needs to link libintl to _locale.so.
diff --git a/Modules/Setup.dist b/Modules/Setup.dist
index 7d486dc..3ca6dab 100644
--- a/Modules/Setup.dist
+++ b/Modules/Setup.dist
@@ -173,7 +173,8 @@
 
 #unicodedata unicodedata.c    # static Unicode character database
 
-#_locale _localemodule.c  # access to ISO C locale support
+# access to ISO C locale support
+#_locale _localemodule.c  # -lintl
 
 
 # Modules with some UNIX dependencies -- on by default:
diff --git a/configure b/configure
index 7c9a47e..810e718 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.416 .
+# From configure.in Revision: 1.417 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.53 for python 2.3.
 #
@@ -9930,6 +9930,70 @@
  # 'Real Time' functions on Solaris
 					    # posix4 on Solaris 2.6
 					    # pthread (first!) on Linux
+# check if we need libintl for locale functions
+echo "$as_me:$LINENO: checking for textdomain in -lintl" >&5
+echo $ECHO_N "checking for textdomain in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_textdomain+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char textdomain ();
+#ifdef F77_DUMMY_MAIN
+#  ifdef __cplusplus
+     extern "C"
+#  endif
+   int F77_DUMMY_MAIN() { return 1; }
+#endif
+int
+main ()
+{
+textdomain ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_textdomain=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_intl_textdomain=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_textdomain" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_textdomain" >&6
+if test $ac_cv_lib_intl_textdomain = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_LIBINTL 1
+_ACEOF
+
+fi
+
 
 # checks for system dependent C++ extensions support
 case "$ac_sys_system" in
diff --git a/configure.in b/configure.in
index 1bd0f61..fb1c962 100644
--- a/configure.in
+++ b/configure.in
@@ -1346,6 +1346,10 @@
 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
 					    # posix4 on Solaris 2.6
 					    # pthread (first!) on Linux
+# check if we need libintl for locale functions
+AC_CHECK_LIB(intl, textdomain,
+	AC_DEFINE(WITH_LIBINTL, 1,
+	[Define to 1 if libintl is needed for locale functions.]))
 
 # checks for system dependent C++ extensions support
 case "$ac_sys_system" in
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 2f14b84..e0e2f5b 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -781,6 +781,9 @@
    Dyld is necessary to support frameworks. */
 #undef WITH_DYLD
 
+/* Define to 1 if libintl is needed for locale functions. */
+#undef WITH_LIBINTL
+
 /* Define if you want to produce an OpenStep/Rhapsody framework (shared
    library plus accessory files). */
 #undef WITH_NEXT_FRAMEWORK
diff --git a/setup.py b/setup.py
index 76005a1..d461880 100644
--- a/setup.py
+++ b/setup.py
@@ -339,7 +339,9 @@
         if have_unicode:
             exts.append( Extension('unicodedata', ['unicodedata.c']) )
         # access to ISO C locale support
-        if platform in ['cygwin', 'aix4']:
+        data = open('pyconfig.h').read()
+        m = re.search(r"#s*define\s+WITH_LIBINTL\s+1\s*", data)
+        if m is not None:
             locale_libs = ['intl']
         else:
             locale_libs = []