Reintegrate AIX and --only-static/--only-shared support from r1.8

This commit is contained in:
Howard Chu 2000-10-04 02:53:19 +00:00
parent 4dadd52ce7
commit 134af7343f
2 changed files with 80 additions and 10 deletions

View file

@ -1079,8 +1079,11 @@ hardcode_libdir_flag_spec=
hardcode_libdir_separator=
hardcode_direct=no
hardcode_minus_L=no
hardcode_default_flag=
hardcode_shlibpath_var=unsupported
runpath_var=
link_export=
link_export_all=
always_export_symbols=no
export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
# include_expsyms should be a list of space-separated symbols to be *always*
@ -1266,6 +1269,7 @@ else
aix3*)
allow_undefined_flag=unsupported
always_export_symbols=yes
link_export=' -bE:$export_symbols'
archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
@ -1278,7 +1282,7 @@ else
;;
aix4*)
hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
hardcode_libdir_flag_spec='${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
hardcode_libdir_separator=':'
if test "$with_gcc" = yes; then
collect2name=`${CC} -print-prog-name=collect2`
@ -1301,14 +1305,15 @@ else
else
shared_flag='${wl}-bM:SRE'
hardcode_direct=yes
hardcode_minus_L=yes
hardcode_default_flag='${wl}-b nolibpath'
fi
allow_undefined_flag=' ${wl}-berok'
archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
case "$host_os" in aix4.[01]|aix4.[01].*)
# According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
always_export_symbols=yes ;;
esac
link_export=' ${wl}-bE:$export_symbols'
link_export_all=' ${wl}-bexpall'
always_export_symbols=yes
;;
amigaos*)
@ -1828,6 +1833,8 @@ aix3*)
# AIX has no versioning support, so we append a major version to the name.
soname_spec='${libname}${release}.so$major'
lt_cv_dlopen_self=yes
need_lib_prefix=no
;;
aix4*)
@ -1840,6 +1847,8 @@ aix4*)
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
shlibpath_var=LIBPATH
deplibs_check_method=pass_all
lt_cv_dlopen_self=yes
need_lib_prefix=no
;;
amigaos*)
@ -3017,6 +3026,9 @@ hardcode_direct=$hardcode_direct
# resulting binary.
hardcode_minus_L=$hardcode_minus_L
# Flag to force default rpath, to bypass effect of -L
hardcode_default_flag='$hardcode_default_flag'
# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
# the resulting binary.
hardcode_shlibpath_var=$hardcode_shlibpath_var
@ -3033,6 +3045,10 @@ fix_srcfile_path="$fix_srcfile_path"
# Set to yes if exported symbols are required.
always_export_symbols=$always_export_symbols
# Set to use export list when linking programs.
link_export='$link_export'
link_export_all='$link_export_all'
# The commands to list exported symbols.
export_symbols_cmds=$export_symbols_cmds

View file

@ -181,6 +181,16 @@ do
--mode) prevopt="--mode" prev=mode ;;
--mode=*) mode="$optarg" ;;
--only-shared)
build_libtool_libs=yes
build_old_libs=no
;;
--only-static)
build_libtool_libs=no
build_old_libs=yes
;;
--quiet | --silent)
show=:
;;
@ -1077,7 +1087,7 @@ compiler."
-l*)
if test "$arg" = "-lc"; then
case "$host" in
*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | *-*-aix*)
# These systems don't actually have c library (as such)
continue
;;
@ -1628,6 +1638,9 @@ compiler."
$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
fi
install_libdir="$2"
if test -n "$hardcode_default_flag"; then
eval linkopts=\"$linkopts$hardcode_default_flag\"
fi
oldlibs=
if test -z "$rpath"; then
@ -1802,7 +1815,7 @@ compiler."
dependency_libs="$deplibs"
case "$host" in
*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | *-*-aix*)
# these systems don't actually have a c library (as such)!
;;
*-*-rhapsody*)
@ -2463,6 +2476,14 @@ EOF
fi
finalize_rpath="$rpath"
if test -z "$compile_rpath" -a -n "$hardcode_default_flag"; then
eval compile_rpath=\" $hardcode_default_flag\"
fi
if test -z "$finalize_rpath" -a -n "$hardcode_default_flag"; then
eval finalize_rpath=\" $hardcode_default_flag\"
fi
output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
if test "X$output_objdir" = "X$output"; then
output_objdir="$objdir"
@ -2556,6 +2577,32 @@ extern \"C\" {
fi
fi
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
if test "$always_export_symbols" = yes -a -n "$link_export_all"; then
eval link_export=\"$link_export_all\"
elif test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
$show "generating symbol list for \`$output'"
export_symbols="$output_objdir/$output.exp"
$run $rm $export_symbols
libobjs="$objs"
eval cmds=\"$export_symbols_cmds\"
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
for cmd in $cmds; do
IFS="$save_ifs"
$show "$cmd"
$run eval "$cmd" || exit $?
done
IFS="$save_ifs"
if test -n "$export_symbols_regex"; then
$show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
$run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
$show "$mv \"${export_symbols}T\" \"$export_symbols\""
$run eval '$mv "${export_symbols}T" "$export_symbols"'
fi
fi
fi
for arg in $dlprefiles; do
$show "extracting global C symbols from \`$arg'"
name=`echo "$arg" | sed -e 's%^.*/%%'`
@ -2633,7 +2680,7 @@ static const void *lt_preloaded_setup() {
# linked before any other PIC object. But we must not use
# pic_flag when linking with -static. The problem exists in
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
*-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
*-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
case "$compile_command " in
*" -static "*) ;;
*) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
@ -2672,10 +2719,15 @@ static const void *lt_preloaded_setup() {
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
fi
link_export_opt=
if test -n "$export_symbols" -o -n "$dlsyms"; then
eval link_export_opt=\"$link_export\"
fi
if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
# Replace the output file specification.
compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
link_command="$compile_command$compile_rpath"
link_command="$compile_command$compile_rpath$link_export_opt"
# We have no uninstalled library dependencies, so finalize right now.
$show "$link_command"
@ -2761,7 +2813,9 @@ static const void *lt_preloaded_setup() {
# Replace the output file specification.
link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
link_command="$link_command$link_export_opt"
# Delete the old output files.
$run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname