Subject: Re: libtool, C++ shared libraries, and pthreads
To: None <tech-pkg@NetBSD.org>
From: Johnny C. Lam <jlam@buildlink.org>
List: tech-pkg
Date: 11/11/2004 16:05:12
This is a multi-part message in MIME format.
--------------020000040002010102060509
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Johnny C. Lam wrote:
>
> I've attached the essential part of the changes to libtool that I wish
> to make to fix the libtool.m4 that differ from the current changes in
> manual-libtool.m4. This correctly links -lpthread to the shared library
> when I build comms/gsmlib.
And the patch:
--------------020000040002010102060509
Content-Type: text/plain;
name="diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="diff"
@@ -3206,10 +3216,17 @@ case $host_os in
;;
esac
;;
- netbsd*)
+ netbsd0*|netbsd1*)
if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
wlarc=
+ # Determine if we need to override the c++rt0 that is
+ # picked up by analysing output_verbose_link_cmds
+ if test -f ${PREFIX}/lib/c++rt0/c++rt0.o.PIC; then
+ cpprt0_file="${PREFIX}/lib/c++rt0/c++rt0.o.PIC"
+ else
+ cpprt0_file=
+ fi
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_AC_TAGVAR(hardcode_direct, $1)=yes
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -3217,6 +3234,11 @@ case $host_os in
# Workaround some broken pre-1.5 toolchains
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
;;
+ netbsd*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ output_verbose_link_cmd='echo'
+ ;;
openbsd2*)
# C++ shared libraries are fairly broken
_LT_AC_TAGVAR(ld_shlibs, $1)=no
--------------020000040002010102060509--