Building from source on Windows
MoonlightSentinel
moonlightsentinel at disroot.org
Fri Jan 28 22:55:17 UTC 2022
As others have said before, steps + error messages would be
appreciated s.t. we can determine whether it's a local or general
issue.
Software:
- Any VS version (already used 17 and 22 but others should work
as well)
- DM make
Setup for Druntime / Phobos*:
- Change the VS-related variables in `win64.mak` based on your
specific VS installation (because they change with each version)
* `VCDIR`
* `SDKDIR`
* `BINDIR`
Building should then be as simple as running `make -f win64.mak`
in each directory (for dmd it simply forwards to `src/build.d`).
---
Currently using VS 2022 which required the following changes:
#### Druntime
```diff
diff --git a/win64.mak b/win64.mak
index 505d0d93..91fbed29 100644
--- a/win64.mak
+++ b/win64.mak
@@ -5,9 +5,10 @@ MODEL=64
# Visual Studio 2019
#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
-# Visual Studio 2015 and before
-VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC
-SDKDIR=\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
+
+# Visual Studio 2022
+VCDIR=C:\Program Files\Microsoft Visual
Studio\2022\Community\VC\Tools\MSVC\14.30.30705
+SDKDIR=C:\Program Files (x86)\Windows
Kits\10\Include\10.0.20348.0
DMD_DIR=..\dmd
BUILD=release
@@ -15,9 +16,9 @@ OS=windows
DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\$(MODEL)\dmd
# Visual Studio 2017/2019
-#BINDIR=$(VCDIR)\bin\Hostx64\x64
+BINDIR=$(VCDIR)\bin\Hostx64\x64
# Visual Studio 2015 and before
-BINDIR=$(VCDIR)\bin\amd64
+#BINDIR=$(VCDIR)\bin\amd64
CC=$(BINDIR)\cl
LD=$(BINDIR)\link
@@ -37,9 +38,9 @@ DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport
-version=CoreDdoc
UTFLAGS=-version=CoreUnittest -unittest -checkaction=context
#CFLAGS=/O2 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include
-CFLAGS=/Z7 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include
+#CFLAGS=/Z7 /I"$(VCDIR)"\INCLUDE /I"$(SDKDIR)"\Include
# Visual Studio 2019
-#CFLAGS=/Z7 /I"$(VCDIR)"\include /I"$(SDKDIR)"\ucrt
+CFLAGS=/Z7 /I"$(VCDIR)"\include /I"$(SDKDIR)"\ucrt
DRUNTIME_BASE=druntime$(MODEL)
DRUNTIME=lib\$(DRUNTIME_BASE).lib
```
#### Phobos
```diff
diff --git a/etc/c/zlib/win64.mak b/etc/c/zlib/win64.mak
index 83dd0690b..30919d538 100644
--- a/etc/c/zlib/win64.mak
+++ b/etc/c/zlib/win64.mak
@@ -7,7 +7,7 @@ CC=$(VCDIR)\bin\amd64\cl
LD=$(VCDIR)\bin\amd64\link
LIB=$(VCDIR)\bin\amd64\lib
-CFLAGS=/O2 /nologo /I"$(VCDIR)\INCLUDE"
+CFLAGS=/O2 /nologo /I"$(VCDIR)"\include /I"$(SDKDIR)"\ucrt
LIBFLAGS=/nologo
LDFLAGS=/nologo
O=.obj
diff --git a/win64.mak b/win64.mak
index 041fb19c2..fcbb2dcbf 100644
--- a/win64.mak
+++ b/win64.mak
@@ -29,13 +29,13 @@ CP=cp
DIR=\dmd2
## Visual C directories
-VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC
-SDKDIR=\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
+VCDIR=C:\Program Files\Microsoft Visual
Studio\2022\Community\VC\Tools\MSVC\14.30.30705
+SDKDIR=C:\Program Files (x86)\Windows
Kits\10\Include\10.0.20348.0
## Flags for VC compiler
#CFLAGS=/Zi /nologo /I"$(VCDIR)\INCLUDE" /I"$(SDKDIR)\Include"
-CFLAGS=/O2 /nologo /I"$(VCDIR)\INCLUDE" /I"$(SDKDIR)\Include"
+CFLAGS=/O2 /nologo /I"$(VCDIR)"\include /I"$(SDKDIR)"\ucrt
## Location of druntime tree
@@ -54,9 +54,12 @@ UDFLAGS=-conf= -g -m$(MODEL) -O -w
-preview=dip1000 -preview=fieldwise -I$(DRUNT
## C compiler, linker, librarian
-CC=$(VCDIR)\bin\amd64\cl
-LD=$(VCDIR)\bin\amd64\link
-AR=$(VCDIR)\bin\amd64\lib
+BINDIR=$(VCDIR)\bin\Hostx64\x64
+
+CC=$(BINDIR)\cl.exe
+LD=$(BINDIR)\link.exe
+AR=$(BINDIR)\lib.exe
+
MAKE=make
## D compiler
@@ -499,7 +502,7 @@ unittest32mscoff:
$(ZLIB): $(SRC_ZLIB)
cd etc\c\zlib
- "$(MAKE)" -f win64.mak MODEL=$(MODEL) zlib$(MODEL).lib
"CC=$(CC)" "LIB=$(AR)" "VCDIR=$(VCDIR)"
+ "$(MAKE)" -f win64.mak MODEL=$(MODEL) zlib$(MODEL).lib
"CC=$(CC)" "LIB=$(AR)" "VCDIR=$(VCDIR)" "SDKDIR=$(SDKDIR)"
cd ..\..\..
######################################################
```
More information about the Digitalmars-d
mailing list