<div>We should move to a D-based build system to build dmd/druntime/phobos/d-programming-language/tools. </div><div><br></div><div>Reasons, in case it's not obvious: </div><div><br></div><div>1) DRY: makefile is full of repetitions</div>
<div>2) cross platform: different makefiles for different architectures are needed (even win32 vs win64!)</div><div>3) safety: makefile happily ignores that $VAR variables are not set, and can create havoc; likewise tools/update.sh is a bash script and may not stop on 1st error.</div>
<div>4) tools/update.sh doesn't work out of the box on OSX last i checked (I made a pull request for that some time back: <a href="https://github.com/timotheecour/d-programming-language.org/commit/557a2befa74ddfe99ee5c0e12e7c3d028f27d276">https://github.com/timotheecour/d-programming-language.org/commit/557a2befa74ddfe99ee5c0e12e7c3d028f27d276</a> )</div>
<div><br></div><div>Even a bad D-based build system will be better than a makefile, but it's not hard to write a reasonable one at least for the particular task of building dmd/druntime/phobos/d-programming-language/tools. It'll lower the entry point for people to contribute to dmd/phobos by making rebuilding trivial.</div>
<div><br></div><div>Here's how it'd work:</div><div><br></div><div>1) a mixed D-based/makefile build that'll work 'from scratch' via bootstrapping:</div><div>1a) dmd: first uses a makefile to build dmd+druntime</div>
<div>1b) rdmd built from a D file using dmd</div><div>1c) phobos, d-programming-language, tools built from a D file using rdmd</div><div><br></div><div>2) a pure D-based build that'll work using an existing dmd binary (eg distributed binary)</div>
<div>that's the one most will use.<br></div><div><br></div><div><br></div><div><br></div>