diff --git a/Misc/NEWS b/Misc/NEWS
index 555d5e8..03f6dda 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1121,6 +1121,9 @@
 
 - python-config now supports multiple options on the same command line.
 
+- Issue #8509: Fix quoting in help strings and code snippets in configure.in.
+
+
 Documentation
 ------------
 
diff --git a/configure b/configure
index 37e0576..3b830ba 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 80191 .
+# From configure.in Revision: 80276 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for python 3.2.
 #
@@ -2058,8 +2058,8 @@
 
 
 ##AC_ARG_WITH(dyld,
-##            AC_HELP_STRING(--with-dyld,
-##                           Use (OpenStep|Rhapsody) dynamic linker))
+##            AC_HELP_STRING([--with-dyld],
+##                           [Use (OpenStep|Rhapsody) dynamic linker]))
 ##
 # Set name for machine-dependent library files
 
@@ -3834,7 +3834,7 @@
   { echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 
 
@@ -5439,7 +5439,7 @@
 else
   ac_cv_header_stdc=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
@@ -5460,7 +5460,7 @@
 else
   ac_cv_header_stdc=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
@@ -6560,7 +6560,7 @@
 
 
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 { echo "$as_me:$LINENO: result: $was_it_defined" >&5
 echo "${ECHO_T}$was_it_defined" >&6; }
@@ -7090,7 +7090,7 @@
 else
   ac_cv_type_uid_t=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 { echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
@@ -15793,7 +15793,7 @@
 else
   unistd_defines_pthreads=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
     { echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5
 echo "${ECHO_T}$unistd_defines_pthreads" >&6; }
@@ -17091,7 +17091,7 @@
   $EGREP "yes" >/dev/null 2>&1; then
   ipv6type=$i
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 			;;
 		kame)
@@ -17114,7 +17114,7 @@
 				ipv6libdir=/usr/local/v6/lib
 				ipv6trylibc=yes
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 			;;
 		linux-glibc)
@@ -17135,7 +17135,7 @@
   ipv6type=$i;
 				ipv6trylibc=yes
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 			;;
 		linux-inet6)
@@ -17173,7 +17173,7 @@
 				ipv6lib=inet6;
 				ipv6libdir=/usr/local/v6/lib
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 			;;
 		v6d)
@@ -17196,7 +17196,7 @@
 				ipv6libdir=/usr/local/v6/lib;
 				BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 			;;
 		zeta)
@@ -17218,7 +17218,7 @@
 				ipv6lib=inet6;
 				ipv6libdir=/usr/local/v6/lib
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 			;;
 		esac
@@ -25733,7 +25733,7 @@
 _ACEOF
 
 fi
-rm -f -r conftest*
+rm -f conftest*
 
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -25752,7 +25752,7 @@
 _ACEOF
 
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
@@ -26022,7 +26022,7 @@
 _ACEOF
 
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
diff --git a/configure.in b/configure.in
index 7f8945e..4feb4a3 100644
--- a/configure.in
+++ b/configure.in
@@ -88,7 +88,7 @@
 
 AC_MSG_CHECKING([for --enable-universalsdk])
 AC_ARG_ENABLE(universalsdk,
-	AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
+	AC_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build against Mac OS X 10.4u SDK (ppc/i386)]),
 [
 	case $enableval in
 	yes)
