Libtool and Support for Shared Libraries (3)

Дилян Палаузов dilyan.palauzov at aegee.org
Tue Jun 5 06:49:49 EDT 2012


Hello,

now libcyrus and libcyrus_min are compiled once as shared libraries, 
once under perl/ as non-static convenience libraries,
   perl/imap/IMAP.so and perl/sieve/managesieve/managesieve.so link 
statically with the non-static convenience libraries,
   so that IMAP.so and managesieve.so do need neither libcyrus and 
libcyrus_min at run time nor the RPATH with those libraries at tun time.

I hope this is the end with the shared libraries, before they can be merged.

>> I guess libtool has to be run for every step, and this makes the things
>> very messy.
>
> Maybe not. According to the libtool documentation, you can convince
> "libtool --mode=link" to build a native .a file using the obvious
> options "-o foo.a".  So you might be able to convince the main
> Makefile.am to build a native .a and link against that in the MakeMaker
> makefile.

This was done, when for all libraries, both shared and static versions 
were build and perl used just the static versions of libcyrus_min and 
libcyrus to link with IMAP.so and managesieve.so and libimap and 
libsieve were compiled and installed statically, just because.  Anyway, 
I hope now with using only libcyrus and libcyrus_min as non-static 
convenience libraries to have solved the problem.

After merging the support for sieve-seconds, jenkins did not rebuild 
sieve/sieve.c from sieve/sieve.y (it considered probably sieve.c newer 
as sieve.y), I fixed tools/jenkins-build.sh to run "make 
maintainer-clean" (instead of "make distclean") before each run, so that 
sieve/sieve.c is deleted.  This caused deleting also 
imap/rfc822_headers.[ch], which were not rebuild, as ./configure was not 
run with --enable-maintainer-mode.  If gperf is installed on 
jenkins.cyrusimapd.org the next build shall run normally.

Със здраве
   Дилян

On 05.06.2012 09:02, Greg Banks wrote:
>
>
> On Mon, Jun 4, 2012, at 04:22 PM, Дилян Палаузов wrote:
>> Hello,
>>
>> then I suggest to build both static and shared libraries, to link all
>> services and user programmes with the shared libraries, to link the
>> IMAP.so and manageiseve.so files with the static libraries, and resolve
>> by this way the need to insert RPATH in IMAP.so and managesieve.so .
>
> Using noinst_LTLIBRARIES to create a "non-static convenience library"
> (in libtool's terminology) whose only purpose is to get linked into
> IMAP.so and managesieve.so ?  This might work.
>
>> I guess libtool has to be run for every step, and this makes the things
>> very messy.
>
> Maybe not. According to the libtool documentation, you can convince
> "libtool --mode=link" to build a native .a file using the obvious
> options "-o foo.a".  So you might be able to convince the main
> Makefile.am to build a native .a and link against that in the MakeMaker
> makefile.
>
>> Running libtool with --quiet during "make install DESTDIR=" (achieved by
>> "make install DESTDIR=... LIBTOOLOPTIONS=--quiet") steal leads to
>> warnings that the shared libraries are not installed on their final
>> destination.
>
> Ah, libtool... :(
>
>  From the documention it looks like using -R $(libdir) instead of -rpath
> $(libdir) might be useful.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dilyan_palauzov.vcf
Type: text/x-vcard
Size: 380 bytes
Desc: not available
Url : http://lists.andrew.cmu.edu/pipermail/cyrus-devel/attachments/20120605/6857b3cb/attachment-0001.vcf 


More information about the Cyrus-devel mailing list