Add configuration options to choose whether to use '-nostdlib' when
linking C++ shared libraries and modules.
* m4/libtool.m4: Replace '-nostdlib' with variable '$stdlibflag' and
set '$output_verbose_link_cmd' to be empty when enabling standard
library linking for C++ modules.
* m4/ltoptions.m4: Add new configuration options, --enable-cxx-stdlib
and --disable-cxx-stdlib, and add LT_INIT options, cxx-stdlib and
no-cxx-stdlib.
* doc/libtool.texi: Update for new configuration options.
* NEWS: Update.
commit:c7be1f229 addresses an issue with building C++ modules on NetBSD, by
removing -lgcc_s and -lgcc. This may sometimes not work correctly, depending
on the architecture, as libgcc_s.so and libgcc.a may contain required code to
properly link the shared object. On NetBSD, libgcc.a is compiled with -fPIC
and can be linked to a shared object without any issue.
Reported: https://savannah.gnu.org/support/index.php?111210
Libtool silently discards options for install-sh that have not been
specified. Now the install directory and a suffix for backing up
files can be specified to be passed through libtool.
Reported: https://savannah.gnu.org/patch/index.php?10510
* build-aux/ltmain.in: Recognize -S and -t flags from install-sh.
Omitting lines starting with 'Driving:' fixes the invalid postdeps
observed with FC.
Reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76177
* m4/libtool.m4: Omit lines that start with 'Driving:' when setting
output_verbose_link_cmd.
The documentation follows the traditional method of inserting newlines
before the 80 character limit, with a few exceptions. Now, the
documentation will use some semantic newlines, specifically inserting
newlines for clause breaks (commas, semicolons, colons, and so on).
However, it will only break on symbols, instead of also breaking for
phrases, and it will still utilize the 80 character limit should a
symbol break not exist first.
* doc/libtool.texi: Alter line breaks to use partial semantic newlines.
* libtool-next-version.in: New file, based on
gnulib/build-aux/libtool-next-version.
* doc/libtool.texi (Updating version info): Add sub-nodes
'Manual version info update', 'Guided version info update',
'Invoking libtool-next-version'.
* Makefile.am (BUILT_SOURCES): Add libtool-next-version.
(libtoolnextv_in): New variable.
(EXTRA_DIST): Add it.
(bin_SCRIPTS): Add libtool-next-version.
(libtool-next-version): New target.
(libtoolnextv_1): New variable. New target.
(dist_man1_MANS): Add it.
The test for 'darwin fat compile' is being skipped on 64-bit machines,
since the architecture option was specifying i386 (deprecated on macOS).
Reported: https://savannah.gnu.org/support/?111158
* tests/darwin.at: Update to use architecture arm64 instead of i386.
find_executable() can return a directory of the same name as the target
executable if the directory is found earlier in the PATH, which causes
check_executable() to fail.
Reported: https://savannah.gnu.org/support/?111191
* build-aux/ltmain.in: Check if directory is found before executable
in the PATH.
* 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.
Reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75880
* build-aux/ltmain.in: Update revision check to allow up to 19 digits.
* tests/versioning.at: Add more version checks to test.
* NEWS: Update.
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.
Reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75462
* build-aux/ltmain.in: Add linux to list of hosts that do not remove
duplicate compiler dependencies.
Reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67754
* 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.
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.
* 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.
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.
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.
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.
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).
* m4/libtool.m4: Add support for SerenityOS.
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.