@@ -131,7 +131,7 @@
 AC_SUBST(LIPO_32BIT_FLAGS)
 AC_MSG_CHECKING(for --with-universal-archs)
 AC_ARG_WITH(universal-archs,
-    AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
+    AC_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]),
 [
 	AC_MSG_RESULT($withval)
 	UNIVERSAL_ARCHS="$withval"
@@ -143,8 +143,8 @@
 
 
 AC_ARG_WITH(framework-name,
-              AC_HELP_STRING(--with-framework-name=FRAMEWORK, 
-                             specify an alternate name of the framework built with --enable-framework),
+              AC_HELP_STRING([--with-framework-name=FRAMEWORK],
+                             [specify an alternate name of the framework built with --enable-framework]),
 [
     PYTHONFRAMEWORK=${withval}
     PYTHONFRAMEWORKDIR=${withval}.framework
@@ -156,7 +156,7 @@
 ])
 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 AC_ARG_ENABLE(framework,
-              AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
+              AC_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
 [
 	case $enableval in
 	yes) 
@@ -230,8 +230,8 @@
 AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
 
 ##AC_ARG_WITH(dyld,
-##            AC_HELP_STRING(--with-dyld,
-##                           Use (OpenStep|Rhapsody) dynamic linker))
+##            AC_HELP_STRING([--with-dyld],
+##                           [Use (OpenStep|Rhapsody) dynamic linker]))
 ##
 # Set name for machine-dependent library files
 AC_SUBST(MACHDEP)
@@ -417,7 +417,7 @@
 # on that fiddles with OPT and BASECFLAGS?
 AC_MSG_CHECKING(for --without-gcc)
 AC_ARG_WITH(gcc,
-            AC_HELP_STRING(--without-gcc,never use gcc),
+            AC_HELP_STRING([--without-gcc], [never use gcc]),
 [
 	case $withval in
 	no)	CC=${CC:-cc}
@@ -514,7 +514,7 @@
 AC_EXEEXT
 AC_MSG_CHECKING(for --with-suffix)
 AC_ARG_WITH(suffix,
-            AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
+            AC_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
 [
 	case $withval in
 	no)	EXEEXT=;;
@@ -642,7 +642,7 @@
 
 AC_MSG_CHECKING(for --enable-shared)
 AC_ARG_ENABLE(shared,
-              AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
+              AC_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
 
 if test -z "$enable_shared"
 then 
@@ -657,7 +657,7 @@
 
 AC_MSG_CHECKING(for --enable-profiling)
 AC_ARG_ENABLE(profiling,
-              AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
+              AC_HELP_STRING([--enable-profiling], [enable C-level code profiling]),
 [ac_save_cc="$CC"
  CC="$CC -pg"
  AC_TRY_RUN([int main() { return 0; }],
@@ -793,7 +793,7 @@
 # Check for --with-pydebug
 AC_MSG_CHECKING(for --with-pydebug)
 AC_ARG_WITH(pydebug, 
-            AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
+            AC_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
 [
 if test "$withval" != no
 then 
@@ -1351,7 +1351,7 @@
 #define _LARGEFILE_SOURCE 1
 #define _FILE_OFFSET_BITS 64
 #include <sys/resource.h>
-],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
+],[struct rlimit foo;],sol_lfs_bug=no,sol_lfs_bug=yes)
 AC_MSG_RESULT($sol_lfs_bug)
 if test "$sol_lfs_bug" = "yes"; then
   use_lfs=no
@@ -1385,7 +1385,7 @@
 AC_TYPE_INT32_T
 AC_TYPE_INT64_T
 AC_CHECK_TYPE(ssize_t,
-  AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
+  AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
 
 # Sizes of various common basic types
 # ANSI C requires sizeof(char) == 1, so no need to check it
@@ -1936,7 +1936,7 @@
 
 AC_MSG_CHECKING(for --with-libs)
 AC_ARG_WITH(libs,
-            AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
+            AC_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
 [
 AC_MSG_RESULT($withval)
 LIBS="$withval $LIBS"
@@ -1948,14 +1948,14 @@
 # Check for use of the system expat library
 AC_MSG_CHECKING(for --with-system-expat)
 AC_ARG_WITH(system_expat,
-            AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
+            AC_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]))
 
 AC_MSG_RESULT($with_system_expat)
 
 # Check for use of the system libffi library
 AC_MSG_CHECKING(for --with-system-ffi)
 AC_ARG_WITH(system_ffi,
-            AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
+            AC_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]))
 
 if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
     LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
@@ -1989,7 +1989,7 @@
 AC_SUBST(SIGNAL_OBJS)
 AC_MSG_CHECKING(for --with-signal-module)
 AC_ARG_WITH(signal-module,
-            AC_HELP_STRING(--with-signal-module, disable/enable signal module))
+            AC_HELP_STRING([--with-signal-module], [disable/enable signal module]))
 
 if test -z "$with_signal_module"
 then with_signal_module="yes"
@@ -2011,7 +2011,7 @@
 AC_MSG_CHECKING(for --with-dec-threads)
 AC_SUBST(LDLAST)
 AC_ARG_WITH(dec-threads,
-            AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
+            AC_HELP_STRING([--with-dec-threads], [use DEC Alpha/OSF1 thread-safe libraries]),
 [
 AC_MSG_RESULT($withval)
 LDLAST=-threads
@@ -2031,12 +2031,12 @@
 AC_MSG_CHECKING(for --with-threads)
 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 AC_ARG_WITH(threads,
-            AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
+            AC_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
 
 # --with-thread is deprecated, but check for it anyway
 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 AC_ARG_WITH(thread,
-            AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
+            AC_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
             [with_threads=$with_thread])
 
 if test -z "$with_threads"
@@ -2184,13 +2184,13 @@
       # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
       case  $ac_sys_system/$ac_sys_release in
   SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
-                       Defined for Solaris 2.6 bug in pthread header.)
+                       [Defined for Solaris 2.6 bug in pthread header.])
 		       ;;
       SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
-		       Define if the Posix semaphores do not work on your system)
+		       [Define if the Posix semaphores do not work on your system])
 		       ;;
       AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
-		       Define if the Posix semaphores do not work on your system)
+		       [Define if the Posix semaphores do not work on your system])
 		       ;;
       esac
 
@@ -2394,8 +2394,8 @@
 fi
 
 AC_MSG_CHECKING(for OSX 10.5 SDK or later)
-AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
-  AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
+AC_TRY_COMPILE([#include <Carbon/Carbon.h>], [FSIORefNum fRef = 0],
+  AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2403,7 +2403,7 @@
 # Check for --with-doc-strings
 AC_MSG_CHECKING(for --with-doc-strings)
 AC_ARG_WITH(doc-strings,
-            AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
+            AC_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
 
 if test -z "$with_doc_strings"
 then with_doc_strings="yes"
@@ -2418,7 +2418,7 @@
 # Check for Python-specific malloc support
 AC_MSG_CHECKING(for --with-tsc)
 AC_ARG_WITH(tsc,
-[  --with(out)-tsc         enable/disable timestamp counter profile], [
+	    AC_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
 if test "$withval" != no
 then 
   AC_DEFINE(WITH_TSC, 1, 
@@ -2431,7 +2431,7 @@
 # Check for Python-specific malloc support
 AC_MSG_CHECKING(for --with-pymalloc)
 AC_ARG_WITH(pymalloc,
-            AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
+            AC_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
 
 if test -z "$with_pymalloc"
 then with_pymalloc="yes"
@@ -2459,7 +2459,7 @@
 # Check for --with-wctype-functions
 AC_MSG_CHECKING(for --with-wctype-functions)
 AC_ARG_WITH(wctype-functions, 
-            AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
+            AC_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
 [
 if test "$withval" != no
 then 
@@ -2543,44 +2543,44 @@
 # For some functions, having a definition is not sufficient, since
 # we want to take their address.
 AC_MSG_CHECKING(for chroot)
-AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
-  AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
+AC_TRY_COMPILE([#include <unistd.h>], [void *x=chroot],
+  AC_DEFINE(HAVE_CHROOT, 1, [Define if you have the 'chroot' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 AC_MSG_CHECKING(for link)
-AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
-  AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
+AC_TRY_COMPILE([#include <unistd.h>], [void *x=link],
+  AC_DEFINE(HAVE_LINK, 1, [Define if you have the 'link' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 AC_MSG_CHECKING(for symlink)
-AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
-  AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
+AC_TRY_COMPILE([#include <unistd.h>], [void *x=symlink],
+  AC_DEFINE(HAVE_SYMLINK, 1, [Define if you have the 'symlink' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 AC_MSG_CHECKING(for fchdir)
-AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
-  AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
+AC_TRY_COMPILE([#include <unistd.h>], [void *x=fchdir],
+  AC_DEFINE(HAVE_FCHDIR, 1, [Define if you have the 'fchdir' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 AC_MSG_CHECKING(for fsync)
-AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
-  AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
+AC_TRY_COMPILE([#include <unistd.h>], [void *x=fsync],
+  AC_DEFINE(HAVE_FSYNC, 1, [Define if you have the 'fsync' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 AC_MSG_CHECKING(for fdatasync)
-AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
-  AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
+AC_TRY_COMPILE([#include <unistd.h>], [void *x=fdatasync],
+  AC_DEFINE(HAVE_FDATASYNC, 1, [Define if you have the 'fdatasync' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 AC_MSG_CHECKING(for epoll)
-AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
-  AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
+AC_TRY_COMPILE([#include <sys/epoll.h>], [void *x=epoll_create],
+  AC_DEFINE(HAVE_EPOLL, 1, [Define if you have the 'epoll' functions.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2588,8 +2588,8 @@
 AC_TRY_COMPILE([
 #include <sys/types.h>
 #include <sys/event.h>
-    ], int x=kqueue(),
-  AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
+    ], [int x=kqueue()],
+  AC_DEFINE(HAVE_KQUEUE, 1, [Define if you have the 'kqueue' functions.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2603,8 +2603,8 @@
 AC_TRY_COMPILE([
 #include "confdefs.h" 
 #include <stdio.h>
-], void* p = ctermid_r,
-  AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
+], [void* p = ctermid_r],
+  AC_DEFINE(HAVE_CTERMID_R, 1, [Define if you have the 'ctermid_r' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2613,8 +2613,8 @@
 AC_TRY_COMPILE([
 #include "confdefs.h" 
 #include <sys/file.h>
-], void* p = flock,
-  AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
+], [void* p = flock],
+  AC_DEFINE(HAVE_FLOCK, 1, [Define if you have the 'flock' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2623,8 +2623,8 @@
 AC_TRY_COMPILE([
 #include "confdefs.h" 
 #include <unistd.h>
-], void* p = getpagesize,
-  AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
+], [void* p = getpagesize],
+  AC_DEFINE(HAVE_GETPAGESIZE, 1, [Define if you have the 'getpagesize' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2658,7 +2658,7 @@
   AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
 fi
 if test "$ac_cv_have_chflags" = yes ; then
-  AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
+  AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
 fi
 
 AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
@@ -2679,7 +2679,7 @@
   AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
 fi
 if test "$ac_cv_have_lchflags" = yes ; then
-  AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
+  AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
 fi
 
 dnl Check if system zlib has *Copy() functions
@@ -2702,7 +2702,7 @@
 	;;
 esac
 
-AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
+AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
 
 case $ac_sys_system/$ac_sys_release in
 Darwin/*) 
@@ -2715,8 +2715,8 @@
 AC_TRY_LINK([
 #include "confdefs.h" 
 #include <netdb.h>
-], void* p = hstrerror; hstrerror(0),
-  AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
+], [void* p = hstrerror; hstrerror(0)],
+  AC_DEFINE(HAVE_HSTRERROR, 1, [Define if you have the 'hstrerror' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2728,8 +2728,8 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-], void* p = inet_aton;inet_aton(0,0),
-  AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
+], [void* p = inet_aton;inet_aton(0,0)],
+  AC_DEFINE(HAVE_INET_ATON, 1, [Define if you have the 'inet_aton' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2741,8 +2741,8 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-], void* p = inet_pton,
-  AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
+], [void* p = inet_pton],
+  AC_DEFINE(HAVE_INET_PTON, 1, [Define if you have the 'inet_pton' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -2756,8 +2756,8 @@
 #include <grp.h>
 #endif
 ], 
-void* p = setgroups,
-  AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
+[void* p = setgroups],
+  AC_DEFINE(HAVE_SETGROUPS, 1, [Define if you have the 'setgroups' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -3059,8 +3059,8 @@
 AC_TRY_COMPILE([
 #include <sys/types.h>
 #include <sys/socket.h>
-], void *x=socketpair,
-  AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
+], [void *x=socketpair],
+  AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -3174,7 +3174,7 @@
 # Check for --with-fpectl
 AC_MSG_CHECKING(for --with-fpectl)
 AC_ARG_WITH(fpectl,
-            AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
+            AC_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
 [
 if test "$withval" != no
 then 
@@ -3193,7 +3193,7 @@
 esac
 AC_MSG_CHECKING(for --with-libm=STRING)
 AC_ARG_WITH(libm,
-            AC_HELP_STRING(--with-libm=STRING, math library),
+            AC_HELP_STRING([--with-libm=STRING], [math library]),
 [
 if test "$withval" = no
 then LIBM=
@@ -3209,7 +3209,7 @@
 AC_SUBST(LIBC)
 AC_MSG_CHECKING(for --with-libc=STRING)
 AC_ARG_WITH(libc,
-            AC_HELP_STRING(--with-libc=STRING, C library),
+            AC_HELP_STRING([--with-libc=STRING], [C library]),
 [
 if test "$withval" = no
 then LIBC=
@@ -3539,7 +3539,7 @@
 
 AC_MSG_CHECKING(what type to use for str)
 AC_ARG_WITH(wide-unicode, 
-            AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
+            AC_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
 [
 if test "$withval" != no
 then unicode_size="4"
@@ -3911,22 +3911,22 @@
 fi
 
 AC_MSG_CHECKING(for is_term_resized)
-AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
-  AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
+AC_TRY_COMPILE([#include <curses.h>], [void *x=is_term_resized],
+  AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, [Define if you have the 'is_term_resized' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 
 AC_MSG_CHECKING(for resize_term)
-AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
-  AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
+AC_TRY_COMPILE([#include <curses.h>], [void *x=resize_term],
+  AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, [Define if you have the 'resize_term' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
 
 AC_MSG_CHECKING(for resizeterm)
-AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
-  AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
+AC_TRY_COMPILE([#include <curses.h>], [void *x=resizeterm],
+  AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, [Define if you have the 'resizeterm' function.])
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no)
 )
@@ -4052,7 +4052,7 @@
 
 AC_CHECK_TYPE(socklen_t,,
   AC_DEFINE(socklen_t,int,
-            Define to `int' if <sys/socket.h> does not define.),[
+            [Define to `int' if <sys/socket.h> does not define.]),[
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -4086,8 +4086,8 @@
 # Check for --with-computed-gotos
 AC_MSG_CHECKING(for --with-computed-gotos)
 AC_ARG_WITH(computed-gotos,
-            AC_HELP_STRING(--with-computed-gotos,
-                           Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
+            AC_HELP_STRING([--with-computed-gotos],
+                           [Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)]),
 [
 if test "$withval" != no
 then 
