* build-aux/ltmain.in: replace raw invocations of sed with $SED
* m4/libtool.m4: replace raw invocations of sed with $SED
* m4/ltargz.m4: replace raw invocations of sed with $SED
* m4/ltdl.m4: replace raw invocations of sed with $SED
Co-authored-by: Alex Ameen <alex.ameen.tx@gmail.com>
Copyright-paperwork-exempt: Yes
* build-aux/ltmain.in: clone link-mode handling for MidnightBSD from FreeBSD
* m4/libtool.m4: clone various TAGVARs for MidnightBSD from FreeBSD
* m4/ltdl.m4: clone dlopen handling for MidnightBSD from FreeBSD
Copyright-paperwork-exempt: Yes
* build-aux/ltmain.sh: use '/usr/bin/env sh' in shebang
* libtoolize.in: use '/usr/bin/env sh' in shebang
* m4/libtool.m4: 'FILECMD' to replace use of '/usr/bin/file'
* build-aux/ltmain.in: add -Wa,* as link-mode flag.
Add help messages for -Wa,* and -Xassember in link mode.
Add help message for -Xcompiler in compile mode.
* doc/libtool.texi: document -Xassembler and -Wa,* for link-mode.
* gnulib: Update to the latest git version.
* gl-mod/bootstrap: Likewise.
* bootstrap: Regenerate.
* gl/top/README-release.diff: Update the patch for the latest
changes in gnulib's README-release.
Per report from Eric Blake:
https://lists.gnu.org/archive/html/bug-libtool/2015-10/msg00009.html
* build-aux/ltmain.in (func_mode_link): Quote 'cd `pwd`' properly
before generating the $relink_command. Do that for the potential
scenarios where the pwd could contain spaces or special shell
characters.
Instead of calling not-existing function and processing subsequent
shell code.
* build-aux/ltmain.in (func_fatal_configuration): Fix typo in
func_fatal_error call.
Copyright-paperwork-exempt: Yes
.. instead of copying it all the time; gnulib-tool and bootstrap
are now ready to do this correctly.
Bootstrap upstream is now dual-licensed as MIT/GPLv2+; so the
sources are redistributed automatically under GPLv3+ license in
in libtool project.
* .gitmodules (bootstrap): New submodule.
* bootstrap.conf (local_gl_dir): Renamed to local_gl_path.
(local_gl_path): Renamed from local_gl_dir. Two sub-directories
are now mentioned as two --local-dir's are used.
(gnulib_git_submodules): New option to automatically clone the
bootstrap git submodule.
* build-aux/ltmain.in (libtool_options_prep)
(libtool_parse_options): Changing function exit status is not
needed with new options-parser.
* libtoolize.in: Don't func_quote when it is not necessary, don't
set the function return value.
* gl-mod/bootstrap: New git submodule.
* 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, gl/doc/bootstrap.texi,
gl/modules/all-shells-tests, gl/modules/bootstrap,
gl/modules/extract-trace, gl/modules/funclib.sh,
gl/modules/funclib.sh-tests, gl/modules/inline-source
gl/modules/options-parser, gl/modules/options-parser-tests,
gl/tests/test-all-shells.sh, gl/tests/test-funclib-quote.sh
gl/tests/test-option-parser-helper,
gl/tests/test-option-parser.sh: Files removed, those are
automatically pulled from upstream now.
* bootstrap: Sync with upstream.
Starting with gcc-4.8, there's a -fuse-ld flag that can be used to
select between bfd & gold. Make sure we pass it through to the
linking stage.
* build-aux/ltmain.in (func_mode_link): Pass -fuse-ld=* flags
through.
Copyright-paperwork-exempt: Yes
References:
https://lists.gnu.org/archive/html/libtool/2014-04/msg00026.html
* build-aux/ltmain.in (func_mode_link): Pass -fsanitize=* to the
linker to allow trivial use of the clang address sanitizer.
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
Copyright-paperwork-exempt: Yes
From now we have two basic functions to perform string quoting for
shell evaluation -- 'func_quote_arg' to quote one argument and
'func_quote' which takes list of arguments to be quoted.
New function name-scheme should be more descriptive (previously we
called func_quote_for_eval with one argument and also multiple
arguments, while we had confusing
$func_quote_for_eval_unquoted_result which is redundant for
multiple-arguments call).
New abstraction allowed us (in an easy way) to implement
bash-specific optimization for quoting (using
'printf -v VARNAME %q "$value"', suggested by Eric Blake), this
construct may be used on those places where we don't care much
about the result aesthetics (its thus not useful for '*.la'
generation or for error printing).
* gl/build-aux/funclib.sh (func_append_quoted): Use
func_quote_arg internally (kept in 'pretty' mode for now).
(func_quote): Made to be "main" high-level quoting method taking
list of arguments to be quoted into single command. It replaces
func_quote_for_{expand,eval}.
(func_quote_portable): Implements quoting in shell, falling back
to portable sed call (rare cases).
(func_quotefast_eval): New internal function using fast
bash-specific construct, falling back to func_quote_portable for
non-Bash scripts.
(func_quote_arg): New function to quote one argument.
(func_quote_for_eval): Removed. All callers changed to call
func_quote.
(func_quote_for_expand): Likewise.
* bootstrap: Sync with funclib.sh and options-parser.
Its not necessary to (re)func_quote_for_eval in each function in
the hook hierarchy. Usually it is enough if the leaf function
does func_quote_for_eval and its caller just re-uses the
<CALLEE>_return variable.
This is follow up for the previous commit.
* gl/build-aux/options-parser (func_run_hooks): Propagate
$EXIT_SUCCESS return code down to caller if *any* hook succeeded.
Never re-quote the result -- either the arguments are left
untouched, or the options have already been properly quoted by
succeeding hooks.
(func_parse_options): Quote '$@' and return $EXIT_SUCCESS only if
we changed something.
(func_validate_options): Likewise.
(func_options_prep): Likewise.
(func_options_finish): New hook-caller for 'func_options' hooks.
(func_options): Propagate return value down to top-level caller,
but pay attention we have always set $func_options_result.
* build-aux/ltmain.in (libtool_options_prep): Quote '$@' and
return $EXIT_SUCCESS only if we changed something.
(libtool_parse_options): Likewise.
* bootstrap: Sync gl/build-aux/with option-parser.
References:
https://bugzilla.redhat.com/show_bug.cgi?id=985592
* build-aux/ltmain.in (func_mode_link): Pass -specs=*
to the linker, Fedora uses this option for hardening.
Signed-off-by: Pavel Raiskup <praiskup@redhat.com>
Regression from 2.4.2 was causing noticable slow-down in builds
that call libtool many times.
* build-aux/ltmain.in (func_help): Override func_help() from
gl/build-aux/options-parser to only run automake --version and
autoconf --version when libtool --help is executed on the command
line.
* NO-THANKS: Add Robert Yang.
Reported by Robert Yang
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* m4/libtool.m4 (_LT_PREPARE_CC_BASENAME): Factor cc_basename
calculation into a shell function...
(_LT_CONFIG_SAVE_COMMAND): ...and expand it into generated
libtool script.
(_LT_CC_BASENAME): Adjust accordingly.
(_LT_FUNC_SUNCC_CSTD_ABI): Remove from here...
* build-aux/ltmain.in (func_suncc_cstd_abi): ...and reimplement
here.
* m4/libtool.m4 (_LT_SYS_HIDDEN_LIBDEPS): Remove postdeps
augmentation from here...
* build-aux/ltmain.in (func_mode_link): ...and reimplement here
just before postdeps are added.
* NEWS: Update.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Revert 8728e07 and 440fee6.
Some GNU/Linux distributions install libraries into /lib64 (or
/usr/lib64) on 64-bit machines, while /lib (/usr/lib
respectively) stays for multilib variant. Other distributions
keep /usr/lib for 64-bit variant and reserve other directory for
multilib. Detection of what approach a given system uses is
difficult, however, especially because Glibc's ldconfig does not
report the full and correct list of search paths. Allow the user
to adjust Libtools heuristically determined search paths with
the new LT_SYS_LIBRARY_PATH environment variable at both
compile-time, when libtool is called, and at configure time.
* m4/libtool.m4 (_LT_PREPARE_MUNGE_PATH_LIST): Define a new
function to munge a libtool path list according to a user
supplied colon-delimited path.
(_LT_SYS_DYNAMIC_LINKER): Require _LT_PREPARE_MUNGE_PATH_LIST.
Mark LT_SYS_LIBRARY_PATH as precious to autoconf (to survive
automatic "autoreconf").
Call the new func_munge_path_list function on
sys_lib_dlsearch_path_spec - this propagates results to
generated libtool script.
(_LT_CONFIG): Expand _LT_PREPARE_MUNGE_PATH_LIST into generated
libtool script.
* build-aux/ltmain.in (func_mode_link): Call it to adjust
sys_lib_dlsearch_path according to LT_SYS_LIBRARY_PATH.
* doc/libtool.texi: Document new LT_SYS_LIBRARY_PATH.
* doc/notes.texi: Likewise.
* NEWS: Update.
References: http://thread.gmane.org/gmane.comp.gnu.libtool.general/8339/focus=8345
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Adopt downstream patch
used by FreeBSD for versioned library filenames.
* build-aux/ltmain.in (func_mode_link): Replace conflicting
freebsd-elf version_type case branches with a single calculation
setting major and versuffix to match downstream FreeBSD.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Set version type to
"sco" for sco based hosts.
* build-aux/ltmain.in (func_mode_link): Accept new "sco"
version_type as equivalent to freebsd-elf.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.in (func_extract_archives): $basename is now
spelled $sed_basename.
* NO-THANKS: Update.
Reported by Misty De Meo
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.in (func_mode_link) <*-os2*>: Set major and
versuffix.
* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) <*-os2*>: Set
version_type to windows. Add a version information to soname_spec.
* NEWS: Update.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
On OS/2, if there are many DLLs whose prefix is the same and
very long, the resulting DLLs are overwritten. Provide a new
option to force a DLL name.
* build-aux/ltmain.in (func_mode_help): Add a description for
-os2dllname.
(func_mode_link): Add -os2dllname.
* doc/libtool.texi: Document it.
* NEWS: Update.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
OS/2 can only load a DLL with a base name of 8 characters or
less. Also, on OS/2 don't install or uninstall using a link.
* build-aux/ltmain.in: Do not strip an import lib.
* m4/libtool.m4: Set variables to fix DLL creation, installation
and uninstallation.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.in (func_mode_link): Pass -fstack-protector*
to the linker as it is required at link time to resolve libssp symbols.
From Yaakov Selkowitz
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Expanding $ECHO too early leads to unquoted \n when ECHO='printf %s\n'.
Fixes bug#17478. Reported by Egmont Koblinger.
* build-aux/ltmain.in (func_emit_wrapper) [fast_install]: Quote the
$ECHO, and delay the expansion.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
Execute mode is slow and might even DOS the computer in extreme
cases when a parameter is a big binary file without newlines.
Work around this with different truncation if a suitable dd
utility is found.
Fixes bug#13472 and bug#16662.
Reported by Pavel Raiskup and Nick Bowler.
* m4/libtool.m4 (_LT_PATH_DD): New macro, for finding a dd utility
that works for the below purpose.
(_LT_CMD_TRUNCATE): New macro, for finding out how to truncate binary
pipes (fallback to the old sed truncation if no suitable dd is found
in _LT_PATH_DD).
(_LT_SETUP): Require _LT_CMD_TRUNCATE.
(LT_INIT): Require Autoconf 2.62, as needed by _LT_PATH_DD.
* build_aux/ltmain.in (func_lalib_p): Factor out the actual "generated
by libtool" test into...
(func_generated_by_libtool_p): ...this new function...
(func_ltwrapper_script_p): ...so that it can be reused here, when
truncating the pipe according to _LT_CMD_TRUNCATE.
* THANKS: Update.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
Whole program optimization may remove unused symbols unless told they
are really needed. Fixes sr #108559 reported by LRN.
* build-aux/ltmain.in (func_emit_cwrapperexe_src:MAGIC_EXE): Try to ensure
that the magic cookie is preserved.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
Fixes the regression from commit v2.4.2.444 which is causing a
testsuite failure in duplicate_conv.at (seen on Cygwin).
* build-aux/ltmain.in (func_mode_link): $reload_cmds typically
starts with "$LD$reload_flag ..." when $LD is used to relink.
Make the case expression match that when checking if $LD is in
fact used to relink.
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
Fix for http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452.
* build-aux/ltmain.in (libtool_validate_options): disable the
opt_duplicate_compiler_generated_deps optimization for Solaris2 so
that gcc-4.9+ compiled C++ code with -Wl,-Bdirect on 64-bit Solaris
x86 can avoid unwinding failures caused by accidental mixing of the
libc and libgcc_s unwinders in a single executable.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
It's been a year since the as_echo probes were removed in Autoconf,
so we can follow suit and remove our equivalent bs_echo probing
now. Retain $ECHO in case users need to override default printf
calls in museum piece environments.
* gl/build-aux/funclib.sh (ECHO): Default to 'printf %s\n'.
(bs_echo): Remove.
Adjust all bs_echo callers to use $ECHO instead.
* bootstrap: Regenerate.
* NEWS: Update.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* build-aux/ltmain.in (func_mode_link): Don't strip -Wl from the
linker flags, except when linking with $LD, otherwise compiler
drivers that don't recognize and pass linker flags through will
choke on unrecognized options.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Choosing between hardcoding a tool's name, or using the shell
variable with a path to the user's prefered implementation or
configure's idea of the best available is a premature
optimisation.
* build-aux/ltmain.in, gl/build-aux/bootstrap.in,
gl/build-aux/extract-trace, gl/build-aux/funclib.sh,
libtoolize.in: Use $SED and $GREP consistently throughout,
instead of hardcoding sed and grep.
* bootstrap: Regenerate.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
* 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>