diff --git a/builds/unix/configure.ac b/builds/unix/configure.ac
index 8640598..90d21f6 100644
--- a/builds/unix/configure.ac
+++ b/builds/unix/configure.ac
@@ -1,91 +1,121 @@
-dnl This file is part of the FreeType project.
-dnl
-dnl Process this file with autoconf to produce a configure script.
-dnl
+# This file is part of the FreeType project.
+#
+# Process this file with autoconf to produce a configure script.
 
 AC_INIT
 AC_CONFIG_SRCDIR([ftconfig.in])
 
-dnl configuration file -- stay in 8.3 limit
-AC_CONFIG_HEADER(ftconfig.h:ftconfig.in)
 
-dnl Don't forget to update VERSION.DLL!
+# Don't forget to update docs/VERSION.DLL!
+
 version_info='9:5:3'
-AC_SUBST(version_info)
+AC_SUBST([version_info])
 ft_version=`echo $version_info | tr : .`
-AC_SUBST(ft_version)
+AC_SUBST([ft_version])
 
-dnl checks for system type
-AC_CANONICAL_TARGET([])
 
-dnl checks for programs
+# checks for system type
+
+AC_CANONICAL_TARGET
+
+
+# checks for programs
+
 AC_PROG_CC
 AC_PROG_CPP
 
-dnl get Compiler flags right.
+
+# get compiler flags right
+
 if test "x$CC" = xgcc; then
   XX_CFLAGS="-Wall"
   XX_ANSIFLAGS="-pedantic -ansi"
 else
   case "$host" in
-    *-dec-osf*)
-      CFLAGS=
-      XX_CFLAGS="-std1 -g3"
-      XX_ANSIFLAGS=
-      ;;
-    *)
-      XX_CFLAGS=
-      XX_ANSIFLAGS=
-      ;;
+  *-dec-osf*)
+    CFLAGS=
+    XX_CFLAGS="-std1 -g3"
+    XX_ANSIFLAGS=
+    ;;
+  *)
+    XX_CFLAGS=
+    XX_ANSIFLAGS=
+    ;;
   esac
 fi
-AC_SUBST(XX_CFLAGS)
-AC_SUBST(XX_ANSIFLAGS)
+AC_SUBST([XX_CFLAGS])
+AC_SUBST([XX_ANSIFLAGS])
 
-AC_CHECK_PROG(RMF, rm, rm -f)
-AC_CHECK_PROG(RMDIR, rmdir, rmdir)
 
-dnl Since this file will be finally moved to another directory we make
-dnl the path of the install script absolute.  This small code snippet has
-dnl been taken from automake's `ylwrap' script.
+# auxiliary programs
+
+AC_CHECK_PROG([RMF], [rm], [rm -f])
+AC_CHECK_PROG([RMDIR], [rmdir], [rmdir])
+
+
+# Since this file will be finally moved to another directory we make
+# the path of the install script absolute.  This small code snippet has
+# been taken from automake's `ylwrap' script.
+
 AC_PROG_INSTALL
 case "$INSTALL" in
-  /*)
-    ;;
-  */*)
-    INSTALL="`pwd`/$INSTALL" ;;
+/*)
+  ;;
+*/*)
+  INSTALL="`pwd`/$INSTALL" ;;
 esac
 
-dnl checks for header files
+
+# checks for header files
+
 AC_HEADER_STDC
-AC_CHECK_HEADERS(fcntl.h unistd.h)
+AC_CHECK_HEADERS([fcntl.h unistd.h])
 
-dnl checks for typedefs, structures, and compiler characteristics
+
+# checks for typedefs, structures, and compiler characteristics
+
 AC_C_CONST
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF([int])
+AC_CHECK_SIZEOF([long])
 
-dnl checks for library functions
 
-dnl Here we check whether we can use our mmap file component.
+# checks for library functions
+
+# Here we check whether we can use our mmap file component.
+
 AC_FUNC_MMAP
 if test "$ac_cv_func_mmap_fixed_mapped" != yes; then
   FTSYS_SRC='$(BASE_DIR)/ftsystem.c'
 else
   FTSYS_SRC='$(BUILD_DIR)/ftsystem.c'
 
