Re: C++ shared libraries on Sun Forte compiler

2002-11-30 Thread Ulrik Petersen
Thanks.  Will do.  I will let the list know if it
doesn't work.

Ulrik

 --- Bob Friesenhahn <[EMAIL PROTECTED]>
wrote: > Have you tried using the CVS version of
libtool? 
> This seems to work
> ok with the Sun Forte compiler.  Earlier versions of
> libtool are not
> designed to work with C++.
> 
> Bob
> 
> On Thu, 28 Nov 2002, Ulrik Petersen wrote:
> 
> > Hello,
> >
> > libtool is great, but unfortunately it still does
> not
> > work equally well on all platforms.  I have
> problems
> > with building shared C++ libraries on the Sun
> Forte CC
> > compiler, especially when using templates.  There
> are
> > severel problems, all of which I will describe
> below.
> >
> > The Sun Forte compiler has problems when object
> files
> > are moved around, which libtool does by default. 
> This
> > is because the Sun Forte compiler stores template
> > instances in separate files, along with
> information
> > about which object files belong with which
> template
> > instances.  Thus when object files are moved
> around
> > (between $libdir and $objdir), the linker (which
> > happens to be the compiler) does not know where to
> > find the template instances, resulting in
> unresolved
> > symbols.  There is a FAQ dealing with this at:
> >
> >
>
http://wwws.sun.com/software/sundev/suncc/faqs/cpp.html#0q3
> >
> > Here is a (very dirty) sed script I use in my
> > configure.in in order to make libtool work:
> >
> > s/compiler_o_lo="no"/compiler_o_lo="yes"/
> > s%$show "$mv $output_obj $libobj"%\#%
> > s%$show "$mv $libobj $obj"%\#%
> > s%$show "$mv $output_obj $obj"%\#%
> > s%$show "$mv $libobj $lo_libobj"%\#%
> > s%$run $mv $output_obj $libobj%test "x" = "x"%
> > s%$run $mv $libobj $obj%test "x" = "x"%
> > s%$run $mv $output_obj $obj%test "x" = "x"%
> > s%$run $mv $libobj $lo_libobj%test "x" = "x"%
> > s%\*\.lo) libobjs="\$libobjs \$arg"%\*\.lo)
> > libobjs="\$libobjs \$objdir/\$arg"%
> >
> > As you can see, this sed script solves three
> problems:
> >
> > 1) It sets compiler_o_lo to yes, even though
> > aclocal.m4 believes it should be no.
> >
> > 2) It removes the lines that mv any object files.
> >
> > 3) It puts $objdir/ in front of all object files
> when
> > linking.
> >
> > Also, as detailed in the Sun Forte C++ User's
> Guide,
> > one should use CC -xar -o instead of ar and CC -g
> > instead of ld when linking C++ libraries. 
> Otherwise,
> > templates are not instantiated.
> >
> > Here is the code I use in my configure.in to
> > accomplish this.  ISHOSTSUNCC is a variable I set
> > myself.
> >
> > if test x$ISHOSTSUNCC = xyes; then
> >   AR=CC;
> >   AR_FLAGS="-xar -o";
> >   LD=CC;
> >   export AR AR_FLAGS LD
> > fi
> >
> > dnl Invoke libtool
> > AC_PROG_LIBTOOL
> >
> > Of course, one should not use the CC compiler as
> the
> > linker/archiver when linking C libraries.  So
> there
> > are some language-related complexities involved
> here.
> >
> > The Sun Forte C++ User's Guide can be found at:
> >
> > http://docs.sun.com/db/doc/806-7991
> >
> > The relevant sections are: Chapter 7 (especially
> > 7.3.1), Chapter 16 (especially 16.2 and 16.3),
> Chapter
> > 12.
> >
> > If you need any other information, please contact
> me
> > off-list: [EMAIL PROTECTED]
> >
> > Best regards,
> >
> > Ulrik Petersen
> > Emdros maintainer, 
> >
> >
> > =
> > --
> > Ulrik Petersen, Denmark
> >
> > Beskyt din computer mod virus og misbrug! Læs mere
> i Yahoo! Sikkerhedscenter på
> www.yahoo.dk/sikkerhedscenter
> >
> >
> > ___
> > Libtool mailing list
> > [EMAIL PROTECTED]
> > http://mail.gnu.org/mailman/listinfo/libtool
> >
> 
> ==
> Bob Friesenhahn
> [EMAIL PROTECTED]
> http://www.simplesystems.org/users/bfriesen
>  


