mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-17 05:48:53 +08:00
ltconfig: Define file_list_spec.
* ltconfig: Define file_list_spec. Pass file_list_spec and with_gnu_ld to libtool. * ltcf-c.sh (aix[45]): Define file_list_spec. * ltcf-cxx.sh (aix[45]): Same. * ltcf-gcj.sh (aix[45]): Same. * ltmain.sh: If command exceeds max_cmd_len and file_list_spec exists, write list of input files to temporary file. From-SVN: r99268
This commit is contained in:
parent
c54c732251
commit
c9392a2bf8
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
||||
2005-05-05 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* ltconfig: Define file_list_spec. Pass file_list_spec and
|
||||
with_gnu_ld to libtool.
|
||||
* ltcf-c.sh (aix[45]): Define file_list_spec.
|
||||
* ltcf-cxx.sh (aix[45]): Same.
|
||||
* ltcf-gcj.sh (aix[45]): Same.
|
||||
* ltmain.sh: If command exceeds max_cmd_len and file_list_spec
|
||||
exists, write list of input files to temporary file.
|
||||
|
||||
2005-05-04 Mike Stump <mrs@apple.com>
|
||||
|
||||
* configure.in: Always pass --target to target configures as
|
||||
|
@ -267,6 +267,7 @@ else
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
link_all_deplibs=yes
|
||||
file_list_spec='${wl}-f,'
|
||||
# When large executables or shared objects are built, AIX ld can
|
||||
# have problems creating the table of contents. If linking a library
|
||||
# or program results in "error TOC overflow" add -mminimal-toc to
|
||||
|
@ -128,6 +128,7 @@ case $host_os in
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
link_all_deplibs=yes
|
||||
file_list_spec='${wl}-f,'
|
||||
# When large executables or shared objects are built, AIX ld can
|
||||
# have problems creating the table of contents. If linking a library
|
||||
# or program results in "error TOC overflow" add -mminimal-toc to
|
||||
|
@ -266,6 +266,7 @@ else
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
link_all_deplibs=yes
|
||||
file_list_spec='${wl}-f,'
|
||||
# When large executables or shared objects are built, AIX ld can
|
||||
# have problems creating the table of contents. If linking a library
|
||||
# or program results in "error TOC overflow" add -mminimal-toc to
|
||||
|
9
ltconfig
9
ltconfig
@ -266,6 +266,7 @@ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
|
||||
# rely on this symbol name, it's probably fine to never include it in
|
||||
# preloaded symbol tables.
|
||||
extract_expsyms_cmds=
|
||||
file_list_spec=
|
||||
|
||||
## Tools:
|
||||
old_AR="$AR"
|
||||
@ -2164,7 +2165,7 @@ case $ltmain in
|
||||
finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
|
||||
hardcode_libdir_flag_spec hardcode_libdir_separator \
|
||||
sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
|
||||
compiler_c_o need_locks exclude_expsyms include_expsyms; do
|
||||
compiler_c_o need_locks exclude_expsyms include_expsyms file_list_spec; do
|
||||
|
||||
case $var in
|
||||
reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
|
||||
@ -2557,6 +2558,12 @@ exclude_expsyms=$exclude_expsyms
|
||||
# Symbols that must always be exported.
|
||||
include_expsyms=$include_expsyms
|
||||
|
||||
# Specify filename containing input files.
|
||||
file_list_spec=$file_list_spec
|
||||
|
||||
# with_gnu_ld value
|
||||
with_gnu_ld=$with_gnu_ld
|
||||
|
||||
EOF
|
||||
|
||||
if test -z "$tagname"; then
|
||||
|
150
ltmain.sh
150
ltmain.sh
@ -3272,7 +3272,6 @@ EOF
|
||||
:
|
||||
else
|
||||
# The command line is too long to link in one step, link piecewise.
|
||||
$echo "creating reloadable object files..."
|
||||
|
||||
# Save the value of $output and $libobjs because we want to
|
||||
# use them later. If we have whole_archive_flag_spec, we
|
||||
@ -3286,6 +3285,7 @@ EOF
|
||||
save_libobjs=$libobjs
|
||||
fi
|
||||
save_output=$output
|
||||
output_la=`$echo "X$output" | $Xsed -e "s,^.*/,,"`
|
||||
|
||||
# Clear the reloadable object creation command queue and
|
||||
# initialize k to one.
|
||||
@ -3295,63 +3295,87 @@ EOF
|
||||
delfiles=
|
||||
last_robj=
|
||||
k=1
|
||||
output=$output_objdir/$save_output-${k}.$objext
|
||||
# Loop over the list of objects to be linked.
|
||||
for obj in $save_libobjs
|
||||
do
|
||||
eval test_cmds=\"$reload_cmds $objlist $last_robj\"
|
||||
if test "X$objlist" = X ||
|
||||
{ len=`expr "X$test_cmds" : ".*"` &&
|
||||
test $len -le $max_cmd_len; }; then
|
||||
objlist="$objlist $obj"
|
||||
else
|
||||
# The command $test_cmds is almost too long, add a
|
||||
# command to the queue.
|
||||
if test $k -eq 1 ; then
|
||||
# The first file doesn't have a previous command to add.
|
||||
eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
|
||||
else
|
||||
# All subsequent reloadable object files will link in
|
||||
# the last one created.
|
||||
eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
|
||||
fi
|
||||
last_robj=$output_objdir/$save_output-${k}.$objext
|
||||
k=`expr $k + 1`
|
||||
output=$output_objdir/$save_output-${k}.$objext
|
||||
objlist=$obj
|
||||
len=1
|
||||
fi
|
||||
done
|
||||
# Handle the remaining objects by creating one last
|
||||
# reloadable object file. All subsequent reloadable object
|
||||
# files will link in the last one created.
|
||||
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
|
||||
eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
|
||||
|
||||
# Set up a command to remove the reloadale object files
|
||||
# after they are used.
|
||||
i=0
|
||||
while test $i -lt $k
|
||||
do
|
||||
i=`expr $i + 1`
|
||||
delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
|
||||
done
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
output=${output_objdir}/${output_la}.lnkscript
|
||||
$echo "creating GNU ld script: $output"
|
||||
$echo 'INPUT (' > $output
|
||||
for obj in $save_libobjs
|
||||
do
|
||||
$echo \""$obj"\" >> $output
|
||||
done
|
||||
$echo ')' >> $output
|
||||
delfiles="$delfiles $output"
|
||||
elif test "X$file_list_spec" != X; then
|
||||
output=${output_objdir}/${output_la}.lnk
|
||||
$echo "creating linker input file list: $output"
|
||||
: > $output
|
||||
for obj in $save_libobjs
|
||||
do
|
||||
$echo "$obj" >> $output
|
||||
done
|
||||
delfiles="$delfiles $output"
|
||||
output=\"$file_list_spec$output\"
|
||||
else
|
||||
$echo "creating reloadable object files..."
|
||||
output=$output_objdir/$save_output-${k}.$objext
|
||||
# Loop over the list of objects to be linked.
|
||||
for obj in $save_libobjs
|
||||
do
|
||||
eval test_cmds=\"$reload_cmds $objlist $last_robj\"
|
||||
if test "X$objlist" = X ||
|
||||
{ len=`expr "X$test_cmds" : ".*"` &&
|
||||
test $len -le $max_cmd_len; }; then
|
||||
objlist="$objlist $obj"
|
||||
else
|
||||
# The command $test_cmds is almost too long, add a
|
||||
# command to the queue.
|
||||
if test $k -eq 1 ; then
|
||||
# The first file doesn't have a previous command to add.
|
||||
eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
|
||||
else
|
||||
# All subsequent reloadable object files will link in
|
||||
# the last one created.
|
||||
eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
|
||||
fi
|
||||
last_robj=$output_objdir/$save_output-${k}.$objext
|
||||
k=`expr $k + 1`
|
||||
output=$output_objdir/$save_output-${k}.$objext
|
||||
objlist=$obj
|
||||
len=1
|
||||
fi
|
||||
done
|
||||
# Handle the remaining objects by creating one last
|
||||
# reloadable object file. All subsequent reloadable object
|
||||
# files will link in the last one created.
|
||||
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
|
||||
eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
|
||||
|
||||
$echo "creating a temporary reloadable object file: $output"
|
||||
# Set up a command to remove the reloadale object files
|
||||
# after they are used.
|
||||
i=0
|
||||
while test $i -lt $k
|
||||
do
|
||||
i=`expr $i + 1`
|
||||
delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
|
||||
done
|
||||
|
||||
# Loop through the commands generated above and execute them.
|
||||
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
|
||||
for cmd in $concat_cmds; do
|
||||
IFS="$save_ifs"
|
||||
eval cmd=\"$cmd\"
|
||||
$show "$cmd"
|
||||
$run eval "$cmd" || exit $?
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
$echo "creating a temporary reloadable object file: $output"
|
||||
|
||||
libobjs=$output
|
||||
# Loop through the commands generated above and execute them.
|
||||
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
|
||||
for cmd in $concat_cmds; do
|
||||
IFS="$save_ifs"
|
||||
eval cmd=\"$cmd\"
|
||||
$show "$cmd"
|
||||
$run eval "$cmd" || exit $?
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
fi
|
||||
|
||||
libobjs=$output
|
||||
# Restore the value of output.
|
||||
output=$save_output
|
||||
output=$save_output
|
||||
|
||||
if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
|
||||
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
|
||||
@ -3364,20 +3388,20 @@ EOF
|
||||
cmds=$archive_expsym_cmds
|
||||
else
|
||||
cmds=$archive_cmds
|
||||
fi
|
||||
fi
|
||||
|
||||
# Append the command to remove the reloadable object files
|
||||
# to the just-reset $cmds.
|
||||
eval cmds=\"\$cmds~$rm $delfiles\"
|
||||
fi
|
||||
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
|
||||
for cmd in $cmds; do
|
||||
IFS="$save_ifs"
|
||||
eval cmds=\"\$cmds~$rm $delfiles\"
|
||||
fi
|
||||
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
|
||||
for cmd in $cmds; do
|
||||
IFS="$save_ifs"
|
||||
eval cmd=\"$cmd\"
|
||||
$show "$cmd"
|
||||
$run eval "$cmd" || exit $?
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
$show "$cmd"
|
||||
$run eval "$cmd" || exit $?
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
|
||||
# Restore the uninstalled library and exit
|
||||
if test "$mode" = relink; then
|
||||
|
Loading…
Reference in New Issue
Block a user