[interp] run regression with all combinations of available optimizations (#17644)
[mono-project.git] / sdks / builds / runtime.mk
blob9f3c00aea50dc0d1320f8c1766015e68fd212a5d
2 ##
3 # Parameters:
4 # $(1): product
5 # $(2): target
6 # $(3): host triple
7 # $(4): exclude from archive
9 # Flags:
10 # _$(1)-$(2)_AR
11 # _$(1)-$(2)_AS
12 # _$(1)-$(2)_CC
13 # _$(1)-$(2)_CPP
14 # _$(1)-$(2)_CXX
15 # _$(1)-$(2)_CXXCPP
16 # _$(1)-$(2)_DLLTOOL
17 # _$(1)-$(2)_LD
18 # _$(1)-$(2)_CMAKE
19 # _$(1)-$(2)_OBJDUMP
20 # _$(1)-$(2)_RANLIB
21 # _$(1)-$(2)_STRIP
22 # _$(1)-$(2)_CFLAGS
23 # _$(1)-$(2)_CXXFLAGS
24 # _$(1)-$(2)_CPPFLAGS
25 # _$(1)-$(2)_LDFLAGS
26 # _$(1)-$(2)_AC_VARS
27 # _$(1)-$(2)_CONFIGURE_FLAGS
28 # _$(1)-$(2)_PATH
29 define RuntimeTemplate
31 _runtime_$(1)-$(2)_BITNESS=$$(if $$(or $$(findstring i686,$(3)),$$(findstring i386,$(3))),-m32,$$(if $$(findstring x86_64,$(3)),-m64))
33 _runtime_$(1)-$(2)_CFLAGS=$(if $(RELEASE),-O2 -g,-O0 -ggdb3 -fno-omit-frame-pointer) $$(_$(1)-$(2)_CFLAGS) $$($(1)-$(2)_CFLAGS) $$(_runtime_$(1)-$(2)_BITNESS)
34 _runtime_$(1)-$(2)_CXXFLAGS=$(if $(RELEASE),-O2 -g,-O0 -ggdb3 -fno-omit-frame-pointer) $$(_$(1)-$(2)_CXXFLAGS) $$($(1)-$(2)_CXXFLAGS) $$(_runtime_$(1)-$(2)_BITNESS)
35 _runtime_$(1)-$(2)_CPPFLAGS=$(if $(RELEASE),-O2 -g,-O0 -ggdb3 -fno-omit-frame-pointer) $$(_$(1)-$(2)_CPPFLAGS) $$($(1)-$(2)_CPPFLAGS) $$(_runtime_$(1)-$(2)_BITNESS)
36 _runtime_$(1)-$(2)_CXXCPPFLAGS=$(if $(RELEASE),-O2 -g,-O0 -ggdb3 -fno-omit-frame-pointer) $$(_$(1)-$(2)_CXXCPPFLAGS) $$($(1)-$(2)_CXXCPPFLAGS) $$(_runtime_$(1)-$(2)_BITNESS)
37 _runtime_$(1)-$(2)_LDFLAGS=$$(_$(1)-$(2)_LDFLAGS) $$($(1)-$(2)_LDFLAGS)
39 _runtime_$(1)-$(2)_AC_VARS=$$(_$(1)-$(2)_AC_VARS) $$($(1)-$(2)_AC_VARS)
41 _runtime_$(1)-$(2)_CONFIGURE_ENVIRONMENT = \
42 $(if $$(_$(1)-$(2)_AR),AR="$$(_$(1)-$(2)_AR)") \
43 $(if $$(_$(1)-$(2)_AS),AS="$$(_$(1)-$(2)_AS)") \
44 $(if $$(_$(1)-$(2)_CC),CC="$$(_$(1)-$(2)_CC)") \
45 $(if $$(_$(1)-$(2)_CPP),CPP="$$(_$(1)-$(2)_CPP)") \
46 $(if $$(_$(1)-$(2)_CXX),CXX="$$(_$(1)-$(2)_CXX)") \
47 $(if $$(_$(1)-$(2)_CXXCPP),CXXCPP="$$(_$(1)-$(2)_CXXCPP)") \
48 $(if $$(_$(1)-$(2)_DLLTOOL),DLLTOOL="$$(_$(1)-$(2)_DLLTOOL)") \
49 $(if $$(_$(1)-$(2)_LD),LD="$$(_$(1)-$(2)_LD)") \
50 $(if $$(_$(1)-$(2)_OBJDUMP),OBJDUMP="$$(_$(1)-$(2)_OBJDUMP)") \
51 $(if $$(_$(1)-$(2)_RANLIB),RANLIB="$$(_$(1)-$(2)_RANLIB)") \
52 $(if $$(_$(1)-$(2)_CMAKE),CMAKE="$$(_$(1)-$(2)_CMAKE)") \
53 $(if $$(_$(1)-$(2)_STRIP),STRIP="$$(_$(1)-$(2)_STRIP)") \
54 CFLAGS="$$(_runtime_$(1)-$(2)_CFLAGS)" \
55 CXXFLAGS="$$(_runtime_$(1)-$(2)_CXXFLAGS)" \
56 CPPFLAGS="$$(_runtime_$(1)-$(2)_CPPFLAGS)" \
57 CXXCPPFLAGS="$$(_runtime_$(1)-$(2)_CXXCPPFLAGS)" \
58 LDFLAGS="$$(_runtime_$(1)-$(2)_LDFLAGS)" \
59 $$(_$(1)-$(2)_CONFIGURE_ENVIRONMENT) \
60 $$($(1)-$(2)_CONFIGURE_ENVIRONMENT)
62 _runtime_$(1)-$(2)_CONFIGURE_FLAGS= \
63 $$(if $(3),--host=$(3)) \
64 --cache-file=$$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION).config.cache \
65 --prefix=$$(TOP)/sdks/out/$(1)-$(2)-$$(CONFIGURATION) \
66 $$(if $$(ENABLE_CXX),--enable-cxx) \
67 $$(_cross-runtime_$(1)-$(2)_CONFIGURE_FLAGS) \
68 $$(_$(1)-$(2)_CONFIGURE_FLAGS) \
69 $$($(1)-$(2)_CONFIGURE_FLAGS)
71 .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure: $$(TOP)/configure .stamp-$(1)-$(2)-toolchain
72 mkdir -p $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION)
73 $(if $$(_$(1)-$(2)_PATH),PATH="$$$$PATH:$$(_$(1)-$(2)_PATH)") ./wrap-configure.sh $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION) $$(abspath $$<) $$(_runtime_$(1)-$(2)_AC_VARS) $$(_runtime_$(1)-$(2)_CONFIGURE_ENVIRONMENT) $$(_runtime_$(1)-$(2)_CONFIGURE_FLAGS)
74 touch $$@
76 .stamp-$(1)-$(2)-configure: .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure
77 touch $$@
79 .PHONY: build-custom-$(1)-$(2)
80 build-custom-$(1)-$(2):
81 $$(MAKE) -C $(1)-$(2)-$$(CONFIGURATION)
83 .PHONY: setup-custom-$(1)-$(2)
84 setup-custom-$(1)-$(2):
85 mkdir -p $$(TOP)/sdks/out/$(1)-$(2)-$$(CONFIGURATION)
87 .PHONY: package-$(1)-$(2)
88 package-$(1)-$(2):
89 $$(MAKE) -C $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION)/mono install
90 $$(MAKE) -C $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION)/support install
92 .PHONY: clean-$(1)-$(2)
93 clean-$(1)-$(2):
94 rm -rf .stamp-$(1)-$(2)-toolchain .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure $$(TOP)/sdks/builds/toolchains/$(1)-$(2) $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION) $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION).config.cache $$(TOP)/sdks/out/$(1)-$(2)-$$(CONFIGURATION)
96 $$(eval $$(call TargetTemplate,$(1),$(2)))
98 .PHONY: configure-$(1)
99 configure-$(1): configure-$(1)-$(2)
101 .PHONY: build-$(1)
102 build-$(1): build-$(1)-$(2)
104 .PHONY: package-$(1)
105 package-$(1): package-$(1)-$(2) $$(ADDITIONAL_PACKAGE_DEPS)
107 .PHONY: archive-$(1)
108 archive-$(1): package-$(1)
110 ifneq ($(4),yes)
111 $(1)_ARCHIVE += $(1)-$(2)-$$(CONFIGURATION)
112 endif
114 endef
117 # Parameters:
118 # $(1): product
119 # $(2): target
120 # $(3): host triple
122 # Flags:
123 # _$(1)-$(2)_AR
124 # _$(1)-$(2)_AS
125 # _$(1)-$(2)_CC
126 # _$(1)-$(2)_CPP
127 # _$(1)-$(2)_CXX
128 # _$(1)-$(2)_CXXCPP
129 # _$(1)-$(2)_DLLTOOL
130 # _$(1)-$(2)_LD
131 # _$(1)-$(2)_CMAKE
132 # _$(1)-$(2)_OBJDUMP
133 # _$(1)-$(2)_RANLIB
134 # _$(1)-$(2)_STRIP
135 # _$(1)-$(2)_CFLAGS
136 # _$(1)-$(2)_CXXFLAGS
137 # _$(1)-$(2)_CPPFLAGS
138 # _$(1)-$(2)_LDFLAGS
139 # _$(1)-$(2)_AC_VARS
140 # _$(1)-$(2)_CONFIGURE_FLAGS
141 # _$(1)-$(2)_PATH
142 define RuntimeTemplateStub
144 .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure: $$(TOP)/configure .stamp-$(1)-$(2)-toolchain
145 touch $$@
147 .stamp-$(1)-$(2)-configure: .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure
148 touch $$@
150 .PHONY: build-custom-$(1)-$(2)
151 build-custom-$(1)-$(2):
152 @echo "TODO: build-custom-$(1)-$(2) on $$(UNAME)"
154 .PHONY: setup-custom-$(1)-$(2)
155 setup-custom-$(1)-$(2):
156 @echo "TODO: setup-custom-$(1)-$(2) on $$(UNAME)"
158 .PHONY: package-$(1)-$(2)
159 package-$(1)-$(2):
160 @echo "TODO: package-$(1)-$(2) on $$(UNAME)"
162 .PHONY: clean-$(1)-$(2)
163 clean-$(1)-$(2):
164 rm -rf .stamp-$(1)-$(2)-toolchain .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure $$(TOP)/sdks/builds/toolchains/$(1)-$(2) $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION) $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION).config.cache $$(TOP)/sdks/out/$(1)-$(2)-$$(CONFIGURATION)
166 $$(eval $$(call TargetTemplate,$(1),$(2)))
168 .PHONY: configure-$(1)
169 configure-$(1): configure-$(1)-$(2)
171 .PHONY: build-$(1)
172 build-$(1): build-$(1)-$(2)
174 .PHONY: archive-$(1)
175 archive-$(1): package-$(1)-$(2)
178 endef
182 # Parameters:
183 # $(1): product
184 # $(2): target
185 # $(3): host triple
186 # $(4): target triple
187 # $(5): device target
188 # $(6): llvm
189 # $(7): offsets dumper abi
191 # Flags:
192 # _$(1)-$(2)_AR
193 # _$(1)-$(2)_AS
194 # _$(1)-$(2)_CC
195 # _$(1)-$(2)_CPP
196 # _$(1)-$(2)_CXX
197 # _$(1)-$(2)_CXXCPP
198 # _$(1)-$(2)_DLLTOOL
199 # _$(1)-$(2)_LD
200 # _$(1)-$(2)_OBJDUMP
201 # _$(1)-$(2)_RANLIB
202 # _$(1)-$(2)_STRIP
203 # _$(1)-$(2)_CFLAGS
204 # _$(1)-$(2)_CXXFLAGS
205 # _$(1)-$(2)_CPPFLAGS
206 # _$(1)-$(2)_LDFLAGS
207 # _$(1)-$(2)_AC_VARS
208 # _$(1)-$(2)_CONFIGURE_FLAGS
209 # _$(1)-$(2)_PATH
210 # _$(1)-$(2)_OFFSETS_DUMPER_ARGS
211 define CrossRuntimeTemplate
213 _cross-runtime_$(1)-$(2)_CONFIGURE_FLAGS= \
214 --target=$(4) \
215 --with-cross-offsets=$(4).h \
216 --with-llvm=$$(TOP)/sdks/out/$(6)
218 .stamp-$(1)-$(2)-toolchain:
219 touch $$@
221 .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure: | $$(if $$(IGNORE_PROVISION_LLVM),,provision-$(6))
223 $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION)/$(4).h: .stamp-offsets-tool-py-setup .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure | configure-$(1)-$(5)
224 . $(TOP)/tools/offsets-tool-py/offtool/bin/activate && PYTHONPATH=$(TOP)/tools/offsets-tool-py python3 $(TOP)/tools/offsets-tool-py/offsets-tool.py --targetdir="$$(TOP)/sdks/builds/$(1)-$(5)-$$(CONFIGURATION)" --abi=$(7) --monodir="$$(TOP)" --outfile="$$@" $$(_$(1)-$(2)_OFFSETS_DUMPER_ARGS)
226 build-$(1)-$(2): $$(TOP)/sdks/builds/$(1)-$(2)-$$(CONFIGURATION)/$(4).h
228 $$(eval $$(call RuntimeTemplate,$(1),$(2),$(3)))
230 .PHONY: archive-$(1)
231 archive-$(1): provision-$(6)
233 $(1)_ARCHIVE += $(6)
235 endef
237 .stamp-offsets-tool-py-setup:
238 $(MAKE) -C $(TOP)/tools/offsets-tool-py setup
239 touch $@
242 # Parameters:
243 # $(1): product
244 # $(2): target
245 # $(3): host triple
246 # $(4): target triple
247 # $(5): device target
248 # $(6): llvm
249 # $(7): offsets dumper abi
251 # Flags:
252 # _$(1)-$(2)_AR
253 # _$(1)-$(2)_AS
254 # _$(1)-$(2)_CC
255 # _$(1)-$(2)_CPP
256 # _$(1)-$(2)_CXX
257 # _$(1)-$(2)_CXXCPP
258 # _$(1)-$(2)_DLLTOOL
259 # _$(1)-$(2)_LD
260 # _$(1)-$(2)_OBJDUMP
261 # _$(1)-$(2)_RANLIB
262 # _$(1)-$(2)_STRIP
263 # _$(1)-$(2)_CFLAGS
264 # _$(1)-$(2)_CXXFLAGS
265 # _$(1)-$(2)_CPPFLAGS
266 # _$(1)-$(2)_LDFLAGS
267 # _$(1)-$(2)_AC_VARS
268 # _$(1)-$(2)_CONFIGURE_FLAGS
269 # _$(1)-$(2)_PATH
270 # _$(1)-$(2)_OFFSETS_DUMPER_ARGS
271 define CrossRuntimeTemplateStub
273 .stamp-$(1)-$(2)-toolchain:
274 touch $$@
276 .stamp-$(1)-$(2)-$$(CONFIGURATION)-configure:
278 $$(eval $$(call RuntimeTemplateStub,$(1),$(2),$(3)))
280 endef