=
--
Ulrik Petersen, Denmark

Beskyt din computer mod virus og misbrug! Læs mere i Yahoo! Sikkerhedscenter på 
www.yahoo.dk/sikkerhedscenter


___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



Re: C++ shared libraries on Sun Forte compiler

2002-11-28 Thread Bob Friesenhahn
Have you tried using the CVS version of libtool?  This seems to work
ok with the Sun Forte compiler.  Earlier versions of libtool are not
designed to work with C++.

Bob

On Thu, 28 Nov 2002, Ulrik Petersen wrote:

> Hello,
>
> libtool is great, but unfortunately it still does not
> work equally well on all platforms.  I have problems
> with building shared C++ libraries on the Sun Forte CC
> compiler, especially when using templates.  There are
> severel problems, all of which I will describe below.
>
> The Sun Forte compiler has problems when object files
> are moved around, which libtool does by default.  This
> is because the Sun Forte compiler stores template
> instances in separate files, along with information
> about which object files belong with which template
> instances.  Thus when object files are moved around
> (between $libdir and $objdir), the linker (which
> happens to be the compiler) does not know where to
> find the template instances, resulting in unresolved
> symbols.  There is a FAQ dealing with this at:
>
> http://wwws.sun.com/software/sundev/suncc/faqs/cpp.html#0q3
>
> Here is a (very dirty) sed script I use in my
> configure.in in order to make libtool work:
>
> s/compiler_o_lo="no"/compiler_o_lo="yes"/
> s%$show "$mv $output_obj $libobj"%\#%
> s%$show "$mv $libobj $obj"%\#%
> s%$show "$mv $output_obj $obj"%\#%
> s%$show "$mv $libobj $lo_libobj"%\#%
> s%$run $mv $output_obj $libobj%test "x" = "x"%
> s%$run $mv $libobj $obj%test "x" = "x"%
> s%$run $mv $output_obj $obj%test "x" = "x"%
> s%$run $mv $libobj $lo_libobj%test "x" = "x"%
> s%\*\.lo) libobjs="\$libobjs \$arg"%\*\.lo)
> libobjs="\$libobjs \$objdir/\$arg"%
>
> As you can see, this sed script solves three problems:
>
> 1) It sets compiler_o_lo to yes, even though
> aclocal.m4 believes it should be no.
>
> 2) It removes the lines that mv any object files.
>
> 3) It puts $objdir/ in front of all object files when
> linking.
>
> Also, as detailed in the Sun Forte C++ User's Guide,
> one should use CC -xar -o instead of ar and CC -g
> instead of ld when linking C++ libraries.  Otherwise,
> templates are not instantiated.
>
> Here is the code I use in my configure.in to
> accomplish this.  ISHOSTSUNCC is a variable I set
> myself.
>
> if test x$ISHOSTSUNCC = xyes; then
>   AR=CC;
>   AR_FLAGS="-xar -o";
>   LD=CC;
>   export AR AR_FLAGS LD
> fi
>
> dnl Invoke libtool
> AC_PROG_LIBTOOL
>
> Of course, one should not use the CC compiler as the
> linker/archiver when linking C libraries.  So there
> are some language-related complexities involved here.
>
> The Sun Forte C++ User's Guide can be found at:
>
> http://docs.sun.com/db/doc/806-7991
>
> The relevant sections are: Chapter 7 (especially
> 7.3.1), Chapter 16 (especially 16.2 and 16.3), Chapter
> 12.
>
> If you need any other information, please contact me
> off-list: [EMAIL PROTECTED]
>
> Best regards,
>
> Ulrik Petersen
> Emdros maintainer, 
>
>
> =
> --
> Ulrik Petersen, Denmark
>
> Beskyt din computer mod virus og misbrug! Læs mere i Yahoo! Sikkerhedscenter på 
>www.yahoo.dk/sikkerhedscenter
>
>
> ___
> Libtool mailing list
> [EMAIL PROTECTED]
> http://mail.gnu.org/mailman/listinfo/libtool
>

