[Gecode] Subversion
Christian Schulte
schulte at imit.kth.se
Wed Aug 17 22:58:30 CEST 2005
Frankly, I care fuck about how you do things.
However, for the last, one important thing is to have makefiles that suppot
the development of Gecode (please be selfish). Automake sucks big time here
(remember: fucking around with LD_LIBRARY_PATH, installing librraies
somwhere, etc). Secondly, just because of automake we have two makefiles
anyway. That's it. Forget autoamke. It is the biggest timesink I have ever
seen in my life. If you don't remove it, I'll do.
CS
-----Original Message-----
From: gecode-bounces at ps.uni-sb.de [mailto:gecode-bounces at ps.uni-sb.de] On
Behalf Of Guido Tack
Sent: Wednesday, August 17, 2005 5:55 PM
To: Technical discussions about Gecode
Subject: Re: [Gecode] Subversion
> However, as good as subversion might be, what is still highest on my
> list of software infrastructure is a reasonable set of Makefiles.
I've made some experiments with the Makefiles. I have tried the
automake/libtool-based system, and a handmade Makefile that basically does
the same as Makefile.win, but for Linux.
On my machine, the automake-based complete build (using make check,
including
all examples) takes 6:21 minutes, 6:19 if I switch off dependency tracking.
With the handwritten Makefile, building everything takes 5:55 minutes.
That's
26 seconds or 7% more using automake. Let's have a look at the advantages
and
disadvantages of automake:
+ it knows how to build shared and static libs on at least Linux and
+ MacOS it knows where to install stuff on different platforms it
+ supports building in a separate directory it makes packaging easy
+ dynamic dependency tracking
- it clutters the command line
- it is slower
- it requires a lot of stuff in the configure script that seems useless
(check
for f77 ;)
- when building the examples and linking against shared libs, libtool
creates
wrapper shell scripts -> bad for using gdb
- it is horribly slow on Cygwin/Windows
- it does not work at all with the Microsoft compiler
Some other problems that are however solvable:
* it does not provide targets for generating assembly files (fixed by
additional handwritten rules)
* we have one Makefile.am per module, so no Makefile knows all files, which
makes generating the documentation a little harder (can be solved by putting
everything into one Makefile.am)
Actually, I was a bit surprised that automake is not that much slower. I
think
there's a high windchill factor involved when you change something in the
kernel, you have to recompile everything, and it just takes ages... With the
handwritten Makefiles, you at least see what's going on - the output of the
dependency tracking stuff makes everything /look/ even slower.
I do not really know how well automake's dependency tracker works. I did not
have the impression that too much gets recompiled, though. It only adds 2
seconds to the build time, and it is dynamic - you don't have to call "make
depend" if you changed anything. Of course it would be possible to replace
it
with a "classic" depend target. Then the output looks much cleaner (you can
try it by using --disable-dependency-tracking as a configure option).
To sum up: the biggest problem for us seems to be that we have to maintain
two
Makefiles: one for Windows, and one for the rest of the world. I don't think
speed is that critical - if it is, we can still use handwritten makefiles
for
development and automake for deployment. I will try to write a configure.ac
and toplevel Makefile.am that work for both g++ and msvc, so that we only
have to maintain one list of sources/targets. Maybe that will even allow us
to use handwritten Makefiles for development and automake for deployment
(although I don't see so many advantages of that scheme any more).
Maybe I forgot some (dis)advantages, so I'd be interested in your opinion
about automake/libtool.
Guido
--
Guido Tack
Programming Systems Lab, Saarland University, Saarbrücken
http://www.ps.uni-sb.de/~tack
_______________________________________________
Gecode mailing list
Gecode at ps.uni-sb.de http://www.ps.uni-sb.de/mailman/listinfo/gecode
More information about the gecode-users
mailing list