-  FT_MUNMAP_DECL
+  AC_CHECK_DECLS([munmap],
+    [],
+    [],
+    [
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/mman.h>
+
+    ])
+
   FT_MUNMAP_PARAM
 fi
-AC_SUBST(FTSYS_SRC)
+AC_SUBST([FTSYS_SRC])
 
-AC_CHECK_FUNCS(memcpy memmove)
+AC_CHECK_FUNCS([memcpy memmove])
 
-dnl Check for system zlib
-AC_ARG_WITH(zlib,
-  [  --without-zlib          use internal zlib instead of system-wide])
+
+# Check for system zlib
+
+AC_ARG_WITH([zlib],
+  dnl don't quote AS_HELP_STRING!
+  AS_HELP_STRING([--without-zlib],
+                 [use internal zlib instead of system-wide]))
 if test x$with_zlib != xno && test -z "$LIBZ"; then
-  AC_CHECK_LIB(z, gzsetparams, [AC_CHECK_HEADER(zlib.h, LIBZ='-lz')])
+  AC_CHECK_LIB([z], [gzsetparams], [AC_CHECK_HEADER([zlib.h], [LIBZ='-lz'])])
 fi
 if test x$with_zlib != xno && test -n "$LIBZ"; then
   CFLAGS="$CFLAGS -DFT_CONFIG_OPTION_SYSTEM_ZLIB"
@@ -93,9 +123,13 @@
   SYSTEM_ZLIB=yes
 fi
 
-dnl Whether to use Mac OS resource-based fonts or not
-AC_ARG_WITH(old-mac-fonts,
-  [  --with-old-mac-fonts    allow Mac resource-based fonts to be used])
+
+# Whether to use Mac OS resource-based fonts or not
+
+AC_ARG_WITH([old-mac-fonts],
+  dnl don't quote AS_HELP_STRING!
+  AS_HELP_STRING([--with-old-mac-fonts],
+                 [allow Mac resource-based fonts to be used]))
 if test x$with_old_mac_fonts = xyes; then
   CFLAGS="$CFLAGS -DTARGET_API_MAC_CARBON"
   LDFLAGS="$LDFLAGS -Xlinker -framework -Xlinker CoreServices \
@@ -104,25 +138,38 @@
   CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"
 fi
 
-AC_SUBST(LIBZ)
-AC_SUBST(CFLAGS)
-AC_SUBST(LDFLAGS)
-AC_SUBST(SYSTEM_ZLIB)
+
+AC_SUBST([LIBZ])
+AC_SUBST([CFLAGS])
+AC_SUBST([LDFLAGS])
+AC_SUBST([SYSTEM_ZLIB])
+
 
 AC_PROG_LIBTOOL
 
-dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk'
-dnl and 'builds/unix/unix-cc.mk' that will be used by the build system
-dnl
+
+# configuration file -- stay in 8.3 limit
+#
+# since #undef doesn't survive in configuration header files we replace
+# `/undef' with `#undef' after creating the output file
+
+AC_CONFIG_HEADERS([ftconfig.h:ftconfig.in],
+  [mv ftconfig.h ftconfig.tmp
+   sed 's|/undef|#undef|' < ftconfig.tmp > ftconfig.h
+   rm ftconfig.tmp])
+
+# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk'
+# and 'builds/unix/unix-cc.mk' that will be used by the build system
+#
 AC_CONFIG_FILES([unix-cc.mk:unix-cc.in
                  unix-def.mk:unix-def.in
                  freetype-config
                  freetype2.pc:freetype2.in])
 
-dnl re-generate the Jamfile to use libtool now
-dnl
-dnl AC_CONFIG_FILES([../../Jamfile:../../Jamfile.in])
+# re-generate the Jamfile to use libtool now
+#
+# AC_CONFIG_FILES([../../Jamfile:../../Jamfile.in])
 
 AC_OUTPUT
 
-dnl end of configure.ac
+# end of configure.ac
