mirror of
https://https.git.savannah.gnu.org/git/libtool.git
synced 2026-01-26 15:39:10 +00:00
libtool: Fix MSVC cl.exe .exp extension collision
MSVC's compiler uses the .exp entension for their own export format, which causes a build failure when a subsequent build is run. The MSVC compiler, cl.exe, errors for an invalid file format. This is fixed by using a similar extension name to avoid the naming collision. Reported: https://savannah.gnu.org/support/?111157 * build-aux/ltmain.in: Replace .exp extension with .expsym. * m4/libtool.m4: Replace .exp extension with .expsym.
This commit is contained in:
parent
371624cffe
commit
4d7d7ca45c
@ -2925,7 +2925,7 @@ extern \"C\" {
|
||||
|
||||
# Prepare the list of exported symbols
|
||||
if test -z "$export_symbols"; then
|
||||
export_symbols=$output_objdir/$outputname.exp
|
||||
export_symbols=$output_objdir/$outputname.expsym
|
||||
$opt_dry_run || {
|
||||
$RM $export_symbols
|
||||
eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
|
||||
@ -2938,8 +2938,8 @@ extern \"C\" {
|
||||
}
|
||||
else
|
||||
$opt_dry_run || {
|
||||
eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
|
||||
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
|
||||
eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.expsym"'
|
||||
eval '$GREP -f "$output_objdir/$outputname.expsym" < "$nlist" > "$nlist"T'
|
||||
eval '$MV "$nlist"T "$nlist"'
|
||||
case $host in
|
||||
*cygwin* | *mingw* | *windows* | *cegcc* )
|
||||
@ -7915,7 +7915,7 @@ func_mode_link ()
|
||||
if test -z "$export_symbols"; then
|
||||
if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
|
||||
func_verbose "generating symbol list for '$libname.la'"
|
||||
export_symbols=$output_objdir/$libname.exp
|
||||
export_symbols=$output_objdir/$libname.expsym
|
||||
$opt_dry_run || $RM $export_symbols
|
||||
cmds=$export_symbols_cmds
|
||||
save_ifs=$IFS; IFS='~'
|
||||
@ -8181,7 +8181,7 @@ func_mode_link ()
|
||||
|
||||
${skipped_export-false} && {
|
||||
func_verbose "generating symbol list for '$libname.la'"
|
||||
export_symbols=$output_objdir/$libname.exp
|
||||
export_symbols=$output_objdir/$libname.expsym
|
||||
$opt_dry_run || $RM $export_symbols
|
||||
libobjs=$output
|
||||
# Append the command to create the export file.
|
||||
|
||||
68
m4/libtool.m4
vendored
68
m4/libtool.m4
vendored
@ -1680,9 +1680,9 @@ AC_CACHE_CHECK([$1], [$2],
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings other than the usual output.
|
||||
$ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
|
||||
$ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.expsym
|
||||
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
|
||||
if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
|
||||
if test ! -s conftest.er2 || diff conftest.expsym conftest.er2 >/dev/null; then
|
||||
$2=yes
|
||||
fi
|
||||
fi
|
||||
@ -1720,9 +1720,9 @@ AC_CACHE_CHECK([$1], [$2],
|
||||
if test -s conftest.err; then
|
||||
# Append any errors to the config.log.
|
||||
cat conftest.err 1>&AS_MESSAGE_LOG_FD
|
||||
$ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
|
||||
$ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.expsym
|
||||
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
|
||||
if diff conftest.exp conftest.er2 >/dev/null; then
|
||||
if diff conftest.expsym conftest.er2 >/dev/null; then
|
||||
$2=yes
|
||||
fi
|
||||
else
|
||||
@ -2163,9 +2163,9 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
$ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
|
||||
$ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.expsym
|
||||
$SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
|
||||
if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
|
||||
if test ! -s out/conftest.er2 || diff out/conftest.expsym out/conftest.er2 >/dev/null; then
|
||||
_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
|
||||
fi
|
||||
fi
|
||||
@ -4470,7 +4470,7 @@ m4_if([$1], [CXX], [
|
||||
# AIX 5 now supports IA64 processor
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||
else
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.expsym'
|
||||
fi
|
||||
;;
|
||||
chorus*)
|
||||
@ -4819,7 +4819,7 @@ m4_if([$1], [CXX], [
|
||||
# AIX 5 now supports IA64 processor
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||
else
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.expsym'
|
||||
fi
|
||||
;;
|
||||
|
||||
@ -5783,14 +5783,14 @@ _LT_EOF
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
|
||||
cp "$export_symbols" "$output_objdir/$soname.def";
|
||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.expsym";
|
||||
else
|
||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.expsym;
|
||||
fi~
|
||||
if test -z "$linker_flags"; then
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.expsym" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
else
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,$linker_flags-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.expsym" -Wl,$linker_flags-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
fi~
|
||||
linknames='
|
||||
# The linker will not automatically build a static lib if we build a DLL.
|
||||
@ -6102,8 +6102,8 @@ _LT_EOF
|
||||
else
|
||||
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
|
||||
$CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.expsym; done; printf "%s\\n" "-hidden">> $lib.expsym~
|
||||
$CC -shared$allow_undefined_flag $wl-input $wl$lib.expsym $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.expsym'
|
||||
|
||||
# Both c and cxx compiler support -rpath directly
|
||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
|
||||
@ -6120,21 +6120,21 @@ _LT_EOF
|
||||
if test yes = "$GCC"; then
|
||||
wlarc='$wl'
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
|
||||
$CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.expsym~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.expsym~echo "local: *; };" >> $lib.expsym~
|
||||
$CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.expsym $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.expsym'
|
||||
else
|
||||
case `$CC -V 2>&1` in
|
||||
*"Compilers 5.0"*)
|
||||
wlarc=''
|
||||
_LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
|
||||
$LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.expsym~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.expsym~echo "local: *; };" >> $lib.expsym~
|
||||
$LD -G$allow_undefined_flag -M $lib.expsym -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.expsym'
|
||||
;;
|
||||
*)
|
||||
wlarc='$wl'
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
|
||||
$CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.expsym~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.expsym~echo "local: *; };" >> $lib.expsym~
|
||||
$CC -G$allow_undefined_flag -M $lib.expsym -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.expsym'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
@ -6869,14 +6869,14 @@ if test yes != "$_lt_caught_CXX_error"; then
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
|
||||
cp "$export_symbols" "$output_objdir/$soname.def";
|
||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.expsym";
|
||||
else
|
||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.expsym;
|
||||
fi~
|
||||
if test -z "$linker_flags"; then
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.expsym" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
else
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,$linker_flags-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
$CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.expsym" -Wl,$linker_flags-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib";
|
||||
fi~
|
||||
linknames='
|
||||
# The linker will not automatically build a static lib if we build a DLL.
|
||||
@ -7395,10 +7395,10 @@ if test yes != "$_lt_caught_CXX_error"; then
|
||||
*)
|
||||
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
|
||||
echo "-hidden">> $lib.exp~
|
||||
$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
|
||||
$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.expsym; done~
|
||||
echo "-hidden">> $lib.expsym~
|
||||
$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.expsym `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
|
||||
$RM $lib.expsym'
|
||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
|
||||
;;
|
||||
esac
|
||||
@ -7477,8 +7477,8 @@ if test yes != "$_lt_caught_CXX_error"; then
|
||||
_LT_TAGVAR(archive_cmds_need_lc,$1)=yes
|
||||
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
|
||||
$CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.expsym~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.expsym~echo "local: *; };" >> $lib.expsym~
|
||||
$CC -G$allow_undefined_flag $wl-M $wl$lib.expsym -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.expsym'
|
||||
|
||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
|
||||
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
|
||||
@ -7514,8 +7514,8 @@ if test yes != "$_lt_caught_CXX_error"; then
|
||||
_LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
|
||||
if $CC --version | $GREP -v '^2\.7' > /dev/null; then
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $stdlibflag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
|
||||
$CC -shared $pic_flag $stdlibflag $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.expsym~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.expsym~echo "local: *; };" >> $lib.expsym~
|
||||
$CC -shared $pic_flag $stdlibflag $wl-M $wl$lib.expsym $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.expsym'
|
||||
|
||||
# Commands to make compiler produce verbose output that lists
|
||||
# what "hidden" libraries, object files and flags are used when
|
||||
@ -7525,8 +7525,8 @@ if test yes != "$_lt_caught_CXX_error"; then
|
||||
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
||||
# platform.
|
||||
_LT_TAGVAR(archive_cmds, $1)='$CC -G $stdlibflag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
|
||||
$CC -G $stdlibflag $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
|
||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.expsym~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.expsym~echo "local: *; };" >> $lib.expsym~
|
||||
$CC -G $stdlibflag $wl-M $wl$lib.expsym $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.expsym'
|
||||
|
||||
# Commands to make compiler produce verbose output that lists
|
||||
# what "hidden" libraries, object files and flags are used when
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user