On Monday, 12 August 2013 at 16:29:36 UTC, H. S. Teoh wrote:
On Mon, Aug 12, 2013 at 11:16:19AM +0100, Russel Winder wrote:
On Sun, 2013-08-11 at 15:41 -0700, H. S. Teoh wrote:
> On Sun, Aug 11, 2013 at 09:26:11AM +0100, Russel Winder
> wrote:
> > On Sat, 2013-08-10 at 14:27 -0400, Nick Sabalausky wrote:
> > […]
> > > is discovering and dealing with all the fun little
> > > differences
> > > between the posix and win32 makefiles (and now we have
> > > some
> > > win64 makefiles as well).
> > […]
> >
> > Isn't this sort of problem solved by using SCons, Waf or
> > (if you
> > really have to) CMake?
> [...]
>
> +1. But people around here seems to have a beef against
> anything
> that isn't make. *shrug*
Make was a revolution and a revelation in 1977, it changed my
life.
However, it is sad to see projects such as Rust, Julia and D
clinging
to a 35 year old build concept when it has been proved time
and time
again that external DSL frameworks for build do not work for
cross-platform working. Only internal DSL build frameworks have
succeeded in that arena, cf. Gradle, SBT, SCons, Waf,…
+1. If I were the one making the decisions, I'd go for SCons.
Or tup
(http://gittup.org/tup/), but tup seems to be currently
posix-specific,
so SCons still wins if you want cross-platform building.
The only part of this thread that has any up side at all is to
ditch
all build frameworks and write the build in D over the
bootstrap D
that will be essential for the D build since D is written in
D. It's a
pity Rust hasn't twigged to this.
I think the D build tool should extend / be built on top of
rdmd to be
able to handle non-D sources. Once we have that, we basically
already
have a working build system.
I note that the Go tooling is written is C and Go, they
ditched make
when they realized their vision for packaging – which works
very well
indeed, particularly pulling in source packages from GitHub,
BitBucket
and Launchpad, compiling and installing the compiled package
into the
appropriate place for use.
I ditched make about a decade ago, and I would never go back if
I had
the choice. Sadly, most of the rest of the world still seems
stuck in
that quagmirem, unable to move on.
On the other hand, I bet a cross-platform SCons build of D
could be in
place and production within days as opposed to the
<substitute-your-favourite-long-time> that a D rewrite in D
will take.
It doesn't matter than the SCons build may be thrown away down
the
line, it solves a problem now for not that much effort.
What do you say? Let's throw together an SConstruct for DMD,
druntime,
and phobos, and submit a pull for it?
The only downside is that I can predict people will start
complaining
about the Python dependency. (Which is why I proposed writing a
build
system in D -- it will be superior to make (anything would
be!), and
people will have no excuse about what language it's written in.)
Still if the core D community are clinging to "build == make",
then
they will have to suffer the irritant of having to have a
separate
build system for each and every platform. That's they way Make
is.
[...]
I used to evangelize SCons to everybody I meet... but after
people
adamantly refused to abandon their precious outdated crappy
makefiles, I
gave up. If they wish to continue suffering, it's not really my
business
to stop them.
T
Thanks for the link! I found this excellent paper there:
http://gittup.org/tup/build_system_rules_and_algorithms.pdf . :)