mirror of
git://git.savannah.gnu.org/libtool.git
synced 2025-01-24 14:24:59 +08:00
* libtool.m4: Build standard shared libraries on AIX POWER
more like AIX does, with a shared object archived into lib<xxx>.a. On AIX -bexpall flag does strange things... Don't use it. Fix quotes around -berok flag. Add support for AIX 5. Add support for run time linking on AIX POWER. (should work on AIX 4.2 and up). Turn this feature on by adding -brtl flag to LD_FLAGS. Add support for AIX on IA64. Note: AIX on IA64 uses a SYSV type linker. Add a comment telling what to do if the TOC starts getting too large on AIX. * NEWS: mention aix5 support.
This commit is contained in:
parent
ff8e64ad84
commit
d9f83c0668
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
||||
2001-04-19 Dan McNichol <mcnichol@austin.ibm.com>
|
||||
|
||||
* libtool.m4: Build standard shared libraries on AIX POWER
|
||||
more like AIX does, with a shared object archived into lib<xxx>.a.
|
||||
On AIX -bexpall flag does strange things... Don't use it.
|
||||
Fix quotes around -berok flag. Add support for AIX 5.
|
||||
Add support for run time linking on AIX POWER. (should work
|
||||
on AIX 4.2 and up). Turn this feature on by adding -brtl flag
|
||||
to LD_FLAGS. Add support for AIX on IA64. Note: AIX on IA64
|
||||
uses a SYSV type linker. Add a comment telling what to do if the
|
||||
TOC starts getting too large on AIX.
|
||||
* NEWS: mention aix5 support.
|
||||
|
||||
2001-04-18 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* TODO: Add -L- flag.
|
||||
|
3
NEWS
3
NEWS
@ -1,5 +1,8 @@
|
||||
NEWS - list of user-visible changes between releases of GNU Libtool
|
||||
|
||||
New in 1.4: 2001-04-??; CVS version 1.3e, Libtool team:
|
||||
* Support for aix5*.
|
||||
|
||||
New in 1.3d: 2001-04-02; CVS version 1.3c, Libtool team:
|
||||
* ltconfig is no more. Generation of libtool happens directly from
|
||||
the configure file.
|
||||
|
162
libtool.m4
vendored
162
libtool.m4
vendored
@ -847,9 +847,15 @@ AC_CACHE_VAL(lt_cv_prog_cc_pic,
|
||||
else
|
||||
# PORTME Check for PIC flags for the system compiler.
|
||||
case $host_os in
|
||||
aix3* | aix4*)
|
||||
# All AIX code is PIC.
|
||||
lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
|
||||
aix3* | aix4* | aix5*)
|
||||
# All AIX code is PIC.
|
||||
if test "$host_cpu" = ia64; then
|
||||
# AIX 5 now supports IA64 processor
|
||||
lt_cv_prog_cc_static='-Bstatic'
|
||||
lt_cv_prog_cc_wl='-Wl,'
|
||||
else
|
||||
lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
|
||||
fi
|
||||
;;
|
||||
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
@ -1192,8 +1198,9 @@ if test "$with_gnu_ld" = yes; then
|
||||
|
||||
# See if GNU ld supports shared libraries.
|
||||
case $host_os in
|
||||
aix3* | aix4*)
|
||||
aix3* | aix4* | aix5*)
|
||||
# On AIX, the GNU linker is very broken
|
||||
# Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
|
||||
ld_shlibs=no
|
||||
cat <<EOF 1>&2
|
||||
|
||||
@ -1392,8 +1399,14 @@ else
|
||||
fi
|
||||
;;
|
||||
|
||||
aix4*)
|
||||
hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
|
||||
aix4* | aix5*)
|
||||
# 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
|
||||
# CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
|
||||
# enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
|
||||
|
||||
archive_cmds=''
|
||||
hardcode_libdir_separator=':'
|
||||
if test "$GCC" = yes; then
|
||||
collect2name=`${CC} -print-prog-name=collect2`
|
||||
@ -1403,34 +1416,67 @@ else
|
||||
# We have reworked collect2
|
||||
hardcode_direct=yes
|
||||
else
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
# It fails to find uninstalled libraries when the uninstalled
|
||||
# path is not listed in the libpath. Setting hardcode_minus_L
|
||||
# to unsupported forces relinking
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
# It fails to find uninstalled libraries when the uninstalled
|
||||
# path is not listed in the libpath. Setting hardcode_minus_L
|
||||
# to unsupported forces relinking
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
shared_flag='-shared'
|
||||
else
|
||||
shared_flag='${wl}-bM:SRE'
|
||||
if test "$host_cpu" = ia64; then
|
||||
shared_flag='-G'
|
||||
else
|
||||
shared_flag='${wl}-bM:SRE'
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
fi
|
||||
allow_undefined_flag=' ${wl}-berok'
|
||||
archive_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
|
||||
archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${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
|
||||
|
||||
# We don't want to build shared libraries on unknown CPU types.
|
||||
case $host_cpu in
|
||||
powerpc | rs6000) ;;
|
||||
*) ld_shlibs=no ;;
|
||||
esac
|
||||
;;
|
||||
if test "$host_cpu" = ia64; then
|
||||
# On IA64, the linker does run time linking by default, so we don't
|
||||
# have to do anything special.
|
||||
aix_use_runtimelinking=no
|
||||
exp_sym_flag='-Bexport'
|
||||
no_entry_flag=""
|
||||
else
|
||||
# Test if we are trying to use run time linking, or normal AIX style linking.
|
||||
# If -brtl is somewhere in LDFLAGS, we need to do run time linking.
|
||||
aix_use_runtimelinking=no
|
||||
for ld_flag in $LDFLAGS; do
|
||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
|
||||
aix_use_runtimelinking=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
exp_sym_flag='-bexport'
|
||||
no_entry_flag='-bnoentry'
|
||||
fi
|
||||
# It seems that -bexpall can do strange things, so it is better to
|
||||
# generate a list of symbols to export.
|
||||
always_export_symbols=yes
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
|
||||
allow_undefined_flag=' -Wl,-G'
|
||||
archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
|
||||
else
|
||||
if test "$host_cpu" = ia64; then
|
||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||
allow_undefined_flag="-znodefs"
|
||||
archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
|
||||
else
|
||||
hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
|
||||
# Warning - without using the other run time loading flags, -berok will
|
||||
# link without error, but may produce a broken library.
|
||||
allow_undefined_flag='${wl}-berok"
|
||||
# This is a bit strange, but is similar to how AIX traditionally builds
|
||||
# it's shared libraries.
|
||||
archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
amigaos*)
|
||||
archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
|
||||
@ -1777,31 +1823,45 @@ aix3*)
|
||||
soname_spec='${libname}${release}.so$major'
|
||||
;;
|
||||
|
||||
aix4*)
|
||||
aix4* | aix5*)
|
||||
version_type=linux
|
||||
# AIX has no versioning support, so currently we can not hardcode correct
|
||||
# soname into executable. Probably we can add versioning support to
|
||||
# collect2, so additional links can be useful in future.
|
||||
# We preserve .a as extension for shared libraries though AIX4.2
|
||||
# and later linker supports .so
|
||||
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
|
||||
shlibpath_var=LIBPATH
|
||||
case $host_os in
|
||||
[ aix4 | aix4.[01] | aix4.[01].*)]
|
||||
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
|
||||
echo ' yes '
|
||||
echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
|
||||
:
|
||||
if test "$host_cpu" = ia64; then
|
||||
# AIX 5 supports IA64
|
||||
library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
|
||||
shlibpath_var=LD_LIBRARY_PATH
|
||||
else
|
||||
# With GCC up to 2.95.x, collect2 would create an import file
|
||||
# for dependence libraries. The import file would start with
|
||||
# the line `#! .'. This would cause the generated library to
|
||||
# depend on `.', always an invalid library. This was fixed in
|
||||
# development snapshots of GCC prior to 3.0.
|
||||
case $host_os in
|
||||
[ aix4 | aix4.[01] | aix4.[01].*)]
|
||||
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
|
||||
echo ' yes '
|
||||
echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
|
||||
:
|
||||
else
|
||||
can_build_shared=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
# AIX (on Power*) has no versioning support, so currently we can not hardcode correct
|
||||
# soname into executable. Probably we can add versioning support to
|
||||
# collect2, so additional links can be useful in future.
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
# If using run time linking (on AIX 4.2 or later) use lib<name>.so instead of
|
||||
# lib<name>.a to let people know that these are not typical AIX shared libraries.
|
||||
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
|
||||
else
|
||||
# With GCC up to 2.95.x, collect2 would create an import file
|
||||
# for dependence libraries. The import file would start with
|
||||
# the line `#! .'. This would cause the generated library to
|
||||
# depend on `.', always an invalid library. This was fixed in
|
||||
# development snapshots of GCC prior to 3.0.
|
||||
can_build_shared=no
|
||||
# We preserve .a as extension for shared libraries through AIX4.2
|
||||
# and later when we are not doing run time linking.
|
||||
library_names_spec='${libname}${release}.a $libname.a'
|
||||
soname_spec='${libname}${release}.so$major'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shlibpath_var=LIBPATH
|
||||
deplibs_check_method=pass_all
|
||||
fi
|
||||
;;
|
||||
|
||||
amigaos*)
|
||||
@ -3052,7 +3112,7 @@ lt_cv_deplibs_check_method='unknown'
|
||||
# whether `pass_all' will *always* work, you probably want this one.
|
||||
|
||||
case $host_os in
|
||||
aix4*)
|
||||
aix4* | aix5*)
|
||||
lt_cv_deplibs_check_method=pass_all
|
||||
;;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user