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