Have Win DMD use gmake instead of a separate DMMake makefile?

H. S. Teoh hsteoh at quickfur.ath.cx
Mon Aug 12 09:28:05 PDT 2013


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

-- 
WINDOWS = Will Install Needless Data On Whole System -- CompuMan


More information about the Digitalmars-d mailing list