libtool.m4: Update NetBSD postdeps for shared libraries
* m4/libtool.m4: Linking a shared version of 'gcc' is not possible on
NetBSD, since the shared version of the library is 'gcc_s'. postdeps
have been updated to remove 'gcc' instances with sed.
Current, age, and revision values for a library seem to have been chosen
arbitrarily, which is limiting users to a 5 digit maximum. Now, users
can set revision to at most 19 digits, which is referencing Unix epoch
time in nanoseconds.
ltoptions.m4: Make aix-soname assignment more clear
The option --with-aix-soname=svr4 does not work the same as using
LT_INIT([aix-soname=svr4]), since the configure script is reordered
depending on which is used. The reordering causes 'enable_shared'
to not be set before processing for 'aix-soname' when using LT_INIT.
For LT_INIT([aix-soname=svr4]) to be set as intended, 'shared' must
be set before 'aix-soname=svr4', like LT_INIT([shared aix-soname=svr4]).
* m4/ltoptions.m4: Warn user if 'enable_shared' has not been set when
setting 'aix-soname' and add configuration messages to show which
variant of shared library versioning has been set for 'aix-soname'.
* doc/libtool.texi: Update to specify need for 'shared' to be used
before 'aix-soname' for LT_INIT.
Removing duplicate compiler dependencies causes linking problems on
linux with GCC libraries. This deduplication optimization is no longer
used for linux hosts.
* Makefile.am: Set environment variables for tests.
* configure.ac: Add language support for Objective-C and Objective-C++.
* build-aux/ltmain.in: Update help message for tags available.
* m4/libtool.m4: Add tagging support for OBJC and OBJCXX.
* tests/flags.at: Add tests for passing OBJC and OBJCXX flags.
* tests/infer-tag.at: Add tests for inferring OBJC and OBJCXX tags.
* doc/libtool.texi: Update documentation.
* NEWS: Update.
demo.at: Skip test if deplibs_check_method is not pass_all
The test 'deplibs_check_method' was designed to verify pass_all
works as expected. Many warnings occur for systems that do not
have deplibs_check_method set to pass_all, so this test is skipped
on those.
* tests/demo.at: Add check for deplibs_check_method=pass_all.
ltmain.in: Update info supplied to user for --tag usage
* build-aux/ltmain.in: Make error message more explicit for users,
and add tag name information to help menu.
* tests/infer-tag.at: Add testcase for unsupported compiler use.
ltmain.in: Replace old warnings with documentation
Without the ability to disable these old warnings individually, they
are migrating to the relevant section of the documentation to inform
new users that may not know. These warnings have been present for
two decades, so existing users should be aware of this functionality.
* build-aux/ltmain.in: Remove old warnings.
* doc/libtool.texi: Document contents of warning messages.
mintsuki [Wed, 20 Nov 2024 17:34:58 +0000 (18:34 +0100)]
libtool: Replace support for ironclad* with *-mlibc
The main Ironclad kernel-based distribution (Gloire) uses the mlibc
C library for its userland, and that is what commit bd15931e57f5171732a1a911cbbad9b5e03d0308 was intended to support.
There is no reason this support should be Ironclad-specific, as there
are many other OSes that use mlibc, most prominently "Managarm",
which is already supported by gnu-config.
Khalid Masum [Wed, 15 May 2024 11:03:30 +0000 (17:03 +0600)]
libtool: add support for wasm32-emscripten
This patch adds support for emscripten compiler for shared compilation.
* build-aux/ltmain.in: clone link-mode handling for emscripten from
unixware7.
* m4/libtool.m4: translate emscripten specific flags for shared module
building.
Tim Schumacher [Sun, 29 May 2022 13:01:28 +0000 (15:01 +0200)]
libtool: Add support for SerenityOS
This hobbyist OS has already been added to `config.sub` (and
`config.guess` respectively) some time ago, but was still lacking
upstream support for building libraries using libtool.
Since it is a relatively up-to-date system with ports of modern
software, "adding support" mostly just means adding empty cases to avoid
falling though to the most basic behavior (that guarantees compatibility
at the expense of disabling everything that might be critical).
Passing --no-warnings to libtool would not suppress warning messages.
* build-aux/ltmain.in: Add 'opt_warning' check before printing out
warning messages.
* tests/libtool.at: Add simple test for '--no-warnings'.
* NEWS: Update.
If an invalid argument is passed to options '--mode' or '--reorder-cache'
after a valid command, error messages will print infinitely:
$ libtool --help --mode=MODE
libtool: error: invalid argument 'MODE' for --mode
libtool: error: invalid argument 'MODE' for --mode
libtool: error: invalid argument 'MODE' for --mode
...
* build-aux/ltmain.in: Remove 'break' in case statement to fix infinite
loop, and add shift for option '--reorder-cache' to allow more options
to be processed.
libtool: Add option to reorder the shared library cache
Add option to reorder the shared library cache in OpenBSD so that user
preferred directories for shared libraries can be used when linking
before directories previously listed in the shared library cache.
This allows for users in OpenBSD to easily switch between versions of
libraries with the same name during testing.
* NEWS: Update for new (OpenBSD) option.
* build-aux/ltmain.in: Add option --reorder-cache=DIRS.
* doc/libtool.texi: Update documentation for new option.
* test/bug_71489.at: Alter test for OpenBSD to utilize new option.
libtool: Fix local testing of shared libraries on OpenBSD
On OpenBSD 7.5, the shared library cache is updated with finish_cmds,
which causes the test for 'Use local version' to fail. Simply, installed
versions of shared libraries take precedence over those locally built.
To ensure local versions of shared libraries can be tested properly and
more easily, additional options have been added to libtool to skip
executing finish_cmds, like 'ldconfig -m $libdir' in OpenBSD.
* build-aux/ltmain.in: Add libtool options, '--test' and '--check'.
* doc/libtool.texi: Document new options in libtool.
* NEWS: Update for bug fix.
libtool.m4: Update hardcode_shlibpath_var for OpenBSD
When generating an executable in OpenBSD, the executable fails to
generate when shlibpath_var, LD_LIBRARY_PATH, is used solely to
locate dependent libraries.
For hardcoding library paths in OpenBSD, see documentation for
hardcode_direct and hardcode_libdir_flag_spec.
* m4/libtool.m4: Update hardcode_shlibpath_var from 'no' to 'unsupported'
by removing 'with_gnu_ld=no' for OpenBSD.
Martin Storsjö [Wed, 10 Oct 2018 07:47:21 +0000 (10:47 +0300)]
libtool: Prefer response files over linker scripts for mingw tools
The GCC/binutils tools support response files just fine, while
lld (impersonating GNU ld) only supports response files, not
linker scripts. Using a linker script as input just to pass a
list of files is overkill for cases when a response file is enough.
* build-aux/ltmain.in: Move creation of ld script.
* m4/libtool.m4: Add new variable tag for file_list_spec.
The following errors can be seen for the 'execute mode' test in OpenBSD:
build/libtool: test: <: missing second argument
build/libtool: test: >: missing second argument
The cwrapper in OpenBSD cannot parse these symbols as arguments in
execute mode if there are no other characters with them.
* tests/execute-mode.at: Escape '<' and '>' in OpenBSD.
where the path ends with a trailing slash currently fails. This occurs in
software like gnome-keyring or pulseaudio and is because the comparision
code doesn't see the paths as equal. Strip both paths to ensure this works
reliably.
* build-aux/ltmain.in: Strip trailing slashes on install commands.
Vincent Lefevre [Tue, 2 Oct 2018 17:25:29 +0000 (20:25 +0300)]
libtool.m4: Avoid a broken AC_TRY_EVAL macro
As said in the Autoconf source, the AC_TRY_EVAL macro is dangerous and
undocumented, and should not be used.
In particular, the one related to nm yields binary data in the config.log
file with dash, where "echo \\1" (echo with the argument \1) produces the
control character ^A instead of the usual \1 with most shells (POSIX says
that the result is implementation-defined). See:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910076
This patch attempts to replace this AC_TRY_EVAL occurrence by code with
similar behavior, but using $ECHO instead of echo in order to avoid the
backslash issue.
Markus Mützel [Mon, 14 Oct 2024 15:25:07 +0000 (17:25 +0200)]
libtool: Handle unset $multilib for Windows targets.
If `multilib` is unset (which it apparently is by default), the output
from running a `configure` script contains lines like the following:
```
checking dynamic linker characteristics... ../configure: line 26791: test: yes: unary operator expected
Win32 ld.exe
```
The additional output is not a fatal error. But it could be irritating.
Avoid the unexpected output from `test` by making sure `=` is used as a
binary operator.
* m4/libtool.m4: Prepend "x" on both sides of a comparison with `test`
and the operator `=`.
See also: https://github.com/msys2/MINGW-packages/pull/21905
Replace LT_ARGZ_H_PATH usage with bool for LTARGZH_EXISTS
* m4/ltdl.mk: Add conditional with LTARGZH_EXISTS to append path for
LT_ARGZ_H file to BUILT_SOURCES.
* m4/ltargz.m4: Remove LT_ARGZ_H_PATH.
* m4/ltdl.m4: Add AM_CONDITIONAL for LTARGZH_EXISTS that is set to
true if LT_ARGZ_H is non-empty.
* libltdl/ltdl.mk: Replace conditional with LT_DOLLAR_SIGN for
LT_ARGZ_H_PATH variable.
* m4/ltargz.m4: Add AC_SUBST for LT_ARGZ_H_PATH to set source path
to LT_ARGZ_H file.
* NEWS: Remove additional spacing.
* libtoolize.in: Overwrite function in bootstrap for printing version
information for libtoolize.
* build-aux/ltmain.in: Overwrite function in bootstrap for printing
version information for libtool.
* doc/libtool.texi: Fix typo and correct references for tests/demo
subdirectory to the tests/demo.at Autotest file.
* gl/top/README-release.diff: Add documentation for maintainers so
the CVS repository is properly updated following a stable release.
The variable, LT_ARGZ_H, can be empty, which causes distclean and
maintainer-clean to error as a directory is attempted to be removed
instead of a file.
When running maintainer-clean for gnulib-tests, the .version file is
missing, which is needed by config.status, so the command will error.
* configure.ac: Update CONFIG_STATUS_DEPENDENCIES to use dotversion so
that the .version file can be generated if needed. Add AC_SUBST for
LT_DOLLAR_SIGN use in libltdl/ltdl.mk.
* libltdl/ltdl.mk: Add conditional to check if LT_ARGZ_H is empty.
Five tests use aclocal, but do not have a check for whether aclocal is
available to use. This causes reported tests failures in Linux From
Scratch and Darwin builds.
* tests/standalone.at: Add AT_XFAIL_IF check for aclocal for all tests.
* tests/subproject.at: Add AT_XFAIL_IF check for aclocal for last test.
* Makefile.am: Fix typo.
* doc/libtool.texi: Add missing test case descriptions and specify
option and command where missing in test case descriptions.
The file magic test fails to determine the file type of libraries when
cross-compiling with an aarch64 compiler without additional strings to
search for in an objdump.
* build-aux/ltmain.in: Append 'pe-aarch64' to file_magic in the
lt_cv_deplibs_check_method.
* m4/libtool.m4: Append 'pe-aarch64' to file format check.
The test case for deplibs_check_method in tests/demo.at produces a
warning on multiple systems, such as Cygwin and Mingw. To avoid this
warning when using file_magic, '^x86 archive static' is appended for
lt_cv_deplibs_check_method.
* m4/libtool.m4: Append '^x86 archive static' for file_magic in the
lt_cv_deplibs_check_method.
libtoolize: Fix conflicting warnings about AC_PROG_RANLIB
The macro _LT_CMD_OLD_ARCHIVE inlines the definition of AC_PROG_RANLIB,
which seems to be outdated functionality. Running autoscan in a
directory with ltmain.sh produces conflicting warnings with libtoolize
about AC_PROG_RANLIB. Autoconf warns that AC_PROG_RANLIB is missing,
but libtoolize warns that it is obsolete. The outdated warning should
no longer appear after replacing AC_CHECK_TOOL(RANLIB, ranlib, :) with
AC_REQUIRE([AC_PROG_RANLIB]).
* m4/libtool.m4: Use AC_REQUIRE([AC_PROG_RANLIB]).
* Makefile.am: Added in tests/bug_42313.at.
* tests/bug_42313.at: Contains test cases for bug 42313.
Bruno Haible [Mon, 29 Jan 2024 15:58:48 +0000 (16:58 +0100)]
Rename option --with-aix-soname to --enable-aix-soname.
Reported at <https://savannah.gnu.org/support/index.php?110674>.
* doc/libtool.texi (LT_INIT): Talk about --enable-aix-soname instead of --with-aix-soname.
* m4/ltoptions.m4 (_LT_WITH_AIX_SONAME): Use AC_ARG_ENABLE instead of
AC_ARG_WITH. In the default case, use _AC_ENABLE_IF, in order to still
recognize the old option --with-aix-soname.
* m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER): Update comment.
* configure.ac: Update comment.
* NEWS: Mention the change.
Bruno Haible [Mon, 29 Jan 2024 15:35:17 +0000 (16:35 +0100)]
Rename option --with-pic to --enable-pic.
Reported at <https://savannah.gnu.org/support/index.php?110674>.
* doc/libtool.texi (LT_INIT): Talk about --enable-pic instead of
--with-pic, and about --disable-pic instead of --without-pic.
(Test descriptions): Likewise.
* m4/ltoptions.m4 (_LT_WITH_PIC): Use AC_ARG_ENABLE instead of
AC_ARG_WITH. In the default case, use _AC_ENABLE_IF, in order to still
recognize the old options --with-pic and --without-pic.
* tests/demo.at: Add a test for --enable-pic, keeping the test for
--with-pic. Test '--disable-pic' instead of '--with-pic=no'.
* tests/with-pic.at: Test --enable-pic instead of --with-pic.
* NEWS: Mention the change.
Bruno Haible [Mon, 2 Sep 2024 09:33:27 +0000 (11:33 +0200)]
Document situations where -export-symbols does not work.
* doc/libtool.texi (Link mode): Document that -export-symbols does not work on
static libraries. Document the most important platforms where it does not work
on shared libraries.
Removing a forward slash launches an interactive cmd prompt when run in
an MSYS shell, so the previous change has been reverted. For more
details: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49246
Brian Inglis [Sun, 27 Jun 2021 23:09:02 +0000 (23:09 +0000)]
libtool: mingw hangs in func_convert_core_msys_to_w32
The `cmd //c ...` is is an invocation of the Windows console command
line shell `cmd`. The slashes are Windows console shell command line
option switch characters '/', with `cmd /c ...` meant to be
equivalent to `sh -c ...`.
It results in the Windows `cmd` shell being invoked as an interactive
console shell, as if invoked with the '/k' switch, but ignoring any
provided command string, hanging builds!
* build-aux/ltmain.in: Remove additional forward slash for option.