www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How do you compile DMD on Windows?

reply Blatnik <blatblatnik gmail.com> writes:
I wanna hack on the compiler, but I've spend 3 hours and I can't 
get the damned thing to compile!

Building DMD itself was simple since there was a visual studio 
project (thank you to whoever made it), but for druntime and 
phobos I can't figure it out.

The instructions on https://wiki.dlang.org/Building_under_Windows 
look like they're outdated.

They say to use the digitalmars make tool and not the normal make 
that I have installed. Great, no problem, except it didn't come 
installed with the compiler as is advertised. I don't have a make 
program in D/dmd2/windows/bin and I can't find a version of it 
online.

When I try to build it with regular make (not ditialmars make) I 
get errors even when I follow the instructions.

Here is the output I get:

```
C:\D\druntime>make -f win64.mak -j4 lib\druntime64.lib

"\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\amd64\cl" -c 
-Foerrno_c_64.obj /Z7 /I"\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Tools\MSVC\14.27.29110"\include 
/I"\Program Files (x86)\Windows 
Kits\10\Include\10.0.18362.0"\ucrt src\core\stdc\errno.c
process_begin: CreateProcess(NULL, "\Program Files 
(x86)\Microsoft Visual 
Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\amd64\cl" -c 
-Foerrno_c_64.obj /Z7 "/I\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include" 
"/I\Program Files (x86)\Windows 
Kits\10\Include\10.0.18362.0\ucrt" src\core\stdc\errno.c, ...) 
failed.
make (e=2): The system cannot find the file specified.
make: *** [win64.mak:79: errno_c_64.obj] Error 2
```

Is there a windows hacker out there that could lend a hand? :)
May 01
next sibling parent reply MoonlightSentinel <moonlightsentinel disroot.org> writes:
On Saturday, 1 May 2021 at 22:44:34 UTC, Blatnik wrote:
 I wanna hack on the compiler, but I've spend 3 hours and I 
 can't get the damned thing to compile!
You probably need to update the VS paths to match your local installation, Microsoft apparently changed their directory layout a few years ago AFAICT. I use the following patch for win64.mak in druntime/phobos: ```patch diff --git a/win64.mak b/win64.mak index 1b4a9208..6f37ba13 100644 --- a/win64.mak +++ b/win64.mak -6,7 +6,7 MODEL=64 #VCDIR=\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110 #SDKDIR=\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0 -VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC +VCDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64 SDKDIR=\Program Files (x86)\Microsoft SDKs\Windows\v7.0A DMD_DIR=..\dmd -19,9 +19,9 DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\$(MODEL)\dmd BINDIR=$(VCDIR)\bin\amd64 -CC=$(BINDIR)\cl -LD=$(BINDIR)\link -AR=$(BINDIR)\lib +CC=$(VCDIR)\cl +LD=$(VCDIR)\link +AR=$(VCDIR)\lib CP=cp DOCDIR=doc ```
May 01
parent reply Blatnik <blatblatnik gmail.com> writes:
On Saturday, 1 May 2021 at 23:07:35 UTC, MoonlightSentinel wrote:
 You probably need to update the VS paths to match your local 
 installation, Microsoft apparently changed their directory 
 layout a few years ago AFAICT.
Thanks for the tip. I think I managed to get it to work.. So not only did I have to change the compiler tools path, but also the path to the dmd I compiled earlier. And also there was a "*" in front of the compile command for some reason which made the whole thing not work. Every command actually has that in front of it for some reason... ``` unittest: $(SRCS) $(DRUNTIME) *"$(DMD)" $(UDFLAGS) ... ``` -----> ``` unittest: $(SRCS) $(DRUNTIME) "$(DMD)" $(UDFLAGS) ... ``` Whatever, that was very needlessly painful... build systems are terrible things. Here's hoping that phobos isn't as annoying >.>
May 01
parent Blatnik <blatblatnik gmail.com> writes:
On Saturday, 1 May 2021 at 23:49:49 UTC, Blatnik wrote:
 Here's hoping that phobos isn't as annoying >.>
It is just as annoying. Even after patching the paths, still errors out.. ``` C:\D\phobos>make -f win64.mak -j4 phobos64.lib cd etc\c\zlib "make" -f win64.mak MODEL=64 zlib64.lib "CC=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl" "LIB=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\lib" "VCDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910" make[1]: Entering directory 'C:/D/phobos' make[1]: *** No rule to make target 'zlib64.lib'. Stop. make[1]: Leaving directory 'C:/D/phobos' make: *** [win64.mak:512: etc\c\zlib\zlib64.lib] Error 2 ``` So then I gave up and tried Digger. I should have just tried that from the start. It just worked.
May 01
prev sibling next sibling parent reply MoonlightSentinel <moonlightsentinel disroot.org> writes:
On Saturday, 1 May 2021 at 22:44:34 UTC, Blatnik wrote:
 They say to use the digitalmars make tool and not the normal 
 make that I have installed. Great, no problem, except it didn't 
 come installed with the compiler as is advertised. I don't have 
 a make program in D/dmd2/windows/bin and I can't find a version 
 of it online.
Missed that in my initial reply. DM make is included in DMC which is available on this site, see the "other downloads". e.g. http://downloads.dlang.org/other/dm857c.zip
May 01
parent Blatnik <blatblatnik gmail.com> writes:
On Sunday, 2 May 2021 at 00:53:42 UTC, MoonlightSentinel wrote:
 DM make is included in DMC which is available on this site, see 
 the "other downloads".
Yea thanks, I couldn't find it anywhere separately before. So in the end even though digger just worked, I didn't realize that it just installs an old version of visual studio. And of course I wanted to build everything with my version. So back to broken make it is. I managed to make DM make work. But this build "experience" was terrible..
May 02
prev sibling parent reply Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Saturday, 1 May 2021 at 22:44:34 UTC, Blatnik wrote:
 I wanna hack on the compiler, but I've spend 3 hours and I 
 can't get the damned thing to compile!

 [...]
For me it took 3 minutes. I opened the VS solution provided and pressed "build". Ta-daa!
May 02
parent Blatnik <blatblatnik gmail.com> writes:
On Sunday, 2 May 2021 at 14:19:09 UTC, Imperatorn wrote:
 I opened the VS solution provided and pressed "build". Ta-daa!
Haha yea, but wait until you try to build the runtime or phobos ;) I hope you don't have to/want to. But I can try to help if you do.
May 02