Allow *.a and *.o as libtool objects, and hardcode runpaths into

shared libraries.

    (Both taken from FreeBSD's libtool port.)
This commit is contained in:
Sascha Schumann 1999-10-06 18:58:14 +00:00
parent e3d0c91dbb
commit b2edf87b39
4 changed files with 149 additions and 14 deletions

View file

@ -114,9 +114,9 @@ fi
./scripts/preconfig
rm -f ltmain.sh
rm -f ltmain.sh ltconfig
libtoolize --automake --copy --force
patch ltmain.sh < patch-ltmain.sh
cat patch-?? | patch
mv aclocal.m4 aclocal.m4.old 2>/dev/null
aclocal

21
patch-aa Normal file
View file

@ -0,0 +1,21 @@
*** /usr/local/share/libtool/ltconfig Wed Jul 14 14:46:28 1999
--- ltconfig Wed Oct 6 20:32:14 1999
***************
*** 1226,1233 ****
*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
! archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
! archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
--- 1226,1233 ----
*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
! archive_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
! archive_expsym_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi

126
patch-ab Normal file
View file

@ -0,0 +1,126 @@
*** /usr/local/share/libtool/ltmain.sh Wed Jul 14 14:46:28 1999
--- ltmain.sh Wed Oct 6 20:45:47 1999
***************
*** 1162,1168 ****
*.o | *.obj | *.a | *.lib)
# A standard object.
! objs="$objs $arg"
;;
*.lo)
--- 1162,1168 ----
*.o | *.obj | *.a | *.lib)
# A standard object.
! libobjs="$libobjs $arg"
;;
*.lo)
***************
*** 1796,1801 ****
--- 1796,1889 ----
esac
fi
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$compile_rpath " in
+ *" $libdir "*) ;;
+ *) compile_rpath="$compile_rpath $libdir" ;;
+ esac
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
# Create the output directory, or remove our outputs if we need to.
if test -d $output_objdir; then
$show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
***************
*** 1955,1960 ****
--- 2043,2049 ----
done
done
if test -n "$a_deplib" ; then
+ newdeplibs="$newdeplibs $a_deplib"
droppeddeps=yes
echo
echo "*** Warning: This library needs some functionality provided by $a_deplib."

View file

@ -1,12 +0,0 @@
*** ltmain.sh.orig Wed Oct 6 15:10:21 1999
--- ltmain.sh Wed Oct 6 15:11:33 1999
***************
*** 1955,1960 ****
--- 1955,1961 ----
done
done
if test -n "$a_deplib" ; then
+ newdeplibs="$newdeplibs $a_deplib"
droppeddeps=yes
echo
echo "*** Warning: This library needs some functionality provided by $a_deplib."