From d8f3b19483cb74a25c13be4995cae6ba9f62f2c5 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Wed, 22 Jun 2022 14:20:42 +0200 Subject: [PATCH] Somewhat clean up win64.mak * Remove some unused variables. * Default to a matching MSVC cl.exe & lib.exe in PATH instead of an ancient Visual Studio 2010 installation. * Remove explicit 32-bit recipes, requiring a separate make invocation. Analogous to https://github.com/dlang/druntime/pull/3853. --- etc/c/zlib/win64.mak | 13 +++++------ win64.mak | 53 +++++++++++--------------------------------- 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/etc/c/zlib/win64.mak b/etc/c/zlib/win64.mak index 83dd0690bcf..4c19d3d0553 100644 --- a/etc/c/zlib/win64.mak +++ b/etc/c/zlib/win64.mak @@ -1,13 +1,12 @@ # Makefile for zlib64 MODEL=64 -VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC -CC=$(VCDIR)\bin\amd64\cl -LD=$(VCDIR)\bin\amd64\link -LIB=$(VCDIR)\bin\amd64\lib +CC=cl +LD=link +AR=lib -CFLAGS=/O2 /nologo /I"$(VCDIR)\INCLUDE" +CFLAGS=/O2 /nologo LIBFLAGS=/nologo LDFLAGS=/nologo O=.obj @@ -21,7 +20,7 @@ OBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzclose$(O) gzlib$(O) gzre gzwrite$(O) infback$(O) inffast$(O) inflate$(O) inftrees$(O) trees$(O) uncompr$(O) zutil$(O) -all: zlib64.lib example.exe infcover.exe minigzip.exe +all: zlib$(MODEL).lib example.exe infcover.exe minigzip.exe adler32.obj: zutil.h zlib.h zconf.h "$(CC)" /c $(CFLAGS) $*.c @@ -80,7 +79,7 @@ minigzip.obj: test\minigzip.c zlib.h zconf.h "$(CC)" /c $(cvarsdll) $(CFLAGS) test\$*.c zlib$(MODEL).lib: $(OBJS) - "$(LIB)" $(LIBFLAGS) /OUT:zlib$(MODEL).lib $(OBJS) + "$(AR)" $(LIBFLAGS) /OUT:zlib$(MODEL).lib $(OBJS) example.exe: example.obj zlib$(MODEL).lib "$(LD)" $(LDFLAGS) example.obj zlib$(MODEL).lib diff --git a/win64.mak b/win64.mak index 694500b5991..34633d05599 100644 --- a/win64.mak +++ b/win64.mak @@ -1,4 +1,4 @@ -# Makefile to build D runtime library phobos64.lib for Win64 +# Makefile to build D runtime library phobos{64,32mscoff}.lib for Windows MSVC # Prerequisites: # Microsoft Visual Studio # Targets: @@ -10,32 +10,28 @@ # Delete unneeded files created by build process # make unittest # Build phobos64.lib, build and run unit tests -# make phobos32mscoff -# Build phobos32mscoff.lib -# make unittest32mscoff -# Build phobos32mscoff.lib, build and run unit tests # make cov # Build for coverage tests, run coverage tests +# make MODEL=32mscoff phobos32mscoff.lib +# Build phobos32mscoff.lib (with x86 cl.exe in PATH, otherwise set CC & AR manually) -## Memory model (32 or 64) +## Memory model (32mscoff or 64) MODEL=64 -## Copy command +## Assume MSVC cl.exe & lib.exe in PATH are set up for the target MODEL. +## Otherwise set them explicitly, e.g., to `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\cl.exe`. +CC=cl +AR=lib -CP=cp +MAKE=make ## Directory where dmd has been installed DIR=\dmd2 -## Visual C directories -VCDIR=\Program Files (x86)\Microsoft Visual Studio 10.0\VC -SDKDIR=\Program Files (x86)\Microsoft SDKs\Windows\v7.0A - ## 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 ## Location of druntime tree @@ -45,20 +41,11 @@ DRUNTIMELIB=$(DRUNTIME)/lib/druntime$(MODEL).lib ## Flags for dmd D compiler DFLAGS=-conf= -m$(MODEL) -O -release -w -de -preview=dip1000 -preview=dtorfields -preview=fieldwise -I$(DRUNTIME)\import -#DFLAGS=-m$(MODEL) -unittest -g -#DFLAGS=-m$(MODEL) -unittest -cov -g ## Flags for compiling unittests UDFLAGS=-conf= -g -m$(MODEL) -O -w -preview=dip1000 -preview=fieldwise -I$(DRUNTIME)\import -unittest -version=StdUnittest -version=CoreUnittest -## C compiler, linker, librarian - -CC=$(VCDIR)\bin\amd64\cl -LD=$(VCDIR)\bin\amd64\link -AR=$(VCDIR)\bin\amd64\lib -MAKE=make - ## D compiler DMD_DIR=../dmd @@ -482,25 +469,11 @@ cov : $(SRC_TO_COMPILE) $(LIB) "$(DMD)" -conf= -m$(MODEL) -cov $(UDFLAGS) -ofcov.exe unittest.d $(SRC_TO_COMPILE) $(LIB) cov -################### Win32 COFF support ######################### - -# default to 32-bit compiler relative to the location of the 64-bit compiler, -# link and lib are architecture agnostic -CC32=$(CC)\..\..\cl - -# build phobos32mscoff.lib -phobos32mscoff: - "$(MAKE)" -f win64.mak "DMD=$(DMD)" "MAKE=$(MAKE)" MODEL=32mscoff "CC=$(CC32)" "AR=$(AR)" "VCDIR=$(VCDIR)" "SDKDIR=$(SDKDIR)" - -# run unittests for 32-bit COFF version -unittest32mscoff: - "$(MAKE)" -f win64.mak "DMD=$(DMD)" "MAKE=$(MAKE)" MODEL=32mscoff "CC=$(CC32)" "AR=$(AR)" "VCDIR=$(VCDIR)" "SDKDIR=$(SDKDIR)" unittest - ###################################################### $(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) "CC=$(CC)" "AR=$(AR)" zlib$(MODEL).lib cd ..\..\.. ###################################################### @@ -520,8 +493,8 @@ clean: del $(LIB) del phobos.json -install: phobos.zip - $(CP) phobos.lib phobos64.lib $(DIR)\windows\lib +install: phobos.zip $(LIB) + copy /y /b $(LIB) $(DIR)\windows\lib +rd/s/q $(DIR)\src\phobos unzip -o phobos.zip -d $(DIR)\src\phobos