Mike Frysinger [Tue, 16 Jan 2024 22:50:44 +0000 (17:50 -0500)]
cfg.mk: update old NEWS hash
The recent change to change http:// to https:// updated old NEWS
entries. This isn't exactly against the spirit of the "don't
change old NEWS", so update the hash to match.
Olly Betts [Wed, 24 Jan 2018 01:09:23 +0000 (14:09 +1300)]
libtool: use -Fe with MSVC to specify filename
This avoids a deprecation warning with current versions of MSVC, by
replacing the -o flag with -Fe. -Fe is documented as supported at
least as far back as Visual C 6.0 which was released in 1998.
* m4/libtool.m4: Use -Fe instead of -o to specify DLL output filename
for MSVC.
Xiang.Lin [Mon, 6 Nov 2023 07:07:56 +0000 (15:07 +0800)]
libtool: fix empty "-L" in compiler_lib_search_path
If the compiler places a space between "-L" and the path, the path will
be skipped and only an empty "-L" will appear in the final
compiler_lib_search_path. This will cause the first library in postdeps
following compiler_lib_search_path to be accidentally skipped.
* libtool.m4: Fixed string comparison by adding missing 'x's.
Bruno Haible [Mon, 18 Sep 2023 10:47:08 +0000 (12:47 +0200)]
Fix shared library support on Android.
This patch fixes two problems:
1) A libtool library created with the -release option and no -version-info
option was, when built with --enable-shared, installed without the
symlink libNAME.so -> libNAME-RELEASE.so. This led to subsequent failures
during "make install" of shared libraries that depend on it.
2) Executables were created without a RUNPATH property. These executables
then did not find their shared libraries when run.
* m4/libtool.m4: On Android, fix library_names_spec and
hardcode_libdir_flag_spec.
Mike Frysinger [Mon, 15 Jan 2024 04:02:01 +0000 (23:02 -0500)]
maint: disable syntax checks on local gnulib patches
The syntax checks might trip over problems in the gnulib code itself
when scanning the local patches. Since it's unlikely these checks
will find anything useful, just disable them for the gl/ patches.
Mike Frysinger [Mon, 15 Jan 2024 03:36:07 +0000 (22:36 -0500)]
maint: disable GNU indent checks for now
GNU indent will reformat a bunch of files in a way that's broken or
incorrect, so disable the check until we can find a way to workaround
this. Unfortunately, the indent check is enforced at `make distcheck`
time if GNU indent is installed, so it can't simply be ignored.
Richard Purdie [Mon, 25 Oct 2021 14:33:37 +0000 (15:33 +0100)]
libtool.m4: For reproducibility stop encoding hostname in libtool script
For reproducibility, stop encoding the hostname into the libtool script,
this isn't really adding much to debugging and most distros are carrying
such a patch now as reproducibility is important.
* m4/libtool.m4: Delete call to hostname & uname.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
libtool: Add support for flang (Fortran LLVM-based) compilers
This patch adds support for flang compilers. Some specific flags
are needed so these compilers must be handled in a specific way.
By default, the compiler is called 'flang', but ARM releases their
own flang-based compiler called 'armflang'.
Because of the current lack of flang support in libtool, the
generated 'libtool' must be manually modified after 'configure' is
invoked. Such a process is for example described on ARM web site
(it involves the Open MPI library).
Sam James [Sun, 14 Jan 2024 06:27:33 +0000 (06:27 +0000)]
ltmain.in: Pass through -fdiagnostics-color, -frecord-gcc-switches
* -fdiagnostics-color: who doesn't like color? No reason to strip it. This
makes the link phase stick out like a sore thumb if there's warnings emitted.
* -frecord-gcc-switches: we use it in Gentoo to check if a package respects
*FLAGS. Note that we do not need to include -grecord-gcc-switches explicitly
here as -g* is already whitelisted.
Mingli Yu [Wed, 24 Mar 2021 03:21:04 +0000 (11:21 +0800)]
build: make sure autoheader run before autoconf
autoheader will update ../libtool-2.4.6/libltdl/config-h.in which
autoconf needs, so there comes a race sometimes as below:
| configure.ac:45: error: required file 'config-h.in' not found
| touch '../libtool-2.4.6/libltdl/config-h.in'
So make sure autoheader run before autoconf to avoid this race.
* Makefile.am: Have $(lt_configure) depend on $(lt_config_h_in).
Manoj Gupta [Fri, 16 Dec 2022 18:10:58 +0000 (10:10 -0800)]
libtool: Support "-fno-sanitize*" options.
"-fno-sanitize*" options e.g. -fno-sanitize=alignment
or -fno-sanitize-recover=all are used to tune the behvior of
sanitizers in GCC/clang. Let libtool pass these options
to compiler similar to fsanitize=*.
Vadim Zeitlin [Thu, 23 Jun 2011 09:34:35 +0000 (11:34 +0200)]
libtool: Include _CRTIMP in _putenv() declaration in EXE wrapper sources.
Re-declaring _putenv() without _CRTIMP in strict ANSI mode when using
MinGW resulted in a warning because of a conflict with the previous
declaration that did use _CRTIMP.
Simply add _CRTIMP to our declaration to avoid it.
* build-aux/ltmain.in (func_emit_cwrapperexe_src): Add _CRTIMP to
_putenv() declaration.
Bruno Haible [Wed, 30 Aug 2023 12:03:24 +0000 (14:03 +0200)]
Recognize *-*-windows* config triplets
The gnuconfig project recognizes windows* as a host OS to denote native
Windows environments. The commit message makes it sound like LLVM and
Crablang communities will use the 'windows' value, whereas GNU will
continue to use 'mingw'. But I think it's only a matter of time until
people start to pass the option --host=x86_64-pc-windows to configure
scripts. We should be prepared for that.
* tests/cdemo.at (allow_undefined_flag):
Prefer } to \} in EREs, as \} is not portable.
* tests/libtool.at (quote shell meta-characters in filenames):
Prefer ] to \] in BREs, as \] is not portable.
Paul Eggert [Mon, 19 Sep 2022 20:22:53 +0000 (13:22 -0700)]
libtool: port to GNU grep 3.8
GNU grep 3.8 warns about some regular expressions that POSIX says have
undefined effect, e.g., '\-'. Unfortunately Libtool uses regular
expressions of this form. Some unittests now fail, e.g. link-order.at:
--- /dev/null
+++ .../libtool/tests/testsuite.dir/at-groups/66/stderr
@@ -0,0 +1,4 @@
+/bin/grep: warning: stray \ before /
+/bin/grep: warning: stray \ before /
+/bin/grep: warning: stray \ before /
+/bin/grep: warning: stray \ before /
* m4/libtool.m4 (_LT_LANG_CXX_CONFIG): Do not use \- in a BRE or ERE,
as this produces undefined results that GNU grep 3.8 warns about.
Use [-] instead.
* tests/link-order.at (Link order test): Similarly, do not use
\/ in an ERE; use / instead.
libtool: Use AC_CHECK_PROG instead of AC_CHECK_TOOL to find "file"
This fixes a warning when cross-building:
checking for arm-v7a-linux-gnueabihf-file... no
checking for file... file
configure: WARNING: using cross tools not prefixed with host triplet
file isn't platform specific and not usually installed with a host
triplet. So use AC_CHECK_PROG which differs from AC_CHECK_TOOL by not
expecting such a host triplet prefix.
* m4/libtool.m4 (_LT_DECL_FILECMD): Change AC_CHECK_TOOL to AC_CHECK_PROG.
Alex Ameen [Tue, 8 Feb 2022 19:32:47 +0000 (13:32 -0600)]
gnulib: update submodule to new repository.
* configure.ac: Update autoconf requirement for bootstrapping to 2.64.
* README.md: Update note concerning autoconf version requirement.
* bootstrap: Propogate change to GPL license from GPL 3 to GPL 2.
Alex Ameen [Sun, 5 Dec 2021 22:16:30 +0000 (16:16 -0600)]
tests: remove deprecated old-ltdl-iface.at test.
* tests/old-ltdl-iface.at: remove test as instructed by inline comments, which
indicate that this test should have been deleted in 2013.
This test fails because it relies on legacy usage of 'include Makefile.inc'
by libltdl which is no longer supported.
Alex Ameen [Tue, 30 Nov 2021 03:43:26 +0000 (21:43 -0600)]
* libtool: Bump M4 serial versions and add missing AC_PROG_SED to ltdl.m4
* m4/libtool.m4: bump serial version ( covers entire release ).
* m4/ltargz.m4: bump serial version ( covers entire release ).
Add AC_PROG_SED requirement to LT_FUNC_ARGZ.
* m4/ltdl.m4: bump serial version ( covers entire release ).
Václav Haisman [Tue, 30 Nov 2021 02:37:49 +0000 (20:37 -0600)]
libtool: replace raw invocations of sed with $SED
* 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
Lucas Holt [Tue, 30 Nov 2021 00:54:09 +0000 (18:54 -0600)]
libtool: add support for MidnightBSD
* 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
Alex Ameen [Sat, 20 Nov 2021 20:17:20 +0000 (14:17 -0600)]
libtool: replace some references to /usr/bin/file and /bin/sh
* 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'
aakropotkin [Fri, 19 Nov 2021 03:24:47 +0000 (21:24 -0600)]
libtool: Add -Wa,* link-mode flag for assembler pass-thru
* 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.
Pavel Raiskup [Tue, 24 Jul 2018 07:06:44 +0000 (09:06 +0200)]
maint: update bootstrap, gnulib, copyright dates
* 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.
Pavel Raiskup [Tue, 25 Apr 2017 10:35:39 +0000 (12:35 +0200)]
libtool: quote 'cd' command in shipped relink_command
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.
Pavel Raiskup [Mon, 22 Feb 2016 23:38:39 +0000 (00:38 +0100)]
bootstrap: use the upstream repo as git module
.. 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.
* m4/libtool.m4 (_LT_CMD_STRIPLIB): Remove the redundant tests for
empty $old_striplib and $striplib. Move the test for empty $STRIP
variable up. Allow elftoolchain strip (with the same arguments we
used to have with GNU strip) on FreeBSD.
Mike Frysinger [Sat, 13 Feb 2016 08:46:34 +0000 (03:46 -0500)]
libtoolize: exec automake and autoconf only with --help
Same fix as applied to libtool in commit 408cfb9c5fa8a666917
to delay use of automake/autoconf to when the --help option is
actually specified.
* libtoolize.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.
Copyright-paperwork-exempt: Yes
Pavel Raiskup [Wed, 17 Feb 2016 15:27:25 +0000 (16:27 +0100)]
edit-readme-alpha: generate the "stable" README properly
Fixes bug#20196. Reported by Peter Johansson and KO Myung-Hun
* build-aux/edit-readme-alpha: Invert the order of checks
and exit sooner if the file was already edited. Also fix the
typo 's/sed -n/sed/' (to print the rest of the file).
* Makefile.am ($(readme)): Double-quote the `cmd` to let test -n
work correctly.
Pavel Raiskup [Tue, 16 Feb 2016 00:16:20 +0000 (01:16 +0100)]
maint: fix for 'make sc_immutable_NEWS' hints
* NEWS: Remove the leading white-spaces before Copyright line
because it breaks the perl regexp in sc_immutable_NEWS rule.
* cfg.mk (old_NEWS_hash): Adjust to correct previous hash as the
old NEWS entries were not actually touched.
Pavel Raiskup [Wed, 3 Feb 2016 09:05:51 +0000 (10:05 +0100)]
gl-tests: dash && option-parser test fix
Rico pointed out that the testsuite failed on his system (dash
represented /bin/sh). Turns out that 'shift' in dash exits shell
with exit status 2 when there are no items in the array.
The other issue was that 'test-option-parser.sh' did not
re-executed the test in proper shell, but in /bin/sh.
* gl/tests/test-option-parser-helper (test_parse_eat_test): Don't
shift for empty $@.
* gl/tests/test-option-parser.sh: Use $__GL_ALL_SHELLS_SHELL as
shell which runs the helper.
David Edelsohn [Thu, 5 Nov 2015 17:43:02 +0000 (09:43 -0800)]
m4/libtool.m4: export AIX TLS symbols
TLS symbols in AIX display a new, different symbol type in nm output.
Libtool explicitly creates a list of exported symbols for AIX shared
libraries using nm and does not recognize the new TLS symbols, so
those symbols are not exported in AIX shared libraries.
This is a regression for TLS support on AIX where TLS symbols or GCC
"emultls" symbols were listed as global data and exported.
This patch updates libtool.m4 export_symbols_cmds for AIX in two
locations so that global symbols labeled with "L" for TLS are included
in the export list.
Pavel Raiskup [Mon, 2 Nov 2015 13:54:11 +0000 (14:54 +0100)]
gl/tests: new tests for options-parser
* gl/build-aux/options-parser (func_parse_options): Put the info
message 'enabling shell trace mode' on stderr.
* gl/modules/options-parser-tests: New test module.
* gl/tests/test-option-parser.sh: New test-case.
* gl/tests/test-option-parser-helper: New test-case helper.
* bootstrap: Sync with option-parser.
Pavel Raiskup [Sun, 1 Nov 2015 20:43:31 +0000 (21:43 +0100)]
gl/funclib.sh: func_quotefast_eval & tilde fix
Testsuite detected that printf built-in in Bash up to 4.2 was not
able to properly escape tilde.
* gl/build-aux/funclib.sh (func_quote_for_eval): If printf
supports -v option, test also whether we properly escape tilde.
With Bash <= 4.2, call func_quote_portable with ~* strings.
* bootstrap: Sync with funclib.sh.
Pavel Raiskup [Sat, 31 Oct 2015 14:49:01 +0000 (15:49 +0100)]
syntax-check: fix sed syntax errors
Multi-line single-quoted shell arguments defined within makefile
rules end up having the trailing backslash. This caused problem
in some sc_* rules as GNU sed does not interpret trailing
backslash the same way as SHELL (== appending next line).
Switching to double quotes means that SHELL will remove the
trailing backslash for subsequent sed call. This silences a lot
of GNU sed warnings seen before like:
* cfg.mk (sc_libtool_m4_cc_basename): Use $(SED) instead of sed,
use double quotes for sed's multi-line argument.
(sc_prohibit_set_dummy_without_shift): Likewise.
(sc_prohibit_test_const_follows_var): Likewise.
Pavel Raiskup [Sat, 31 Oct 2015 13:33:18 +0000 (14:33 +0100)]
gl/tests: new tests for func_quote* family
* gl/modules/funclib.sh-tests: New test module.
* gl/modules/all-shells-tests: New test (helper) module.
* gl/tests/test-funclib-quote.sh: New test case.
* gl/tests/test-all-shells.sh: New gl test helper.
* cfg.mk (sc_useless_braces_in_variable_derefs): Whitelist
new test-funclib-quote.sh as the pattern is used there
intentionally.
(sc_space_tab): Likewise.
(sc_useless_braces_in_variable_derefs): Remove /cvsu pattern as
the file is not used with git.
(sc_prohibit_command_in_subst): New checker.
Pavel Raiskup [Mon, 12 Oct 2015 20:52:29 +0000 (22:52 +0200)]
check: enable gnulib's testsuite
* Makefile.am (SUBDIRS): Add gnulib-tests.
(EXTRA_DIST): Distribute also update-copyright script. This does
not happen automatically because we manually remove ./lib
directory created by gnulib-tool. Not having the file distributed
causes 'make check' failure, however.
(dotversion): Fix to point to $(top_srcdir).
* bootstrap.conf (gnulib_tool_options): Add gnulib-tool args
needed to successfully install gnulib's tests.
* configure.ac (CONFIG_STATUS_DEPENDENCIES): Look for .version in
$(top_srcdir).
* gnulib: Sync with upstream.
* build-aux/.gitignore: Ignore ar-lib coming from automake.
Pavel Raiskup [Sun, 11 Oct 2015 12:35:15 +0000 (14:35 +0200)]
funclib: refactor quoting methods a bit
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.
Pavel Raiskup [Mon, 5 Oct 2015 11:16:08 +0000 (13:16 +0200)]
libtool: optimizing options-parser hooks
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.