Commit Graph

90 Commits

Author SHA1 Message Date
Peter Rosin
4494446e43 maint: fix out-of-tree autoreconf w/o manual rebootstrap
build-aux/ltmain.in: Look for funclib.sh and options-parser in
the same location ltmain.in is found.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2013-12-09 09:08:31 +01:00
Gary V. Vaughan
fb38c688b3 maint: fix a syntax-check violation from commit 12641bd.
* build-aux/ltmain.in (func_mode_link): Reverse test operands to
forestall misinterpretation of contests of shell variable as
operand 1.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-10-26 12:37:45 +13:00
Vadim Zeitlin
12641bdc45 libtool: Don't fall back to static libraries if building them was disabled
If -no-undefined was not specified but the platform didn't
support shared libraries with undefined symbols (e.g. Cygwin/
MinGW), static libraries were built instead of shared ones,
even if building them was explicitly disabled with --disable-
static configure option.

Fix this by stopping with a fatal error if a shared library
can't be built in this case instead of unexpectedly building a
static library instead.

* libltdl/config/ltmain.m4sh (func_mode_link()): Stop with
fatal error when trying to build a shared library without -no-
undefined on a platform not supporting undefined symbols in
shared libraries.

Copyright-paperwork-exempt: Yes
2013-10-09 17:35:13 -07:00
Brooks Moses
d9a35fe9d3 libtool: Discard "-mllvm $arg" options when linking.
Clang accepts options of the form "-mllvm $arg", and passes the
argument as an option to LLVM.  These options caused problems
for Libtool when linking; in some cases, the -mllvm option is
passed through but the corresponding argument is dropped.  (See
for example http://llvm.org/bugs/show_bug.cgi?id=14716.)

This patch resolves the issue by explicitly matching -mllvm and
taking an argument.  Since Clang never uses LLVM for linking,
the matched "-mllvm $arg" option is irrelevant for the link
step, and we can simply discard it once we've recognized it.

Co-authored-by: Johannes Obermayr <johannesobermayr@gmx.de>
Copyright-paperwork-exempt: Yes
2013-10-09 12:32:48 -07:00
Gary V. Vaughan
5d4a43d874 maint: normalise formatting of recent commit log entry.
* build-aux/git-log-fix: Add a summary line to ChangeLog entry of
most recent commit.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-09-05 12:16:25 +07:00
Gary V. Vaughan
e87a65fa0c maint: correct many abuses of the word "which".
* HACKING, NEWS, TODO, bootstrap, bootstrap.conf,
build-aux/ltmain.in, cfg.mk, configure.ac, doc/libtool.texi,
doc/notes.texi, gl/build-aux/bootstrap.in,
gl/build-aux/extract-trace, gl/build-aux/funclib.sh,
gl/doc/bootstrap.texi, libltdl/libltdl/lt_system.h,
libltdl/loaders/loadlibrary.c, libltdl/lt__strl.c,
libltdl/lt_dlloader.c, libltdl/ltdl.c, libtoolize.in,
m4/libtool.m4, m4/ltdl.m4, m4/ltsugar.m4, m4/lt~obsolete.m4,
tests/exceptions.at, tests/need_lib_prefix.at, tests/static.at:
Use "which" correctly, or replace with "that", "where" or "what"
as appropriate.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-08-23 11:12:57 +07:00
Yaakov Selkowitz
c37bc1a334 libtool: fix conversion warnings in cwrapper
build-aux/ltmain.in (func_emit_cwrapperexe_src:main): XMALLOC wants a
size_t. Also use int instead of intptr_t for the return value (which
is fine since the _spawnv call is synchronous).
(func_emit_cwrapper_src) [MSVC]: Remove the intptr_t helper define.
(func_emit_cwrapperexe_src:find_executable): Use size_t for variables
involved in strlen computations.
(func_emit_cwrapperexe_src:lt_setenv): Likewise.
(func_emit_cwrapperexe_src:lt_extend_str): Likewise.
(func_emit_cwrapperexe_src:lt_update_exe_path): Likewise.
THANKS: Update.

Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2013-06-17 23:54:01 +02:00
Gary V. Vaughan
51496e032d syntax-check: fix new SPACE-TAB violations.
* build-aux/ltmain.in (func_dll_def_p): Replace SPACE-TAB by
TAB-SPACE.
* m4/libtool.m4 (_LT_DLL_DEF_P): Likewise.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-27 20:24:42 +07:00
Gary V. Vaughan
2d96bc612c maint: patch gitlog-to-changelog to reduce bogus warnings.
Rather than trying to find a new useful warning among the 55
expected warnings from vanilla gitlog-to-changelog, patch it to
elide the bogus warnings from duplicate log entries.
* gl/bulid-aux/gitlog-to-changelog.diff: Omit-from-ChangeLog is
a new log entry tag to skip legitimate log duplicates.
* build-aux/git-log-fix: Instead of deleting all content of
duplicates and generating a warning, append the new
Omit-from-ChangeLog tag to elide silently.
* Makefile.am *($(changelog)): Remove the 'expect 55 warnings'
echo.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-26 11:19:11 +07:00
Peter Rosin
a5a4944fbb libtool: factor out the dll .def file test and improve it
Resolves bug#13414. Problem reported by Erik van Pienbroek
and Martin Doucha.

build-aux/ltmain.in (func_mode_link): Factor out the test if a
given symbol file is a module-definition (.def) file into...
(func_dll_def_p): ...this function, which also improves the check.
m4/libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG)
<cygwin, mingw, pw32, cegcc>: Similarly, factor out the test if
a given symbol file is a module-definition (.def) file into...
(_LT_DLL_DEF_P): ...this macro, which also improves the check.
tests/export-def.at: New test.
Makefile.am (TESTSUITE_AT): Add above test.
NEWS: Update.
THANKS: Update.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2013-01-22 22:54:43 +01:00
Peter Rosin
726bf31ced libtool: allow tabs in *_cmds variables
This is in preparation for the next patch, which needs to have literal
tab characters survive the evaluation of the *_cmds variables.

