Sent from my iPhone

On 27/07/2011, at 23:58, Дилян Палаузов <dilyan.palau...@aegee.org> wrote:

Hello,

if I rewrite the build system of Cyrus imap 2.4(.10) to use Automake to generate the Makefile.in-files, will the patch be accepted in reasonable time in git/master?


It would certainly make me happy :)


The advantages of using Automake:
* there is no more need to deal with problems concerning parallel builds

:D

 * preferences in /etc/config.site will be honoured
* with a Makefile.am it is very easy to make cyrus imap use shared libraries with libtool (see bug 3095, and email from 24.06.2011 on cyrus-devel: currently static binaries are huge). [At least from my perspective adding libtool support afterwards is easy] * Makefile.am files are easier to maintain than Makefile.in files (from my perspective)
 * make install, make dist, make distclean will just work (correctly)
 * the output of 'make' can be made to look nicer  (with silent-rules)


Automake conditionals would simplify the way optional features (e.g. sieve) are added to the directories or objects list in the configure script.


Possible problems:
* I am not sure right now, how can 'make install' be tweaked to install files in /usr/cyrus/bin, but I guess this can be tweaked in the worst case by moving the files from /usr/bin to /usr/cyrus/bin

You should be able to override $bindir in configure, or alternatively

foodir=/usr/cyrus/bin
PROGRAMS_foo= ...

* automake 1.11's lex.am file has to be patched in order to acknowledge, that lex can output files other than lex.c and lex. However this tweak is only necessary, when rebuilding Makefile.in from Makefile.am (=not done by end users).

I like to have one Makefile.am per project, as described in the article "Recursive Make Considered Harmful" by Peter Miller (http://aegis.sourceforge.net/auug97.pdf ). If it is for some reason not possible to have at the end a single Makefile.am for cyrus imap, then at least I would like to reduce the number of automake files as much as possible. (With a single Makefile, when you change a file in cyrus-imap/lib and recompile, you are forced to recompile not only libimap.a, but all binaries, that depend on this library;

That specific problem goes away when you change over to libtoolised dynamic libraries, right?

the output looks nicer with "silent-rules" as it is not printed, that the directory is changed; and having a single Makefile speeds up the loading and proceeding it, compared to loading several Makefiles)

I don't think you'll be able to reduce everything to a single makefile, given there Makefile.PLs in there, but it might be worth a try. OTOH there probably aren't so many directories that having multiple makefiles is a real pain.


Any comments?

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

Reply via email to