Luke,

I see you have started a plugin for C and C++ support.  I think this is
a good move for Gradle.  I am happy to volunteer to be an alpha tester.

Ant and Maven have dreadful (i.e. realistically non-existent) support
for C, C++ and LaTeX, working on the assumption that only JVM based
activity exists.

Conversely the market leaders in the C, C++, LaTeX (and D, OCaml,
Haskell, Chapel, Go, Fortran, etc.) are SCons, Waf and CMake (Make and
Autotools exists but are really legacy systems) and their Java and
Groovy support is weak.  CMake is just a Makefile manager and probably
has little to help.  SCons and Waf however will have a lot to teach
about C and C++ compilation and management.

The single biggest issue is that in Java and Groovy compilation you
rarely track all of the build targets in the DAG -- anonymous classes,
etc. create files you have no way of guessing the name of.  C and C++ on
the other hand generally have all generated files in the DAG, usually of
necessity.  This means parsing the files to determine the graph of
relationships.  Having this built in to SCons (I am less sure of the
internals of Waf) is the single biggest barrier to successful Java
support -- SCons and Waf both support Java (not Groovy) but in a very
weak way.  This is a serious issue for many people.  Regularly there are
moans on the SCons mailing lists about how poor the Java support is, but
this never generates enough energy to actually do something.

What it does mean is that there is validity in having a build framework
that correctly and well handles things both on the JVM and for native
languages.

It might be worth mentioning the crucial difference between SCons and
Waf.  SCons does all its checks everytime and is a Make replacement with
the ability to do some Autoconf type things.  Waf is a two phase
(configure and build) system that is an Autotools replacement.  My idiom
is to use Waf for standalone self-contained projects and SCons for
managing directories with stuff in that needs building -- though I am
still using SCons for LaTeX books rather than switching to Waf.  SCons
needs to be installed, Waf has the entire system (its a 100k file) in
the project something like Gradle Wrapper but 100k instead of 35M -- Waf
doesn't download anything, it just unpacks, Waf is quite superb in this
respect. 

The SCons project is in the middle of a (very slow) move to Mercurial
and BitBucket.  If you want to dig through the source possibly best to
work with a clone of my Mercurial repository on BitBucket rather than
trying to fight with Subversion.

Waf is still a Subversion repository on GoogleCode but then bzr-svn,
hgsubversion and git-svn are good for taking person Bazaar, Mercurial or
Git (respectively) repositories from Subversion repositories.

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:[email protected]
41 Buckmaster Road    m: +44 7770 465 077   xmpp: [email protected]
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