build-aux/ltmain.in (func_execute_cmds, func_mode_link): Don't collapse
tabs and surrounding whitespace into a single space when executing a
tilde-separated cmds construct, instead keep any tabs intact.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2013-01-21 06:41:00 +01:00
Peter Rosin
93cba573d2 Revert "libtool: use false or : for $always_export_symbols, and simplify"
This reverts commit 5ed7430fcb, which is
totally bogus as the variable is also set in libtool.m4. Sorry for the
noise.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2013-01-15 15:17:30 +01:00
Peter Rosin
5ed7430fcb libtool: use false or : for $always_export_symbols, and simplify
* build-aux/ltmain.in (func_mode_link): Save a string comparison
by setting $lways_export_symbols to false or : and using it directly
as the first argument to if. Make sure that it is always initialized
while at it.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2013-01-15 10:51:03 +01:00
Gary V. Vaughan
ce23852aa6 maint: fix recent badly formatted ChangeLog entry.
* build-aux/git-log-fix: No empty lines in a single commit.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-03 13:51:19 +07:00
Gary V. Vaughan
ed41ffafb3 syntax-check: fix prohibit_strcmp syntax-check violation.
* build-aux/ltmain.in (func_generate_dlsyms): Add a definition for
STREQ, and then use it in place of !strcmp.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-03 13:41:02 +07:00
Brad Smith
260b909b2c libtool: add bitrig support.
* build-aux/ltmain.in (func_mode_link): Add bitrig support.
* m4/libtool.m4 (_LT_CMD_OLD_ARCHIVE, LT_CMD_MAX_LEN)
(_LT_SYS_DYNAMIC_LINKER, _LT_CHECK_MAGIC_METHOD)
(_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG): Ditto.
* m4/ltdl.m4 (LT_SYS_DLOPEN_DEPLIBS): Ditto.
* tests/deplibs-ident.at(build tree relpaths): Ditto.
* NEWS: Updated.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-03 13:11:56 +07:00
Gary V. Vaughan
e54f2dc19b maint: remove unsupported Tested-by: tag.
* build-aux/git-log-fix: Tested-by: line should not appear in the
ChangeLog.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-02 01:02:20 +07:00
Gary V. Vaughan
9a7071e668 maint: update copyright notices to include 2013.
* gnulib/: Update to latest upstream.
* AUTHORS, ChangeLog.old, HACKING, Makefile.am, NEWS, README,
THANKS, TODO, bootstrap, bootstrap.conf,
build-aux/edit-readme-alpha, build-aux/ltmain.in, cfg.mk,
configure.ac, doc/libtool.texi, gl/build-aux/bootstrap.in,
gl/build-aux/extract-trace, gl/build-aux/funclib.sh,
gl/build-aux/inline-source, gl/build-aux/options-parser,
libltdl/README, libltdl/argz.c, libltdl/argz_.h,
libltdl/configure.ac, libltdl/libltdl/lt__alloc.h,
libltdl/libltdl/lt__dirent.h, libltdl/libltdl/lt__glibc.h,
libltdl/libltdl/lt__private.h, libltdl/libltdl/lt__strl.h,
libltdl/libltdl/lt_dlloader.h, libltdl/libltdl/lt_error.h,
libltdl/libltdl/lt_system.h, libltdl/libltdl/slist.h,
libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
libltdl/loaders/loadlibrary.c, libltdl/loaders/preopen.c,
libltdl/loaders/shl_load.c, libltdl/lt__alloc.c,
libltdl/lt__dirent.c, libltdl/lt__strl.c, libltdl/lt_dlloader.c,
libltdl/lt_error.c, libltdl/ltdl.c, libltdl/ltdl.h,
libltdl/ltdl.mk, libltdl/slist.c, libtoolize.in, m4/argz.m4,
m4/autobuild.m4, m4/libtool.m4, m4/ltdl.m4, m4/ltoptions.m4,
m4/ltsugar.m4, m4/ltversion.in, m4/lt~obsolete.m4,
tests/am-subdir.at, tests/archive-in-archive.at,
tests/bindir.at, tests/cdemo.at, tests/cmdline_wrap.at,
tests/configure-iface.at, tests/convenience.at, tests/ctor.at,
tests/cwrapper.at, tests/darwin.at, tests/demo.at,
tests/depdemo.at, tests/deplib-in-subdir.at,
tests/deplibs-ident.at, tests/deplibs-mingw.at,
tests/destdir.at, tests/dlloader-api.at,
tests/dumpbin-symbols.at, tests/duplicate_conv.at,
tests/duplicate_deps.at, tests/duplicate_members.at,
tests/early-libtool.at, tests/exceptions.at,
tests/execute-mode.at, tests/exeext.at, tests/export.at,
tests/f77demo.at, tests/fail.at, tests/fcdemo.at,
tests/flags.at, tests/help.at, tests/indirect_deps.at,
tests/infer-tag.at, tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/link-order.at, tests/link-order2.at, tests/loadlibrary.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlexit.at,
tests/lt_dlopen.at, tests/lt_dlopen_a.at, tests/lt_dlopenext.at,
tests/ltdl-api.at, tests/ltdl-libdir.at, tests/mdemo.at,
tests/need_lib_prefix.at, tests/no-executables.at,
tests/nocase.at, tests/nonrecursive.at, tests/old-ltdl-iface.at,
tests/old-m4-iface.at, tests/pic_flag.at, tests/recursive.at,
tests/resident.at, tests/runpath-in-lalib.at,
tests/search-path.at, tests/shlibpath.at, tests/slist.at,
tests/standalone.at, tests/static.at, tests/stresstest.at,
tests/subproject.at, tests/sysroot.at, tests/tagdemo.at,
tests/template.at, tests/testsuite.at, tests/versioning.at,
tests/with-pic.at: Bump copyright year.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2013-01-02 00:34:06 +07:00
Peter Rosin
34fe402efa libtool: add @INIT@ to the preloader, for data imports on Windows
* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS) [dumpbin]: Adjust
lt_cv_sys_global_symbol_to_cdecl so that it declares imported
data symbols as __declspec(dllimport). Adjust
lt_cv_sys_global_symbol_to_c_name_address and
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix so that they
fill in "(void*) 0" for imported data symbols. Add new
lt_cv_sys_global_symbol_to_import which finds imported data
symbols if non-empty and export this variable to the libtool script
in the global_symbol_to_import variable. Adjust
lt_cv_sys_global_symbol_pipe so that data imports can be located.
* build-aux/ltmain.in (func_generate_dlsyms): When data imports
are present, as indicated by global_symbol_to_import, generate
a relocation function lt_syminit that fills in the addresses
of data imports at runtime and point to the new function with a
new virtual @INIT@ entry in the symbol list.
* libltdl/loaders/preopen.c (add_symlist): Look for the virtual
@INIT@ symbol (i.e. lt_syminit) and call it.
(vm_sym): Step past the @INIT@ symbol, if present.
* tests/demo.at (dlmain.c): Call the @INIT@ symbol, if present.
* NEWS: Update.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2012-11-02 23:50:43 +01:00
Gary V. Vaughan
f1a3325bf8 maint: fixup badly formatted ChangeLog entries.
* build-aux/git-log-fix: Mostly missing category tags and refilling
to 64 columns, but also deleting duplicate entries from merging the
gary/reredo-test-operand-order branch.
* g/build-aux/gitlog-to-changelog.diff: Local patch to prevent
printing unqualified header lines for deleted duplicate patches.
* THANKS: Put email address for Paul Seidler here...
* build-aux/git-log-fix: ...and remove from ChangeLog here.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-22 17:02:02 +07:00
Gary V. Vaughan
d98a30fbce syntax-check: fix violations and implement sc_old_style_quoting.
Modern GNU ASCII quoting in output and comments is done
'like this'.
* cfg.mk (sc_old_style_quoting): Try to catch most instances
of `old style quoting' so that it is not accidentally re-
introduced to the code.
* HACKING, Makefile.am, NEWS, PORTING, README, TODO, bootstrap,
bootstrap.conf, build-aux/edit-readme-alpha,
build-aux/git-hooks/commit-msg, build-aux/ltmain.in,
doc/libtool.texi, gl/build-aux/bootstrap.in,
gl/build-aux/extract-trace, gl/build-aux/funclib.sh,
gl/build-aux/inline-source, gl/build-aux/options-parser,
libltdl/libltdl/slist.h, libltdl/loaders/loadlibrary.c,
libltdl/ltdl.c, libltdl/slist.c, libtoolize.in, m4/argz.m4,
m4/libtool.m4, m4/ltdl.m4, m4/ltoptions.m4, m4/ltsugar.m4,
tests/cmdline_wrap.at, tests/configure-iface.at, tests/demo.at,
tests/depdemo.at, tests/deplib-in-subdir.at,
tests/deplibs-mingw.at, tests/destdir.at, tests/execute-mode.at,
tests/f77demo.at, tests/fail.at, tests/inherited_flags.at,
tests/libtool.at, tests/libtoolize.at, tests/lt_dladvise.at,
tests/lt_dlexit.at, tests/mdemo.at, tests/need_lib_prefix.at,
tests/old-ltdl-iface.at, tests/old-m4-iface.at, tests/static.at,
tests/stresstest.at, tests/testsuite.at, tests/versioning.at:
Convert to upright quotes.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-22 00:01:13 +07:00
Gary V. Vaughan
711f2f3d45 bootstrap: move into local gl overrides directory.
In order to work as if it were already adopted by upstream
gnulib, put bootstrap and supporting scripts into the local
gnulib overrides directory.
* bootstrap, build-aux/extract-trace, build-aux/funclib.sh,
build-aux/inline-source, build-aux/options-parser: Move from
here...
* gl/build-aux/bootstrap.in, gl/build-aux/extract-trace,
gl/build-aux/funclib.sh, gl/build-aux/inline-source,
gl/build-aux/options-parser: ...to here.
* gl/build-aux/options-parser (func_version): Show only the
first copyright notice on files generated with inline-source.
* gl/doc/bootstrap.texi: Developer documentation for bootstrap.
* gl/modules/extract-trace, gl/modules/funclib.sh,
gl/modules/inline-source, gl/modules/options-parser: Describe
dependencies for gnulib-tool.
* bootstrap.conf (gnulib_modules): Add extract-trace,
inline-source and options-parser modules.
* bootstrap: Regenerated from gnulib overrides as a mono-
lithic script file using gl/build-aux/inline-source.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-21 19:39:04 +07:00
Peter Rosin
2fc9d079d6 libtool: make func_win32_libid work when the name lister is MS dumpbin
* m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD) [MSVC]: Use
func_win32_libid as file_magic_cmd when the name lister
is MS dumpbin.
(_LT_CMD_GLOBAL_SYMBOLS): Export the new veriable nm_interface
to the libtool script.
* build-aux/ltmain.in (func_cygming_gnu_implib_p)
(func_cygming_ms_implib_p): Move up to before...
(func_win32_libid): ...which now uses them to determine if
the object is an import library when the nm_interface is
"MS dumpbin".
* NEWS: Update.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2012-10-19 11:51:12 +02:00
Gary V. Vaughan
55262b6fe4 tests: always extract only the first AC_CONFIG_MACRO_DIR arg.
Previous releases of libtoolize used the final invocation when
there were several, and after the rewrite over extract-trace,
all the invocation directories were concatenated.  This change
enforces correct and consistent behaviour.
* tests/libtoolize.at (multiple AC_CONFIG_MACRO_DIR invocation):
New test.
* build-aux/extract-trace (func_extract_trace_first): New function
for clients that source this file, which returns only the first
argument to the first invocation of the named macros.
* libtoolize.in (func_require_ac_macro_dir): Use it to make sure
the first argument is always used.
(func_require_ac_aux_dir, func_require_ac_ltdl_dir)
(func_require_ac_ltdl_options): Future proof these functions against
multiple invocations or additional arguments to the macros they
trace.
* News (Important incompatible changes): Note change in semantics.
Reported by Eric Blake.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-19 14:24:21 +07:00
Peter Rosin
cfe82e7f85 libtool: unbreak Windows path quoting
The lt_sed_naive_backslashify variable lost its lt_ prefix
when m4sh was dropped. But not everywhere.
* build-aux/ltmain.in (func_convert_core_file_wine_to_w32)
(func_convert_core_msys_to_w32): Drop the lt_ prefix from
the lt_sed_naive_backslashify variable.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2012-10-19 00:18:10 +02:00
Peter Rosin
92b77ed8bb libtool: kill leftover m4 quoting
* build-aux/ltmain.in (func_mode_compile): Use literal ] and [.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2012-10-18 23:49:58 +02:00
Gary V. Vaughan
a3b06455e9 syntax-check: exclude false positive nested quote test.
* build-aux/funclib.sh (func_echo_infix_1): These quotes are not
actually nested, so add an exclude marker for the syntax-check.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-19 00:49:01 +07:00
Gary V. Vaughan
b07f86e9ea libtool: don't set auxscriptsdir at bootstrap time.
* build-aux/ltmain.in: Declare relative paths to aux scripts from
source commands, for early inlining during bootstrap.
* Makefile.am (bootstrap_edit): Move auxscriptsdir
substitution from here....
(configure_edit): ...to here.
($(ltmain_sh)): Feed ltmain.in through inline-source as ltmain.sh
is generated to remove relative paths to aux scripts.
(install-data-local): Simplify. No need for special treatment for
ltmain.sh during installation, since aux scripts have already
been inlined.
Reported by Peter Rosin.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-19 00:38:28 +07:00
Gary V. Vaughan
64c02af9f1 extract-trace: only source funclib.sh when $progname is extract-trace.
* 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>
2012-10-18 23:41:53 +07:00
Peter Rosin
cfcb7afd26 libtool: fix spelling nit
* build-aux/ltmain.in (func_generate_dlsyms): Fix spelling nit.
* libltdl/libltdl/lt_system.h: Likewise.
* m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS): Likewise.

Signed-off-by: Peter Rosin <peda@lysator.liu.se>
2012-10-18 14:27:10 +02:00
Gary V. Vaughan
bbfb7d0580 maint: remove m4sh support.
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.
2012-10-12 20:18:30 +07:00
Gary V. Vaughan
0a42997c60 libtool: rewritten over funclib.sh instead of general.m4sh.
* 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>
2012-10-12 20:18:29 +07:00
Gary V. Vaughan
75ca37e267 libtoolize: inline sourced helper scripts during install.
* build-aux/inline-source: New file.
* Makefile.am (inline_source): Path to inline-source script.
(EXTRA_DIST): Distribute inline-source too.
(helper_scripts): Remove.
(install-data-local): Inline sourced helper scripts during
installation.
Don't install helper_scripts.
(uninstall-hook): Don't uninstall helper_scripts.
2012-10-12 20:18:29 +07:00
Gary V. Vaughan
4930ebf6b1 options-parser: correctly quote shell meta-characters in arguments.
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>
2012-10-12 20:18:28 +07:00
Gary V. Vaughan
a73a99b88a maint: factor common shell code into build-aux/funclib.sh.
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>
2012-10-12 20:18:28 +07:00
Gary V. Vaughan
125eb722e4 options-parser: employ fork minimisation.
* 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>
2012-10-12 18:36:37 +07:00
Gary V. Vaughan
95e3f5ee75 options-parser: keep non-option arguments separate!
* 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>
2012-10-12 18:36:37 +07:00
Gary V. Vaughan
ff7555a5aa options-parser: prefix usage message with "Usage: ".
* build-aux/options-parser (func_usage_message): Prefix usage
message with "Usage: ".

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-12 18:36:37 +07:00
Gary V. Vaughan
941797e273 maint: simplify "Local variables:" footer with time-stamp-pattern.
* 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>
2012-10-12 18:36:36 +07:00
Gary V. Vaughan
9847559cef syntax-check: fix violations and implement sc_prohibit_space_semicolon.
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>
2012-10-04 20:11:04 +07:00
Gary V. Vaughan
aab8048367 libtool: unroll complex nested compound statements
* build-aux/ltmain.m4sh: Use an if statement instead of ugified
compound statements.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-02 21:08:00 +07:00
Gary V. Vaughan
a252d59d91 libtool: unroll nested if into a single case statement.
* 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>
2012-10-02 21:07:56 +07:00
Gary V. Vaughan
c0228e02d1 libtool: simplify $skipped_export blocks
* 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>
2012-10-02 21:07:52 +07:00
Gary V. Vaughan
2e7ba6d709 libtool: simplify an if statement
* 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>
2012-10-02 21:07:48 +07:00
Gary V. Vaughan
9053a05940 libtool: save an if statement, with a compound statement.
* build-aux/ltmain.m4sh (func_mode_link): Simplify.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2012-10-02 21:07:44 +07:00
Gary V. Vaughan
59ec249278 libtool: simplify multiple string tests
* 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>
2012-10-02 21:07:39 +07:00
Gary V. Vaughan
8f0ee8aeeb libtool: fold if into a compound OR statement when more readable
* 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>
2012-10-02 21:07:34 +07:00
Gary V. Vaughan
9a4cac8342 libtool: use false or : for $rmforce, and simplify
* 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>
2012-10-02 21:07:30 +07:00
Gary V. Vaughan
0d3ae55697 libtool: use false or : for $wrappers_required, and simplify
* 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>
2012-10-02 21:07:26 +07:00
Gary V. Vaughan
d61e83993b libtool: use false or : for $linkalldeplibs, and simplify
* 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>
2012-10-02 21:07:22 +07:00