==
Bob Friesenhahn
[EMAIL PROTECTED]
http://www.simplesystems.org/users/bfriesen



___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool



C++ shared libraries on Sun Forte compiler

2002-11-28 Thread Ulrik Petersen
Hello,

libtool is great, but unfortunately it still does not
work equally well on all platforms.  I have problems
with building shared C++ libraries on the Sun Forte CC
compiler, especially when using templates.  There are
severel problems, all of which I will describe below.

The Sun Forte compiler has problems when object files
are moved around, which libtool does by default.  This
is because the Sun Forte compiler stores template
instances in separate files, along with information
about which object files belong with which template
instances.  Thus when object files are moved around
(between $libdir and $objdir), the linker (which
happens to be the compiler) does not know where to
find the template instances, resulting in unresolved
symbols.  There is a FAQ dealing with this at:

http://wwws.sun.com/software/sundev/suncc/faqs/cpp.html#0q3

Here is a (very dirty) sed script I use in my
configure.in in order to make libtool work:

s/compiler_o_lo="no"/compiler_o_lo="yes"/
s%$show "$mv $output_obj $libobj"%\#%
s%$show "$mv $libobj $obj"%\#%
s%$show "$mv $output_obj $obj"%\#%
s%$show "$mv $libobj $lo_libobj"%\#%
s%$run $mv $output_obj $libobj%test "x" = "x"%
s%$run $mv $libobj $obj%test "x" = "x"%
s%$run $mv $output_obj $obj%test "x" = "x"%
s%$run $mv $libobj $lo_libobj%test "x" = "x"%
s%\*\.lo) libobjs="\$libobjs \$arg"%\*\.lo)
libobjs="\$libobjs \$objdir/\$arg"%

As you can see, this sed script solves three problems:

1) It sets compiler_o_lo to yes, even though
aclocal.m4 believes it should be no.  

2) It removes the lines that mv any object files.

3) It puts $objdir/ in front of all object files when
linking.

Also, as detailed in the Sun Forte C++ User's Guide,
one should use CC -xar -o instead of ar and CC -g
instead of ld when linking C++ libraries.  Otherwise,
templates are not instantiated.

Here is the code I use in my configure.in to
accomplish this.  ISHOSTSUNCC is a variable I set
myself.

if test x$ISHOSTSUNCC = xyes; then
  AR=CC;
  AR_FLAGS="-xar -o";
  LD=CC;
  export AR AR_FLAGS LD
fi

dnl Invoke libtool
AC_PROG_LIBTOOL

Of course, one should not use the CC compiler as the
linker/archiver when linking C libraries.  So there
are some language-related complexities involved here.

The Sun Forte C++ User's Guide can be found at:

http://docs.sun.com/db/doc/806-7991

The relevant sections are: Chapter 7 (especially
7.3.1), Chapter 16 (especially 16.2 and 16.3), Chapter
12.

If you need any other information, please contact me
off-list: [EMAIL PROTECTED]

Best regards,

Ulrik Petersen
Emdros maintainer, 


=
--
Ulrik Petersen, Denmark

Beskyt din computer mod virus og misbrug! Læs mere i Yahoo! Sikkerhedscenter på 
www.yahoo.dk/sikkerhedscenter


___
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool