Kevin,

On Wed, 14 Dec 2022, Kevin R. Bulgrien wrote:

> During attempts to build top-of-tree libssh2 on a dinosaur (SCO OpenServer 
> 5.0.7),
> an issue with loading indirect dependencies of libssh2.so is occurring.  They 
> can
> be worked around by setting LD_LIBRARY_PATH at run-time, however it seems much
> simpler to depend on DT_RPATH so the run-time environment does not require
> management.
> 
> The linker behaves as defined at the link following (ironically, more 
> completely
> documented on this list than in the official documentation):
> 
>   https://lists.gnu.org/archive/html/bug-libtool/2002-08/msg00026.html
> 
[snip]
> 
> Can anyone offer a pointer on where to look in autotools/libtool structure
> to get DT_RPATH set in the linked binaries or comment on whether this is
> even an option with libtool?   I'm finding difficulty differentiating
> between -R and -rpath for libtool versus similar switches for ld.

On OpenServer, I usually just build with the SONAME being a full path name.

I am attaching a patch to the libtool 2.4.6 generated during
a libssh2-1.8.0 build.

Once all testing is complete, I do
......
rm src/libssh2.la
SCOABSPATH=1 ; export SCOABSPATH
gmake 2>&1 | tee x.log
......
then package.

Note: the last hunk is to address a regression introduced in 2.4.6
with the freebsd reorg.

-- 
Tim Rice                                Multitalents
t...@multitalents.net
--- libtool.old 2022-12-15 13:35:00.869441000 +0000
+++ libtool     2022-12-15 13:38:25.699441000 +0000
@@ -359,8 +359,8 @@
 old_archive_from_expsyms_cmds=""
 
 # Commands used to build a shared archive.
-archive_cmds="\$CC -G \$wl-h,\$soname -o \$lib \$libobjs \$deplibs 
\$compiler_flags"
-archive_expsym_cmds="\$CC -G \$wl-Bexport:\$export_symbols \$wl-h,\$soname -o 
\$lib \$libobjs \$deplibs \$compiler_flags"
+archive_cmds="\$CC -G \${wl}-h,\\\${SCOABSPATH:+\${install_libdir}/}\$soname 
-o \$lib \$libobjs \$deplibs \$compiler_flags"
+archive_expsym_cmds="\$CC -G \${wl}-Bexport:\$export_symbols 
\${wl}-h,\\\${SCOABSPATH:+\${install_libdir}/}\$soname -o \$lib \$libobjs 
\$deplibs \$compiler_flags"
 
 # Commands used to build a loadable module if different from building
 # a shared archive.
@@ -378,7 +378,7 @@
 
 # Flag to hardcode $libdir into a binary during linking.
 # This must work even if $libdir does not exist
-hardcode_libdir_flag_spec="\$wl-R,\$libdir"
+hardcode_libdir_flag_spec="\`test -z \"\$SCOABSPATH\" && echo -R\$libdir | sed 
's|-R/opt/xinuos/lib | |'\`"
 
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=":"
@@ -7552,6 +7552,7 @@
        ;;
 
       -module)
+       unset SCOABSPATH
        module=yes
        continue
        ;;
@@ -9314,7 +9315,7 @@
            age=$number_minor
            revision=$number_revision
            ;;
-         freebsd-aout|qnx|sunos)
+         freebsd-aout|qnx|sco|sunos)
            current=$number_major
            revision=$number_minor
            age=0

Reply via email to