2006-04-23 Paul Eggert <eggert@cs.ucla.edu>
- * doc/autoconf.texi (Run Time): Document the exit status situation
- with more accuracy and detail.
-
- * NEWS: Remove mention of AS_VAR_SET_BASENAME and AS_VAR_SET_DIRNAME.
- * doc/autoconf.texi (Programming in M4sh): Remove mention of
- AS_VAR_SET_BASENAME, AS_VAR_SET_DIRNAME, and AS_BASENAME.
- We have to keep AS_DIRNAME since it was part of a stable Autoconf,
- but AS_BASENAME doesn't have to be supported.
-
- * lib/m4sugar/m4sh.m4 (AS_BASENAME, AS_DIRNAME): Bring these back.
-
-2006-04-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-
- * doc/autoconf.texi (Introduction): The GNU Autoconf Macro
- Archive is not officially `GNU' any more. Update URL.
- (Defining Directories): Likewise
- * lib/autoconf/c.m4 (AC_C_RESTRICT): Update URL.
-
-2006-04-22 Paul Eggert <eggert@cs.ucla.edu>
-
- * NEWS: Remove AS_DIRNAME and AS_BASENAME, replacing them with
- AS_VAR_SET_DIRNAME and AS_VAR_SET_BASENAME.
- * doc/autoconf.texi (Programming in M4sh): Document this. All uses
- changed. The newer interfaces are more reliable, as they allow
- implementations that handle trailing newline correctly. For now,
- we're in a freeze, so I did not include the more-reliable
- implementations, but I wanted to correct the interface before 2.60
- goes out.
+ Prepare for deprecation of AS_BASENAME and AS_DIRNAME, and fix
+ a few minor bugs in this area.
+
+ * doc/autoconf.texi (Programming in M4sh): Comment out the
+ documentation of AS_BASENAME, for now.
+ (Shell Substitutions): Do not use AS_DIRNAME in an example.
+ (Limitations of Builtins) <basename>: Do not refer to
+ AS_BASENAME.
+ * bin/autoconf.as (me): Don't use AS_BASENAME.
+ (dir): Remove the unused variable.
* lib/m4sugar/m4sh.m4 (_AS_DETECT_REQUIRED): Renamed from
AS_DETECT_REQUIRED. All uses changed.
(_AS_DETECT_SUGGESTED): Renamed from AS_DETECT_SUGGESTED.
All uses changed.
(_AS_DETECT_BETTER_SHELL): Put ;; at the end of a case.
- (_AS_BASENAME): Renamed from AS_BASENAME. All uses changed.
- Use "basename --" to protect against leading "-".
+ (AS_BASENAME): Use "basename --" to protect against leading "-".
(_AS_BASENAME_EXPR): Renamed from AS_BASENAME_EXPR. All uses changed.
(_AS_BASENAME_SED): Renamed from AS_BASENAME_SED. All uses changed.
(_AS_BASENAME_PREPARE): Reject implementations that cannot handle "--".
(_AS_DIRNAME_PREPARE): Likewise.
- (_AS_DIRNAME): Renamed from AS_DIRNAME. All uses changed.
(_AS_DIRNAME_EXPR): Renamed from AS_DIRNAME_EXPR. All uses changed.
(_AS_DIRNAME_SED): Renamed from AS_DIRNAME_SED. All uses changed.
- Use "dirname --".
- (AS_VAR_SET_BASENAME, AS_VAR_SET_DIRNAME): New macros.
- * tests/m4sh.at (AS_VAR_SET_DIRNAME): Renamed from AS_DIRNAME.
- Test the new API. Don't test internals, since they're probably
- going to change anyway.
- (AS_VAR_SET_BASENAME): Likewise, renamed from AS_BASENAME.
-
- * bin/autoconf.as: Don't use AS_BASENAME or AS_DIRNAME. This
- removes a bootstrapping problem with the changes described above.
- The AS_DIRNAME part wasn't used, anyway, and the AS_BASENAME
- part can be done portably without all the deep Autoconf magic.
+ (AS_DIRNAME): Use "dirname --".
+
+2006-04-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/autoconf.texi (Runtime): Renamed from "Run Time". All uses
+ of "run time" and "run-time" changed to "runtime", for consistency.
+ * lib/autoconf/fortran.m4: Likewise (in comment).
+ * lib/autoconf/functions.m4: Likewise.
+ * lib/autoconf/general.m4: Likewise.
+ * lib/autoconf/headers.m4: Likewise.
+
+ * doc/autoconf.texi (Run Time): Document the exit status situation
+ with more accuracy and detail.
+
+2006-04-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * doc/autoconf.texi (Introduction): The GNU Autoconf Macro
+ Archive is not officially `GNU' any more. Update URL.
+ (Defining Directories): Likewise
+ * lib/autoconf/c.m4 (AC_C_RESTRICT): Update URL.
2006-04-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
M4sh provides portable alternatives for some common shell constructs
that unfortunately are not portable in practice.
+@c Deprecated, to be replaced by a better API
+@ignore
+@defmac AS_BASENAME (@var{file-name})
+@asindex{BASENAME}
+Output the non-directory portion of @var{file-name}. For example,
+if @code{$file} is @samp{/one/two/three}, the command
+@code{base=`AS_BASENAME(["$file"])`} sets @code{base} to @samp{three}.
+@end defmac
+@end ignore
+
@defmac AS_BOURNE_COMPATIBLE
@asindex{BOURNE_COMPATIBLE}
Set up the shell to be more compatible with the Bourne shell as
Not all hosts have a working @command{basename}.
You can use @command{expr} instead.
+@c AS_BASENAME is to be replaced by a better API.
+@ignore
+Not all hosts have a working @command{basename}, and you should instead
+use @code{AS_BASENAME} (@pxref{Programming in M4sh}), followed by
+@command{expr} if you need to strip a suffix. For example:
+
+@example
+a=`basename "$aname"` # This is not portable.
+a=`AS_BASENAME(["$aname"])` # This is more portable.
+
+# This is not portable.
+c=`basename "$cname" .c`
+
+# This is more portable.
+c=`AS_BASENAME(["$cname"])`
+case $c in
+?*.c) c=`expr "X$c" : 'X\(.*\)\.c'`;;
+esac
+@end example
+@end ignore
+
@item @command{cat}
@c ----------------
_AS_ECHO_N([checking for prefix by ])
AC_PATH_PROG(ac_prefix_program, [$1])
if test -n "$ac_prefix_program"; then
- AS_VAR_SET_DIRNAME([prefix], ["$ac_prefix_program"])
- AS_VAR_SET_DIRNAME([prefix], ["$prefix"])
+ prefix=`AS_DIRNAME(["$ac_prefix_program"])`
+ prefix=`AS_DIRNAME(["$prefix"])`
fi
fi
])# AC_PREFIX_PROGRAM
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
- AS_VAR_SET_DIRNAME([ac_confdir], ["$[0]"])
+ ac_confdir=`AS_DIRNAME(["$[0]"])`
srcdir=$ac_confdir
if test ! -r "$srcdir/$ac_unique_file"; then
srcdir=..
;;
esac
- AS_VAR_SET_DIRNAME([ac_dir], ["$ac_file"])
+ ac_dir=`AS_DIRNAME(["$ac_file"])`
AS_MKDIR_P(["$ac_dir"])
_AC_SRCDIRS(["$ac_dir"])
_AS_BASENAME_PREPARE
# Name of the executable.
-AS_VAR_SET_BASENAME([as_me], [$[0]])
+as_me=`AS_BASENAME("$[0]")`
# CDPATH.
$as_unset CDPATH
# This section is lexicographically sorted.
-# _AS_BASENAME(FILE-NAME)
-# -----------------------
+# AS_BASENAME(FILE-NAME)
+# ----------------------
# Simulate the command 'basename FILE-NAME'. Not all systems have basename.
# Also see the comments for AS_DIRNAME.
}
s/.*/./; q']])
-m4_defun([_AS_BASENAME],
-[AS_REQUIRE([$0_PREPARE])dnl
+m4_defun([AS_BASENAME],
+[AS_REQUIRE([_$0_PREPARE])dnl
$as_basename -- $1 ||
_AS_BASENAME_EXPR([$1]) 2>/dev/null ||
_AS_BASENAME_SED([$1])])
-# Some programs rely on _AS_BASENAME being called AS_BASENAME.
-# They should be rewritten to use AS_VAR_SET_BASENAME, but in
-# the meantime we'll leave AS_BASENAME in as an undocumented macro.
-m4_defun([AS_BASENAME], [_AS_BASENAME([$1])])
-
# _AS_BASENAME_PREPARE
# --------------------
# Avoid Solaris 9 /usr/ucb/basename, as `basename /' outputs an empty line.
# Also, traditional basename mishandles --.
m4_defun([_AS_BASENAME_PREPARE],
-[if as_basename=`(basename -- /) 2>&1` && test "X$as_basename" = "X/"; then
+[if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
])# _AS_BASENAME_PREPARE
-# _AS_DIRNAME(FILE-NAME)
-# ----------------------
+# AS_DIRNAME(FILE-NAME)
+# ---------------------
# Simulate the command 'dirname FILE-NAME'. Not all systems have dirname.
# This macro must be usable from inside ` `.
#
}
s/.*/./; q']])
-m4_defun([_AS_DIRNAME],
-[AS_REQUIRE([$0_PREPARE])dnl
+m4_defun([AS_DIRNAME],
+[AS_REQUIRE([_$0_PREPARE])dnl
$as_dirname -- $1 ||
_AS_DIRNAME_EXPR([$1]) 2>/dev/null ||
_AS_DIRNAME_SED([$1])])
-# Some programs rely on _AS_DIRNAME being called AS_DIRNAME.
-# They should be rewritten to use AS_VAR_SET_DIRNAME, but in
-# the meantime we'll leave AS_DIRNAME in as an undocumented macro.
-m4_defun([AS_DIRNAME], [_AS_DIRNAME([$1])])
-
# _AS_DIRNAME_PREPARE
# --------------------
as_dirs=
while test ! -d "$as_dir"; do
as_dirs="$as_dir $as_dirs"
- AS_VAR_SET_DIRNAME([as_dir], ["$as_dir"])
+ as_dir=`AS_DIRNAME("$as_dir")`
done
test ! -n "$as_dirs" || mkdir $as_dirs
fi || AS_ERROR([cannot create directory $1]); }dnl
])# _AS_TEST_PREPARE
-# AS_VAR_SET_BASENAME(VARIABLE, FILE-NAME)
-# ----------------------------------------
-# Simulate VARIABLE=`basename FILE-NAME`.
-m4_defun([AS_VAR_SET_BASENAME],
-[$1=$2
-$1=`_AS_BASENAME(["$$1"])`])
-
-
-# AS_VAR_SET_DIRNAME(VARIABLE, FILE-NAME)
-# ---------------------------------------
-# Simulate the command VARIABLE=`dirname FILE-NAME`.
-m4_defun([AS_VAR_SET_DIRNAME],
-[$1=$2
-$1=`_AS_DIRNAME(["$$1"])`])
-
-
## ------------------ ##
-## -------------------- ##
-## AS_VAR_SET_DIRNAME. ##
-## -------------------- ##
+## ------------ ##
+## AS_DIRNAME. ##
+## ------------ ##
# Build nested dirs.
-AT_SETUP([AS@&t@_VAR_SET_DIRNAME])
+AT_SETUP([AS@&t@_DIRNAME])
AT_DATA_M4SH([script.as],
[[AS_INIT
+# The EXPR variant is allowed to fail if `expr' was considered as too
+# weak for us, in which case `as_expr=false'.
m4_define([DIRNAME_TEST],
-[AS_VAR_SET_DIRNAME([dir], [$1])
+[dir=`AS_DIRNAME([$1])`
+test "$dir" = "$2" || (test -n "$3" && test "$dir" = "$3") ||
+ echo "dirname($1) = $dir instead of $2" >&2
+
+if test "$as_expr" != false; then
+ dir=`_AS_DIRNAME_EXPR([$1])`
+ test "$dir" = "$2" || (test -n "$3" && test "$dir" = "$3") ||
+ echo "dirname_expr($1) = $dir instead of $2" >&2
+fi
+
+dir=`_AS_DIRNAME_SED([$1])`
test "$dir" = "$2" || (test -n "$3" && test "$dir" = "$3") ||
- echo "dirname($1) = $dir instead of $2" >&2])
+ echo "dirname_sed($1) = $dir instead of $2" >&2])
DIRNAME_TEST([/], [/])
DIRNAME_TEST([//], [//], [/])
-## --------------------- ##
-## AS_VAR_SET_BASENAME. ##
-## --------------------- ##
+## ------------- ##
+## AS_BASENAME. ##
+## ------------- ##
# Build nested dirs.
-AT_SETUP([AS@&t@_VAR_SET_BASENAME])
+AT_SETUP([AS@&t@_BASENAME])
AT_DATA_M4SH([script.as],
[[AS_INIT
m4_define([BASENAME_TEST],
-[AS_VAR_SET_BASENAME([base], [$1])
+[base=`AS_BASENAME([$1])`
+test "$base" = "$2" ||
+ echo "basename($1) = $base instead of $2" >&2
+
+base=`_AS_BASENAME_SED([$1])`
test "$base" = "$2" ||
- echo "basename($1) = $base instead of $2" >&2])
+ echo "basename_sed($1) = $base instead of $2" >&2])
BASENAME_TEST([//1], [1])
BASENAME_TEST([/1], [1])