On Mon, 2010-11-22 at 16:41 +0000, Manfred_Nowak wrote:
> Russel Winder wrote:
> 
> > but it has come to the end of its useful life
> 
> why. I ask because I just realized, that llvm still uses it.

For really small systems compiled on a single platform, Make can still
"cut it".  But being an external DSL, the separation of relationship
specification notation and action notation, and especially the platform
specific action notation lead to insurmountable problems.  Go is trying
to persevere with Make but the cracks show readily.  Also Make shows the
cracks for large projects, it doesn't really scale.

Autotools was a brave attempt to make Make make big projects for
Posix-compliant platforms.  CMake is a bold attempt to ensure Make
handles things in a more platform independent way.  Autotools is, I
think also reaching the end of its useful life -- it was an immense bit
of m4 hackery, and deserves respect, just as Make does.

The alternative to all this is to use an internal DSL, i.e. use a
programming language directly.  SCons and Waf plough this furrow -- to
name but the main two in a C, C++, D, LaTeX context.  SCons and Waf both
suffer some serious issues, but they are the current market leaders for
a more modern system.

In the JVM-based arena, Make gave way to Ant 10+ years ago then Maven
came on the scene leading to Maven vs Ant warfare.  With Groovy came
Gant which led to Gradle and the Groovy front end to Ant.  Also Groovy
hit Maven hard leading to Polyglot Maven.  However unless you have mixed
JVM/native systems, as a D person, you are probably not that interested
in these frameworks.

I am not sure what the C#, F#, CLR folk use these days.

The summary is: we should always be on the lookout for the next
evolution of build systems.  In the JVM arena the question is whether
SBT is a step forward or two steps back.  In the C, C++, Fortran arena
legacy generally rules hence Make and Autotools still have a big install
base.

The issue that the JVM-based frameworks address head on that the C, C++,
Fortran, D, etc. communities seems to studiously ignore is the one of
dependency.  Not an issue for static compilation, but a huge issue for
executables reliant on dynamic linking.

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: rus...@russel.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to