* build-aux/extract-trace: $usage is too generic, and can cause
sourced extract-trace to re-source options-parser. We already
require that funclib.sh be sourced before sourcing options-parser,
so it's safer to check that $progname is correct before sourcing
options-parser again from here.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Now that the code base has coalesced around a single option
parser, there's no need for the unused getopt.m4sh and support.
* build-aux/getopt.m4sh, build-aux/general.m4sh,
tests/getopt-m4sh.at: Remove.
* Makefile.am (m4sh_dir, LT_M4SH, general_m4sh, getopt_m4sh)
(sh_files): Remove.
(TESTSUITE_AT): Remove tests/getopt-m4sh.at.
(TESTS_ENVIRONMENT): Remove M4SH.
* bootstrap.conf (libtool_build_prerequisites): Remove M4SH.
* configure.ac (M4SH): Remove.
* HACKING (Editing `.m4sh' Files): Remove and renumber following
sections.
* Makefile.am (ltmain_m4sh, ltmain_sh_edit): Remove.
(ltmain_in): Path to ltmain.in.
(ltmain_sh): Generate ltmain.sh from ltmain.in using
$(bootstrap_edit).
* build-aux/ltmain.m4sh: Remove.
* build-aux/ltmain.in: Rewritten as a client of funclib.sh.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
When any argument contains a shell meta-character, it needs to be
quoted when passed around. We already pass parameter lists as
space delimited strings of arguments, and pass the string through
eval to turn it back into a list before re-assigning using `set'.
To prevent the shell from interpreting any meta-characters during
an `eval set dummy $argumentlist', they must be quoted again
inside the quoted argument list.
* build-aux/funclib.sh (func_quote_for_eval): Be careful to keep
a separate tally of quoted and unquoted argument lists, to
conform to the API of the single argument func_quote_for_eval
implementation in build-aux/general.m4sh.
* bulid-aux/options-parser (func_run_hooks): To account for the
doubly quoted meta-character argument lists, we must eval the
parameter reassignment `set' call separately from evaluating the
dynamically named hook results variable.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Moving potentially reusable code into a common file that can
be sourced by clients, and adjusting for impedance mismatch
or necessary renames during integration.
* build-aux/funclib.sh: New file.
* build-aux/options-parser (Shell normalisation)
(User overrideable command paths, Global variables, func_append)
(require_term_colors, func_echo, func_echo_infix_1, func_warn)
(func_error, func_fatal_error, func_quote_for_eval, func_verbose):
Move from here...
* build-aux/funclib.sh (Shell normalisation, User overrideable
command paths, Global variables, func_append)
(require_term_colors, func_echo, func_echo_infix_1)
(func_warn_and_continue, func_error, func_fatal_error)
(func_quote_for_eval, func_verbose): ...to here.
* build-aux/general.m4sh (func_arith, func_basename)
(func_dirname, func_dirname_and_basename, func_echo_all)
(func_grep, func_len, func_mkdir_p, func_mktempdir)
(func_normal_abspath, func_relative_path, func_quote_for_expand)
(func_stripname, func_show_eval, func_tr_sh): Move from here...
* build-aux/funclib.sh(func_arith, func_basename)
(func_dirname, func_dirname_and_basename, func_echo_all)
(func_grep, func_len, func_mkdir_p, func_mktempdir)
(func_normal_abspath, func_relative_path, func_quote_for_expand)
(func_stripname, func_show_eval, func_tr_sh): ...to here.
* bootstrap (usage message): Document `-no-warn' option.
(func_append_u, func_warning): Move from here...
* build-aux/funclib.sh (func_append_uniq, func_warning): ...to
here.
* bootstrap, build-aux/extract-trace: Source build-aux/funclib.sh
before build-aux/options-parser.
* build-aux/options-parser (usage, long_help_message): Set
default values to match what is parsed by the unmodified parser.
* build-aux/extract-trace (usage, long_help_message): Only set
from func_main, so that clients sourcing this file can still use
the correct defaults from build-aux/options-parser.
* bootstrap (bootstrap_options_prep, bootstrap_parse_options):
Move warning option parsing from here...
* build-aux/option-parser (func_options_prep)
(func_parse_options): ...to here, where all clients can benefit.
* Makefile.am (funclib_sh): New macro; path to funclib.sh.
(EXTRA_DIST): Add $(funclib_sh).
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/options-parser (_G_HAVE_XSI_OPS): Environment
overrideable defaults for bash and zsh, which are known to
support XSI extensions.
(_G_HAVE_PLUSEQ_OP): Similarly for new enough versions of bash,
which are known to have += support.
(func_append): Only perform the shell += probe when state of
support is unknown.
(func_split_equals, func_split_short_opt): Similarly for XSI
probe to select fastest working implementation.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/options-parser (func_parse_options): When there is
more than one non-option argument, "$*" forces all of them into
a single string. Use ${1+"$@"} to set arguments correctly.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* bootstrap, build-aux/extract-trace, build-aux/options-parser
(Local variables): Use time-stamp-pattern to set number of
searched lines to 10, and to replace time-stamp-start,
time-stamp-end and time-stamp-format.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
No need for a spurious space before a command ending semi-colon.
* cfg.mk (sc_prohibit_space_semicolon): New test to catch
accidental reintroduction of spurious spaces removed by this
changeset.
* bootstrap, build-aux/general.m4sh, build-aux/ltmain.m4sh,
libltdl/lt__strl.c, m4/libtool.m4, m4/ltdl.m4, tests/bindir.at:
Remove spurious spaces.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Unroll a hard to
understad nested if statement into a more readable single case
statement.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save an if statement
with '$skipped_export && { block; }' instead of 'if $skipped_export;
then block; fi'.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Reverse the branch
order for an if statement for readability.
* m4/libtool.m4: Likewise.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save test invocations
by using 'test x,y = "$a,$b"' instead of 'test x = "$a" && test y
= "$b"'.
* m4/libtool.m4: Likewise.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): For readability, use
'test string = "$var" || { stuff; }' in preference to
'if test string != "$var"; then stuff; fi'.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_uninstall): Save a string
comparison by setting $rmforce to false or : and using it
directly as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save a string
comparison by setting $wrappers_required to false or : and using
it directly with a ored block rather than an if statement.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save a string
comparison by setting $linkalldeplibs to false or : and using it
directly as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save a string
comparison by setting $valid_a_lib to false or : and using it
directly as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save a string
comparison by setting $found to false or : and using it directly
as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save a string
comparison by setting $alldeplibs to false or : and using it
directly as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_link): Save a string
comparison by setting $preload to false or : and using it directly
instead of if statements.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_generate_dlsyms): Save a string
comparison by setting $my_pic_p to false or : and using it directly
instead of calling if.
Adjust all callers.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_install): Save a string
comparison by setting $finalize to false or : and using it
directly as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_mode_install): Save a string
comparison by setting $isdir to false or : and using it directly
as the first argument to if.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/general.m4sh: Remove spurious braces around
${ZSH_VERSION} dereference.
* build-aux/ltmain.m4sh (func_mode_link): Likewise for ${wl}.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/cvsu: Remove. This script is not useful now that
Libtool's repository is hosted in git.
* Makefile.am (build_scripts): Remove cvsu reference.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
See maintain.texi (Copyright Notices) for rules for maintaining
the years in copyright notices.
* All Files (Copyright): Updated with missing 2011 and 2012.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
See maintain.texi (Copyright Notices) for rules for maintaining
the years in copyright notices.
* bootstrap.conf (gnulib_modules): Add update-copyright.
* cfg.mk (update-copyright-env): Set environment variables for
update-copyright script.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aub/general.m4sh (lt_HAVE_PLUSEQ_OP): Instead of using
$((..)) arithmetic, which causes an error on dash, use a case
based bash version check.
(lt_HAVE_ARITH_OP, lt_HAVE_XSI_OPS): Also short circuit the
feature probing forks and set these automatically when zsh is
detected.
Reported by Stefano Lattarini.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Dash shipped with Ubutu-11.10 as /bin/sh, among others, still
has a crippled echo builtin that mis-handles backslashes.
* build-aux/options-parser (bs_echo): Adopt the autoconf echo
normalization code to find a suitable replacement for buggy echo
commands.
Adjust all uses of echo to $bs_echo.
* build-aux/extract-trace (func_extract_trace, func_main):
Likewise.
* bootstrap: To retain some execution speed on platforms with
buggy builtin echo, replace most occurrences of `echo' with
`$bs_echo' - except where its arguments will obviously never
contain backslashes or be overly long.
Reported by Reuben Thomas.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/general.m4sh (lt_HAVE_PLUSEQ_OP, lt_HAVE_ARITH_OP)
(lt_HAVE_XSI_OPS): Set these without forking a test script when
running under bash, to avoid a few unnecessary forks.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Determine, on a function by function basis, what XSI features
are available in the shell that is actually running the script,
rather than the one that was picked at configure time by the
re-execution engine.
* m4/libtool.m4 (_LT_PROG_FUNCTION_REPLACE)
(_LT_PROG_REPLACE_SHELLFNS): Remove.
(_LT_CHECK_SHELL_FEATURES): Remove tests for XSI and += support.
* build-aux/general.m4sh (func_append, func_append_quoted)
(func_arith, func_len, func_basename, func_dirname)
(func_dirname_and_basename, func_stripname): List both enhanced
and fallback implementations, and choose one based on whether
the enhanced features required by the fastest version are
available.
* build-aux/getopt.m4sh (func_split_short_opt)
(func_split_long_opt): Ditto.
* build-aux/ltmain.m4sh (func_lo2o, func_xform): Ditto.
* tests/getopt-m4sh.at: Add tests for enhanced and fallback
implementations of func_arith, func_len, func_stripname and
func_dirname_and_basename.
* NEWS: Updated.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.m4sh (func_append, func_append_quoted)
(func_arith, func_len): Removed from here...
* build-aux/general.m4sh (func_append, func_append_quoted)
(func_arith, func_len): ...and added to here.
(func_dirname, func_dirname_and_basename, func_normal_abspath)
(func_relative_path): Use func_append.
* tests/getopt-m4sh.at (_LT_AT_FALLBACK_FUNC_EXTRACT): Removed.
Fallback functions are now in any m4sh generated file
automatically.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/git-log-fix: Spell Stefano Lattarini's name
correctly.
Don't use my home email address for GNU commits.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
I like to name temporary directories that I will remove shortly
with two leading commas so that they sort lexicographically at
the top of `ls' output. Now, `./configure
--prefix=`pwd`/,,inst' works again, for the first time in
several years.
* cfg.mk (sc_prohibit_sed_s_comma): Comma is too common a
character to use routinely as the separator for sed
substitutions on file paths and other variables determined by
the user, causing bugs like the one I describe above. Make sure
we don't accidentally reintroduce any comma separators in
future.
* Makefile.am, bootstrap, bootstrap.conf, build-aux/extract-trace,
build-aux/general.m4sh, build-aux/git-hooks/commit-msg,
build-aux/git-log-fix, build-aux/ltmain.m4sh, libtoolize.m4sh,
m4/libtool.m4, m4/ltdl.m4, tests/cdemo-undef.test,
tests/cmdline_wrap.at, tests/darwin.at, tests/defs.m4sh,
tests/getopt-m4sh.at, tests/install.at, tests/libtoolize.at,
tests/mdemo/Makefile.am, tests/need_lib_prefix.at,
tests/sysroot.at, tests/tagdemo-undef.test, tests/testsuite.at:
Try to use `|' as the default separator wherever possible,
otherwise something else that doesn't occur in the substitution
expression.
* NEWS: Updated.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
To safely use a non-literal fist argument to 'test', you must
always prepend a literal non-'-' character, but often the second
operand is a constant that doesn't begin with a '-' already, so
always use 'test a = "$b"' instead of the noisy 'test "X$b" = Xa'.
* cf.mk (sc_prohibit_test_const_follws_var): New syntax-check
rule to ensure we don't reintroduce noisy test operands.
bootstrap, build-aux/extract-trace, build-aux/general.m4sh,
build-aux/ltmain.m4sh, configure.ac, doc/libtool.texi, libtoolize.m4sh,
m4/argz.m4, m4/libtool.m4, m4/ltdl.m4, tests/bindir.at, tests/defs.m4sh,
tests/demo-relink.test, tests/demo/configure.ac,
tests/depdemo-relink.test, tests/destdir.at, tests/duplicate_conv.at,
tests/fail.at, tests/getopt-m4sh.at, tests/help.at, tests/libtoolize.at,
tests/link-2.test, tests/link-order2.at, tests/lt_dlopenext.at,
tests/mdemo/configure.ac, tests/mdemo2/configure.ac,
tests/need_lib_prefix.at, tests/nocase.at, tests/pdemo/configure.ac,
tests/pic_flag.at, tests/search-path.at, tests/shlibpath.at,
tests/static.at, tests/sysroot.at, tests/tagtrace.test,
tests/testsuite.at, tests/with-pic.at: Swap operands to avoid useless
noise.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Until now, libtool sources have used braced variable names
seemingly at random! Almost always the braces are just noise, so
remove all the unnecessary ones.
* cfg.mk (sc_useless_braces_in_variable_derefs): New syntax
check rule to ensure we only reintroduce braced variable
dereferences if they are followed by a valid variable name
character.
build-aux/general.m4sh, build-aux/git-hooks/commit-msg,
build-aux/ltmain.m4sh, build-aux/options-parser, configure.ac,
libltdl/configure.ac, m4/libtool.m4, m4/ltdl.m4,
m4/ltoptions.m4, tests/defs.m4sh, tests/demo-nopic.test,
tests/depdemo/configure.ac, tests/flags.at, tests/link.test,
tests/objectlist.test, tests/quote.test, tests/static.at: Remove
spurious braces.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>