diff --git a/bin/autoconf.as b/bin/autoconf.as
index aa85394..6b4395f 100644
--- a/bin/autoconf.as
+++ b/bin/autoconf.as
@@ -37,6 +37,7 @@ Operation modes:
   -d, --debug               don't remove temporary files
   -f, --force               consider all files obsolete
   -o, --output=FILE         save output in FILE (stdout is the default)
+  -S, --skip-init-check     check check for AC_INIT
   -W, --warnings=CATEGORY   report the warnings falling in CATEGORY [syntax]
 
 Warning categories include:
@@ -88,6 +89,7 @@ exit_missing_arg='
 autom4te_options=
 outfile=
 verbose=false
+skip_check=
 
 # Parse command line.
 while test $# -gt 0 ; do
@@ -100,6 +102,9 @@ while test $# -gt 0 ; do
        echo "$version" ; exit ;;
     --help | -h )
        AS_ECHO(["$usage"]); exit ;;
+    -S | --skip-init-check)
+       skip_check=y
+       shift ;;
 
     --verbose | -v )
        verbose=:
@@ -183,6 +188,15 @@ esac
 # Unless specified, the output is stdout.
 test -z "$outfile" && outfile=-
 
+# Check to ensure there is an AC_INIT, via autom4te's tracing capabilities.
+eval set x "$autom4te_options" \
+  --language=autoconf --output=\"-\" "--trace=AC_INIT" \"\$infile\"
+shift
+if test -z "$skip_check" && test -z "$traces" && test -z "`"$AUTOM4TE" "$@"`"
+then
+  AS_ECHO(["$as_me: warning: Failed to use [AC_INIT] in input file $[]infile."]) >&2
+fi
+
 # Run autom4te with expansion.
 eval set x "$autom4te_options" \
   --language=autoconf --output=\"\$outfile\" "$traces" \"\$infile\"
diff --git a/bin/autoreconf.in b/bin/autoreconf.in
index acf25d4..288588d 100644
--- a/bin/autoreconf.in
+++ b/bin/autoreconf.in
@@ -340,6 +340,10 @@ sub autoreconf_current_directory ()
 	  # See below for why we look for gettext here.
 	  $uses_gettext = 1  if /^AM_GNU_GETTEXT_VERSION/;
 	}
+      if (!$uses_autoconf)
+        {
+          &error ("$configure_ac: AC_INIT not found; presuming autoconf not in use.");
+        }
     }
   if (!$uses_autoconf)
     {
diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
index dfa687f..ddff547 100644
--- a/lib/autoconf/general.m4
+++ b/lib/autoconf/general.m4
@@ -232,12 +232,25 @@ m4_define([_AC_INIT_LITERAL],
 ""], ['']), ['])AS_LITERAL_HEREDOC_IF([$1], [-]), [-1-], [],
   [m4_warn([syntax], [AC_INIT: not a literal: $1])])])
 
+# _AC_CHECK_BAD_WHITESPACE(STRING, INSIDE)
+# ------------------------
+# Complain about STRING if it ends in whitespace.
+m4_define([_AC_CHECK_BAD_WHITESPACE],
+[m4_if(
+  m4_normalize([$1]), [$1], [],
+  [m4_warn([syntax], [$2 whitespace is not normalized: {$1}])])])
+
 # _AC_INIT_PACKAGE(PACKAGE-NAME, VERSION, BUG-REPORT, [TARNAME], [URL])
 # ---------------------------------------------------------------------
 m4_define([_AC_INIT_PACKAGE],
 [_AC_INIT_LITERAL([$1])
 _AC_INIT_LITERAL([$2])
 _AC_INIT_LITERAL([$3])
+_AC_CHECK_BAD_WHITESPACE([$1], [AC_INIT: PACKAGE-NAME])
+_AC_CHECK_BAD_WHITESPACE([$2], [AC_INIT: VERSION])
+_AC_CHECK_BAD_WHITESPACE([$3], [AC_INIT: BUG-REPORT])
+_AC_CHECK_BAD_WHITESPACE([$4], [AC_INIT: TARNAME])
+_AC_CHECK_BAD_WHITESPACE([$5], [AC_INIT: URL])
 m4_ifndef([AC_PACKAGE_NAME],
 	  [m4_define([AC_PACKAGE_NAME],     [$1])])
 m4_ifndef([AC_PACKAGE_TARNAME],
diff --git a/tests/tools.at b/tests/tools.at
index 31d4aad..91d9c41 100644
--- a/tests/tools.at
+++ b/tests/tools.at
@@ -387,7 +387,7 @@ args: --cache=autom4te.cache
 end-language: "Autoconf-without-aclocal-m4"
 ]])
 
-AT_CHECK_AUTOCONF([], 1, [],
+AT_CHECK_AUTOCONF([-S], 1, [],
 [[configure.ac:2: error: possibly undefined macro: m4@&t@_foo
       If this token and others are legitimate, please use m4@&t@_pattern_allow.
       See the Autoconf documentation.
@@ -397,7 +397,7 @@ configure.ac:5: error: possibly undefined macro: _AS@&t@_BAR
 configure.ac:6: error: possibly undefined macro: d@&t@nl
 ]])
 # Second run should succeed and yield no output.
-AT_CHECK([autoconf])
+AT_CHECK([autoconf -S])
 
 AT_CLEANUP
 
@@ -428,7 +428,7 @@ BAS_DEFINE
 It would be very bad if Autoconf forgot to expand [AS_]INIT!
 ]])
 
-AT_CHECK_AUTOCONF([], 1, [],
+AT_CHECK_AUTOCONF([-S], 1, [],
 [[configure.ac:1: error: possibly undefined macro: AS@&t@_INIT
       If this token and others are legitimate, please use m4@&t@_pattern_allow.
       See the Autoconf documentation.
@@ -468,7 +468,7 @@ m4_divert([])dnl
  line that begins with a space
 ]])
 
-AT_CHECK_AUTOCONF
+AT_CHECK_AUTOCONF([-S])
 
 AT_CLEANUP
 
@@ -517,6 +517,23 @@ AT_CHECK([echo 'AC_INIT(X, 2.0, bug-autoconf@gnu.org)' | autoconf -t AC_INIT -],
 AT_CLEANUP
 
 
+# autoconf: excess AC_INIT whitespace
+# --------------------------
+AT_SETUP([autoconf: excess AC_INIT whitespace])
+
+AT_DATA([configure.ac],
+[[AC_INIT([MYNAME ], [1.0])
+AC_OUTPUT
+]])
+
+AT_CHECK_AUTOCONF([], 0, [],
+[[configure.ac:1: warning: AC_INIT: PACKAGE-NAME whitespace is not normalized: {MYNAME }
+configure.ac:1: warning: AC_INIT: PACKAGE-NAME whitespace is not normalized: {MYNAME }
+]])
+
+AT_CLEANUP
+
+
 # autoconf: AC_AUTOCONF_VERSION
 # -----------------------------
 AT_SETUP([autoconf: AC_AUTOCONF_VERSION])
@@ -890,7 +907,7 @@ AC_OUTPUT
 
 # Checking `autoupdate'.
 AT_CHECK_AUTOUPDATE
-AT_CHECK_AUTOCONF
+AT_CHECK_AUTOCONF([-S])
 AT_CHECK_CONFIGURE
 AT_CHECK([grep 'AC_HEADER_STDC[(]' configure.ac], 1, [ignore], [ignore])
 AT_CHECK([grep 'AC_HEADER_STDC' configure.ac], 0, [ignore], [ignore])
