Building under Windows
Assuming that make, dmc and dmd from digital mars are in your path and your sources are checked out into C:\D\dmd2\src which has the following structure:
C:\D\dmd2\src\dmd C:\D\dmd2\src\druntime C:\D\dmd2\src\phobos C:\D\dmd2\src\tools
The following instructions work for win32. May or may not work with win64. This scheme is a suggestion. These instructions should work when building from a clean repository, however, this repository contains autogenerated code that may be left behind after switching branches so running a git clean after switching branches is a good idea:
git clean -xfd
To build DMD compiler you should run the following commands (win32.mak file expects that HOST_DC variable is set to dmd):
set DM_HOME=C:\D cd %DM_HOME%\dmd2\src\dmd\src set HOST_DC=dmd make -fwin32.mak release
From there, it is suggested to move the built binaries into your %DM_HOME%\windows\bin directory, and add that to your path:
mkdir %DM_HOME%\dmd2\windows\bin copy *.exe %DM_HOME%\dmd2\windows\bin set path=%DM_HOME%\dmd2\windows\bin;%path%
From there, you have to create a sc.ini in your %DM_HOME%\dmd2\windows\bin directory (where dmd.exe is). It is suggested to just copy paste the one provided in the packaged 2.073.1, instead of writing your own, like:
copy "C:\Program Files\D\dmd2\windows\bin\sc.ini" %DM_HOME%\dmd2\windows\bin
Building D runtime
Make sure that you are using dmd compiled in previous step because older compiler might not compile the latest druntime code.
To build D runtime you should run the following commands:
cd %DM_HOME%\dmd2\src\druntime make -fwin32.mak
Make sure that you are using dmd compiled in previous step because older compiler might not compile the latest phobos code.
To build Phobos you should run the following commands:
cd %DM_HOME%\dmd2\src\phobos make -fwin32.mak
You should copy phobos lib into your %DM_HOME%\windows\lib folder:
mkdir %DM_HOME%\dmd2\windows\lib copy phobos.lib %DM_HOME%\dmd2\windows\lib
Optionally, you can build rdmd from source if you have checked out tools in your sources. Some additional libs might be required for build and can simply be copy pasted from the 2.073.1 package without overwriting your phobos.lib.
To build rdmd you should run the following commands:
cd %DM_HOME%\dmd2\src\tools make -fwin32.mak rdmd
You should copy rdmd into your %DM_HOME%\windows\bin folder:
mkdir %DM_HOME%\dmd2\windows\lib copy generated\windows\32\*.exe %DM_HOME%\dmd2\windows\bin
The last step is getting the additional libs. curl for D2 can be found at the bottom of the download section of dlang.org: [download].
Additional libs that are necessary can simply be copy pasted from the 2.073.1 package (without overwriting your phobos.lib).
The very last step is to verify that everything works by unittesting phobos:
cd %DM_HOME%\dmd2\src\phobos make -fwin32.mak unittest
Common Windows issues
If when building druntime you get errors about missing MASM386, it's due to a required assembling of a file called minit.asm. However the druntime repository includes a prebuilt minit.obj file so you shouldn't need to assemble it again. As a workaround for the make error create an empty masm386.bat file and put it in a directory that's in your PATH.
It's also recommended that you use the cmd.exe terminal. Others, like PowerShell, are known to experience issues with legacy tools.
Intermediate files lead to several errors
The three main components (dmd, druntime, phobos) should always be built together with matching versions. The intermediate files generated by a previous build can lead to a failure so it's advisable to run
make -fwin32.mak clean
on each component before starting the process.