-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMakefile
205 lines (115 loc) · 4.11 KB
/
Makefile
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Use the default go compiler
GO_BUILDFLAGS=-compiler gc
# Or uncomment the line below to use the gccgo compiler, which may
# or may not be faster than gc and which may or may not compile...
# GO_BUILDFLAGS=-compiler gccgo -gccgoflags '-static-libgcc -O4 -Ofast -march=native'
CLEANLIBFILES :=
ifeq ($(OS), Windows_NT)
CLEANLIBFILES = rm -frv $(GOPATH)/bin/*.dll
endif
LIBUMAGNUS32SRC := $(PWD)/kernels_src/Kernels/kernels32.h
LIBUMAGNUS64SRC := $(PWD)/kernels_src/Kernels/kernels64.h
CGO_CFLAGS_ALLOW='(-fno-schedule-insns|-malign-double|-ffast-math)'
BUILD_TARGETS = all base mod cl-binds cl-compiler clkernels clean data data64 draw draw64 dump dump64 engine engine64 freetype gui realclean hooks httpfs mag mag64 oommf oommf64 script script64 timer uMagNUS uMagNUS64 util loader loader64 kernloader kernloader64 libumagnus libumagnus64 libs
.PHONY: $(BUILD_TARGETS)
all: base libs
base: mod cl-compiler kernloader kernloader64 uMagNUS uMagNUS64
go install -v $(GO_BUILDFLAGS) github.com/seeder-research/uMagNUS/cmd/...
hooks: .git/hooks/post-commit .git/hooks/pre-commit
.git/hooks/post-commit: post-commit
ln -sf $(CURDIR)/$< $@
.git/hooks/pre-commit: pre-commit
ln -sf $(CURDIR)/$< $@
mod:
go mod init
cl-binds: go.mod
$(MAKE) -C ./cl install
clkernels: go.mod
$(MAKE) -C ./opencl all
clkernels64: go.mod
$(MAKE) -C ./opencl64 all
freetype: go.mod
go install -v $(GO_BUILDFLAGS) github.com/seeder-research/uMagNUS/freetype/raster
gui: go.mod
$(MAKE) -C ./gui all
httpfs: go.mod
$(MAKE) -C ./httpfs all
timer: go.mod
$(MAKE) -C ./timer all
util: go.mod
$(MAKE) -C ./util all
ocl2go: go.mod
$(MAKE) -C ./ocl2go all
cl-compiler: cl-binds
$(MAKE) -C ./cmd/uMagNUS-clCompiler all
loader: cl-binds
$(MAKE) -C ./cl_loader all
$(MAKE) -C ./loader all
loader64: cl-binds
$(MAKE) -C ./cl_loader all
$(MAKE) -C ./loader64 all
loaders: loader loader64
kernloader: loader
$(MAKE) -C ./cmd/uMagNUS-kernelLoader all
kernloader64: loader64
$(MAKE) -C ./cmd/uMagNUS-kernelLoader64 all
libumagnus: cl-compiler
rm -f ./libumagnus/*.cc
uMagNUS-clCompiler -args="-cl-opt-disable -cl-mad-enable -cl-finite-math-only -cl-single-precision-constant -cl-fp32-correctly-rounded-divide-sqrt -cl-kernel-arg-info" -std="CL1.2" -iopts="-I$(PWD)/kernels_src" -dump $(LIBUMAGNUS32SRC) >> libumagnus/libumagnus.cc
$(MAKE) -C ./libumagnus lib
libumagnus64: cl-compiler
rm -f ./libumagnus/*.cc
uMagNUS-clCompiler -args="-cl-opt-disable -cl-mad-enable -cl-finite-math-only -cl-fp32-correctly-rounded-divide-sqrt -cl-kernel-arg-info -D__REAL_IS_DOUBLE__" -std="CL1.2" -iopts="-I$(PWD)/kernels_src" -dump $(LIBUMAGNUS64SRC) >> libumagnus/libumagnus64.cc
$(MAKE) -C ./libumagnus lib64
libs: libumagnus libumagnus64
data: cl-binds util
$(MAKE) -C ./data all
data64: cl-binds util
$(MAKE) -C ./data64 all
script: data
$(MAKE) -C ./script all
script64: data64
$(MAKE) -C ./script64 all
draw: data freetype util
$(MAKE) -C ./draw all
draw64: data64 freetype util
$(MAKE) -C ./draw64 all
dump: data util
$(MAKE) -C ./dump all
dump64: data64 util
$(MAKE) -C ./dump64 all
oommf: data util
$(MAKE) -C ./oommf all
oommf64: data64 util
$(MAKE) -C ./oommf64 all
mag: oommf timer
$(MAKE) -C ./mag all
mag64: oommf64 timer
$(MAKE) -C ./mag64 all
engine: clkernels gui httpfs mag script loader
$(MAKE) -C ./engine all
engine64: clkernels64 gui httpfs mag64 script64 loader64
$(MAKE) -C ./engine64 all
uMagNUS: engine
$(MAKE) -C ./cmd/uMagNUS all
uMagNUS64: engine64
$(MAKE) -C ./cmd/uMagNUS64 all
clean:
rm -frv $(GOPATH)/pkg/*/github.com/seeder-research/uMagNUS/*
rm -frv $(GOPATH)/bin/mumax3* $(GOPATH)/bin/uMagNUS* go.mod
$(CLEANLIBFILES)
$(MAKE) -C ./cl_loader clean
$(MAKE) -C ./opencl clean
$(MAKE) -C ./opencl64 clean
$(MAKE) -C ./kernels_src/Kernels clean
$(MAKE) -C ./libumagnus clean
$(MAKE) -C ./ocl2go realclean
$(MAKE) -C ./cl/stubs clean
realclean: clean
${MAKE} -C ./cl_loader realclean
${MAKE} -C ./opencl realclean
${MAKE} -C ./opencl64 realclean
$(MAKE) -C ./kernels_src/Kernels realclean
$(MAKE) -C ./libumagnus realclean
$(MAKE) -C ./ocl2go realclean
$(MAKE) -C ./cl/stubs realclean