forked from dlang/druntime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
win32.mak
155 lines (105 loc) · 3.88 KB
/
win32.mak
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Makefile to build D runtime library druntime.lib for Win32
MODEL=32
DMD_DIR=..\dmd
BUILD=release
OS=windows
DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\$(MODEL)\dmd
CC=dmc
MAKE=make
DOCDIR=doc
IMPDIR=import
DFLAGS=-m$(MODEL) -conf= -O -release -dip1000 -preview=fieldwise -inline -w -Isrc -Iimport
UDFLAGS=-m$(MODEL) -conf= -O -release -dip1000 -preview=fieldwise -w -Isrc -Iimport
DDOCFLAGS=-conf= -c -w -o- -Isrc -Iimport -version=CoreDdoc
UTFLAGS=-version=CoreUnittest -unittest
CFLAGS=
DRUNTIME_BASE=druntime
DRUNTIME=lib\$(DRUNTIME_BASE).lib
DOCFMT=
target : import copydir copy $(DRUNTIME)
$(mak\COPY)
$(mak\DOCS)
$(mak\IMPORTS)
$(mak\SRCS)
# NOTE: trace.d and cover.d are not necessary for a successful build
# as both are used for debugging features (profiling and coverage)
# NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and
# minit.asm is not used by dmd for Linux
OBJS= errno_c_$(MODEL).obj src\rt\minit.obj
OBJS_TO_DELETE= errno_c_$(MODEL).obj
######################## Header file generation ##############################
import:
$(MAKE) -f mak/WINDOWS import DMD="$(DMD)" IMPDIR="$(IMPDIR)"
copydir:
$(MAKE) -f mak/WINDOWS copydir IMPDIR="$(IMPDIR)"
copy:
$(MAKE) -f mak/WINDOWS copy DMD="$(DMD)" IMPDIR="$(IMPDIR)"
################### Win32 Import Libraries ###################
IMPLIBS= \
lib\win32\glu32.lib \
lib\win32\odbc32.lib \
lib\win32\opengl32.lib \
lib\win32\rpcrt4.lib \
lib\win32\shell32.lib \
lib\win32\version.lib \
lib\win32\wininet.lib \
lib\win32\winspool.lib
implibsdir :
if not exist lib\win32 mkdir lib\win32
implibs : implibsdir $(IMPLIBS)
lib\win32\glu32.lib : def\glu32.def
implib $@ $**
lib\win32\odbc32.lib : def\odbc32.def
implib $@ $**
lib\win32\opengl32.lib : def\opengl32.def
implib $@ $**
lib\win32\rpcrt4.lib : def\rpcrt4.def
implib $@ $**
lib\win32\shell32.lib : def\shell32.def
implib $@ $**
lib\win32\version.lib : def\version.def
implib $@ $**
lib\win32\wininet.lib : def\wininet.def
implib $@ $**
lib\win32\winspool.lib : def\winspool.def
implib $@ $**
################### C\ASM Targets ############################
errno_c_$(MODEL).obj : src\core\stdc\errno.c
$(CC) -c -o$@ $(CFLAGS) src\core\stdc\errno.c
# only rebuild explicitly
rebuild_minit_obj : src\rt\minit.asm
$(CC) -c $(CFLAGS) src\rt\minit.asm
################### Library generation #########################
$(DRUNTIME): $(OBJS) $(SRCS) win$(MODEL).mak
*$(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS)
unittest : $(SRCS) $(DRUNTIME)
*$(DMD) $(UDFLAGS) -L/co $(UTFLAGS) -ofunittest.exe -main $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME) -defaultlib=$(DRUNTIME)
unittest
################### tests ######################################
test_aa:
$(DMD) -m$(MODEL) -conf= -Isrc -defaultlib=$(DRUNTIME) -run test\aa\src\test_aa.d
test_cpuid:
"$(MAKE)" -f test\cpuid\win64.mak "DMD=$(DMD)" MODEL=$(MODEL) "VCDIR=$(VCDIR)" DRUNTIMELIB=$(DRUNTIME) "CC=$(CC)" test
test_hash:
$(DMD) -m$(MODEL) -conf= -Isrc -defaultlib=$(DRUNTIME) -run test\hash\src\test_hash.d
test_gc:
"$(MAKE)" -f test\gc\win64.mak "DMD=$(DMD)" MODEL=$(MODEL) "VCDIR=$(VCDIR)" DRUNTIMELIB=$(DRUNTIME) "CC=$(CC)" test
custom_gc:
$(MAKE) -f test\init_fini\win64.mak "DMD=$(DMD)" MODEL=$(MODEL) "VCDIR=$(VCDIR)" DRUNTIMELIB=$(DRUNTIME) "CC=$(CC)" test
test_shared:
$(MAKE) -f test\shared\win64.mak "DMD=$(DMD)" MODEL=$(MODEL) "VCDIR=$(VCDIR)" DRUNTIMELIB=$(DRUNTIME) "CC=$(CC)" test
test_all: test_aa test_cpuid test_hash test_gc custom_gc test_shared
################### zip/install/clean ##########################
zip: druntime.zip
druntime.zip:
del druntime.zip
git ls-tree --name-only -r HEAD >MANIFEST.tmp
zip32 -T -ur druntime @MANIFEST.tmp
del MANIFEST.tmp
install: druntime.zip
unzip -o druntime.zip -d \dmd2\src\druntime
clean:
del $(DRUNTIME) $(OBJS_TO_DELETE)
rmdir /S /Q $(DOCDIR) $(IMPDIR)
auto-tester-build: target
auto-tester-test: unittest test_all