Index: config/ltmain.m4sh =================================================================== RCS file: /cvsroot/libtool/libtool/config/ltmain.m4sh,v retrieving revision 1.73 diff -u -p -r1.73 ltmain.m4sh --- config/ltmain.m4sh 8 Jul 2005 13:45:59 -0000 1.73 +++ config/ltmain.m4sh 11 Jul 2005 19:25:05 -0000 @@ -348,6 +348,7 @@ The following components of LINK-COMMAND -R[[ ]]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension + -sobase SOBASE Set base of SONAME to SOBASE instead of LIBNAME -static do not do any dynamic linking of libtool libraries -version-info CURRENT[[:REVISION[:AGE]]] specify library version info [[each variable defaults to 0]] @@ -2484,6 +2485,13 @@ func_mode_link () prev= continue ;; + sobase) + sobase_name="$arg" + solib_names_spec="$soname_spec" + prev= + continue + ;; + weak) weak_libs="$weak_libs $arg" prev= @@ -2760,6 +2768,11 @@ func_mode_link () continue ;; + -sobase) + prev=sobase + continue + ;; + -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that @@ -3703,6 +3716,9 @@ func_mode_link () realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` + if test -z "$sobase_name"; then + sobase_name="$libname" + fi # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" @@ -4610,7 +4626,7 @@ EOF fi if test -n "$i" ; then libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec $solib_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then @@ -4652,7 +4668,7 @@ EOF fi if test -n "$i" ; then libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec $solib_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then @@ -4960,12 +4976,15 @@ EOF # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" + eval library_names=\"$library_names_spec $solib_names_spec\" set dummy $library_names shift realname="$1" shift + if test -z "$sobase_name"; then + sobase_name="$libname" + fi if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else Index: m4/libtool.m4 =================================================================== RCS file: /cvsroot/libtool/libtool/m4/libtool.m4,v retrieving revision 1.203 diff -u -p -r1.203 libtool.m4 --- m4/libtool.m4 11 Jul 2005 12:11:25 -0000 1.203 +++ m4/libtool.m4 11 Jul 2005 19:25:07 -0000 @@ -1745,7 +1745,7 @@ aix3*) shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' ;; aix4* | aix5*) @@ -1786,7 +1786,7 @@ aix4* | aix5*) # 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}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi @@ -1812,7 +1812,7 @@ bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -1849,12 +1849,12 @@ cygwin* | mingw* | pw32*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo ${sobase_name} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='${sobase_name}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by @@ -1890,7 +1890,7 @@ darwin* | rhapsody*) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + soname_spec='${sobase_name}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -1908,7 +1908,7 @@ dgux*) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -1921,7 +1921,7 @@ kfreebsd*-gnu) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -1965,7 +1965,7 @@ gnu*) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; @@ -1984,7 +1984,7 @@ hpux9* | hpux10* | hpux11*) shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else @@ -1999,7 +1999,7 @@ hpux9* | hpux10* | hpux11*) shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -2009,7 +2009,7 @@ hpux9* | hpux10* | hpux11*) shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. @@ -2028,7 +2028,7 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) @@ -2064,7 +2064,7 @@ linux*) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2093,7 +2093,7 @@ knetbsd*-gnu) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2110,7 +2110,7 @@ netbsd*) dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -2130,7 +2130,7 @@ newsos6) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2175,7 +2175,7 @@ osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" @@ -2184,7 +2184,7 @@ osf3* | osf4* | osf5*) sco3.2v5*) version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2194,7 +2194,7 @@ solaris*) need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -2217,7 +2217,7 @@ sunos4*) sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -2241,7 +2241,7 @@ sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + soname_spec='$sobase_name${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; @@ -2260,7 +2260,7 @@ tpf*) uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='${sobase_name}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;;