Fix libtool 2.4.2 to correctly detect .def files.
* build-aux/ltmain.sh (sed_uncomment_deffile): New. (orig_export_symbols): Uncomment def file before testing for EXPORTS. * m4/libtool.m4: Do the same for the generated code. -- The old code was not correct in that it only looked at the first line and puts an EXPORTS keyword in front if missing. Binutils 2.22 accepted a duplicated EXPORTS keyword but at least 2.23.2 is more stringent and bails out without this fix. There is no need to send this upstream. Upstream's git master has a lot of changes including a similar fix for this problems. There are no signs that a libtool 2.4.3 will be released to fix this problem and thus we need to stick to our copy of 2.4.2 along with this patch. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
d4371ed30d
commit
d739d4d8cf
@ -411,6 +411,10 @@ sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
|
|||||||
# (escaped) backslashes. A very naive implementation.
|
# (escaped) backslashes. A very naive implementation.
|
||||||
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
|
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
|
||||||
|
|
||||||
|
# Sed substitution to remove simple comments and empty
|
||||||
|
# lines from a Windows .def file.
|
||||||
|
sed_uncomment_deffile='/^;/d; /^[ ]*$/d'
|
||||||
|
|
||||||
# Re-`\' parameter expansions in output of double_quote_subst that were
|
# Re-`\' parameter expansions in output of double_quote_subst that were
|
||||||
# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
|
# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
|
||||||
# in input to double_quote_subst, that '$' was protected from expansion.
|
# in input to double_quote_subst, that '$' was protected from expansion.
|
||||||
@ -8143,7 +8147,7 @@ EOF
|
|||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | cegcc*)
|
||||||
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
|
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
|
||||||
# exporting using user supplied symfile
|
# exporting using user supplied symfile
|
||||||
if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
|
if test "x`$SED "$sed_uncomment_deffile" $export_symbols | $SED 1q`" != xEXPORTS; then
|
||||||
# and it's NOT already a .def file. Must figure out
|
# and it's NOT already a .def file. Must figure out
|
||||||
# which of the given symbols are data symbols and tag
|
# which of the given symbols are data symbols and tag
|
||||||
# them as such. So, trigger use of export_symbols_cmds.
|
# them as such. So, trigger use of export_symbols_cmds.
|
||||||
|
8
m4/libtool.m4
vendored
8
m4/libtool.m4
vendored
@ -4773,7 +4773,7 @@ _LT_EOF
|
|||||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
|
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
|
||||||
# If the export-symbols file already is a .def file (1st line
|
# If the export-symbols file already is a .def file (1st line
|
||||||
# is EXPORTS), use it as is; otherwise, prepend...
|
# is EXPORTS), use it as is; otherwise, prepend...
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
|
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
|
||||||
cp $export_symbols $output_objdir/$soname.def;
|
cp $export_symbols $output_objdir/$soname.def;
|
||||||
else
|
else
|
||||||
echo EXPORTS > $output_objdir/$soname.def;
|
echo EXPORTS > $output_objdir/$soname.def;
|
||||||
@ -5150,7 +5150,7 @@ _LT_EOF
|
|||||||
shrext_cmds=".dll"
|
shrext_cmds=".dll"
|
||||||
# FIXME: Setting linknames here is a bad hack.
|
# FIXME: Setting linknames here is a bad hack.
|
||||||
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
|
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
|
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
|
||||||
sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
|
sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
else
|
else
|
||||||
sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
|
sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
@ -6149,7 +6149,7 @@ if test "$_lt_caught_CXX_error" != yes; then
|
|||||||
shrext_cmds=".dll"
|
shrext_cmds=".dll"
|
||||||
# FIXME: Setting linknames here is a bad hack.
|
# FIXME: Setting linknames here is a bad hack.
|
||||||
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
|
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
|
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
|
||||||
$SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
|
$SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
else
|
else
|
||||||
$SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
|
$SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
@ -6190,7 +6190,7 @@ if test "$_lt_caught_CXX_error" != yes; then
|
|||||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
|
_LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
|
||||||
# If the export-symbols file already is a .def file (1st line
|
# If the export-symbols file already is a .def file (1st line
|
||||||
# is EXPORTS), use it as is; otherwise, prepend...
|
# is EXPORTS), use it as is; otherwise, prepend...
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
|
_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
|
||||||
cp $export_symbols $output_objdir/$soname.def;
|
cp $export_symbols $output_objdir/$soname.def;
|
||||||
else
|
else
|
||||||
echo EXPORTS > $output_objdir/$soname.def;
|
echo EXPORTS > $output_objdir/$soname.def;
|
||||||
|
Loading…
Reference in New Issue
Block a user