xref: /freebsd/contrib/arm-optimized-routines/math/Dir.mk (revision f3087bef11543b42e0d69b708f367097a4118d24)
131914882SAlex Richardson# Makefile fragment - requires GNU make
231914882SAlex Richardson#
3*f3087befSAndrew Turner# Copyright (c) 2019-2024, Arm Limited.
4072a4ba8SAndrew Turner# SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
531914882SAlex Richardson
6*f3087befSAndrew Turner.SECONDEXPANSION:
731914882SAlex Richardson
8*f3087befSAndrew Turnerifneq ($(OS),Linux)
9*f3087befSAndrew Turner  ifeq ($(WANT_SIMD_EXCEPT),1)
10*f3087befSAndrew Turner    $(error WANT_SIMD_EXCEPT is not supported outside Linux)
11*f3087befSAndrew Turner  endif
12*f3087befSAndrew Turner  ifneq ($(USE_MPFR),1)
13*f3087befSAndrew Turner    $(warning WARNING: Double-precision ULP tests will not be usable without MPFR)
14*f3087befSAndrew Turner  endif
15*f3087befSAndrew Turner  ifeq ($(USE_GLIBC_ABI),1)
16*f3087befSAndrew Turner    $(error Can only generate special GLIBC symbols on Linux - please disable USE_GLIBC_ABI)
17*f3087befSAndrew Turner  endif
18*f3087befSAndrew Turnerendif
19*f3087befSAndrew Turner
20*f3087befSAndrew Turnerifneq ($(ARCH),aarch64)
21*f3087befSAndrew Turner  ifeq ($(WANT_TRIGPI_TESTS),1)
22*f3087befSAndrew Turner    $(error trigpi functions only supported on aarch64)
23*f3087befSAndrew Turner  endif
24*f3087befSAndrew Turner  ifeq ($(WANT_EXPERIMENTAL_MATH),1)
25*f3087befSAndrew Turner    $(error Experimental math only supported on aarch64)
26*f3087befSAndrew Turner  endif
27*f3087befSAndrew Turnerendif
28*f3087befSAndrew Turner
29*f3087befSAndrew Turnermath-src-dir := $(srcdir)/math
30*f3087befSAndrew Turnermath-build-dir := build/math
31*f3087befSAndrew Turner
32*f3087befSAndrew Turnermath-lib-srcs := $(wildcard $(math-src-dir)/*.[cS])
33*f3087befSAndrew Turnermath-lib-srcs += $(wildcard $(math-src-dir)/$(ARCH)/*.[cS])
34*f3087befSAndrew Turnerifeq ($(OS),Linux)
35*f3087befSAndrew Turner# Vector symbols only supported on Linux
36*f3087befSAndrew Turnermath-lib-srcs += $(wildcard $(math-src-dir)/$(ARCH)/*/*.[cS])
37*f3087befSAndrew Turnerendif
38*f3087befSAndrew Turner
39*f3087befSAndrew Turnerifeq ($(WANT_EXPERIMENTAL_MATH), 1)
40*f3087befSAndrew Turnerifeq ($(OS),Linux)
41*f3087befSAndrew Turner# Vector symbols only supported on Linux
42*f3087befSAndrew Turnermath-lib-srcs += $(wildcard $(math-src-dir)/$(ARCH)/experimental/*/*.[cS])
43*f3087befSAndrew Turnerelse
44*f3087befSAndrew Turnermath-lib-srcs += $(wildcard $(math-src-dir)/$(ARCH)/experimental/*.[cS])
45*f3087befSAndrew Turnerendif
46*f3087befSAndrew Turnerelse
47*f3087befSAndrew Turner# Scalar experimental symbols will have been added by wildcard, so remove them
48*f3087befSAndrew Turnermath-lib-srcs := $(filter-out $(math-src-dir)/aarch64/experimental/%, $(math-lib-srcs))
49*f3087befSAndrew Turnerendif
505a02ffc3SAndrew Turner
5131914882SAlex Richardsonmath-test-srcs := \
52*f3087befSAndrew Turner	$(math-src-dir)/test/mathtest.c \
53*f3087befSAndrew Turner	$(math-src-dir)/test/mathbench.c \
54*f3087befSAndrew Turner	$(math-src-dir)/test/ulp.c \
5531914882SAlex Richardson
56*f3087befSAndrew Turnermath-test-host-srcs := $(wildcard $(math-src-dir)/test/rtest/*.[cS])
5731914882SAlex Richardson
58*f3087befSAndrew Turnermath-includes := $(patsubst $(math-src-dir)/%,build/%,$(wildcard $(math-src-dir)/include/*.h))
5931914882SAlex Richardson
6031914882SAlex Richardsonmath-libs := \
6131914882SAlex Richardson	build/lib/libmathlib.so \
6231914882SAlex Richardson	build/lib/libmathlib.a \
6331914882SAlex Richardson
6431914882SAlex Richardsonmath-tools := \
6531914882SAlex Richardson	build/bin/mathtest \
6631914882SAlex Richardson	build/bin/mathbench \
6731914882SAlex Richardson	build/bin/mathbench_libc \
6831914882SAlex Richardson	build/bin/runulp.sh \
6931914882SAlex Richardson	build/bin/ulp \
7031914882SAlex Richardson
7131914882SAlex Richardsonmath-host-tools := \
7231914882SAlex Richardson	build/bin/rtest \
7331914882SAlex Richardson
74*f3087befSAndrew Turnermath-lib-objs := $(patsubst $(math-src-dir)/%,$(math-build-dir)/%.o,$(basename $(math-lib-srcs)))
75*f3087befSAndrew Turnermath-test-objs := $(patsubst $(math-src-dir)/%,$(math-build-dir)/%.o,$(basename $(math-test-srcs)))
76*f3087befSAndrew Turnermath-host-objs := $(patsubst $(math-src-dir)/%,$(math-build-dir)/%.o,$(basename $(math-test-host-srcs)))
7731914882SAlex Richardsonmath-target-objs := $(math-lib-objs) $(math-test-objs)
7831914882SAlex Richardsonmath-objs := $(math-target-objs) $(math-target-objs:%.o=%.os) $(math-host-objs)
7931914882SAlex Richardson
8031914882SAlex Richardsonmath-files := \
8131914882SAlex Richardson	$(math-objs) \
8231914882SAlex Richardson	$(math-libs) \
8331914882SAlex Richardson	$(math-tools) \
8431914882SAlex Richardson	$(math-host-tools) \
85*f3087befSAndrew Turner	$(math-includes)
8631914882SAlex Richardson
87*f3087befSAndrew Turnerall-math: $(math-libs) $(math-tools) $(math-includes)
8831914882SAlex Richardson
89*f3087befSAndrew Turner$(math-objs): $(math-includes)
9031914882SAlex Richardson$(math-objs): CFLAGS_ALL += $(math-cflags)
91*f3087befSAndrew Turner$(math-build-dir)/test/mathtest.o: CFLAGS_ALL += -fmath-errno
9231914882SAlex Richardson$(math-host-objs): CC = $(HOST_CC)
9331914882SAlex Richardson$(math-host-objs): CFLAGS_ALL = $(HOST_CFLAGS)
9431914882SAlex Richardson
95*f3087befSAndrew Turner# Add include path for experimental routines so they can share helpers with non-experimental
96*f3087befSAndrew Turner$(math-build-dir)/aarch64/experimental/advsimd/%: CFLAGS_ALL += -I$(math-src-dir)/aarch64/advsimd
97*f3087befSAndrew Turner$(math-build-dir)/aarch64/experimental/sve/%: CFLAGS_ALL += -I$(math-src-dir)/aarch64/sve
98*f3087befSAndrew Turner
99*f3087befSAndrew Turner$(math-objs): CFLAGS_ALL += -I$(math-src-dir)
100*f3087befSAndrew Turner
101*f3087befSAndrew Turnerulp-funcs-dir = build/test/ulp-funcs/
102*f3087befSAndrew Turnerulp-wrappers-dir = build/test/ulp-wrappers/
103*f3087befSAndrew Turnermathbench-funcs-dir = build/test/mathbench-funcs/
104*f3087befSAndrew Turnertest-sig-dirs = $(ulp-funcs-dir) $(ulp-wrappers-dir) $(mathbench-funcs-dir)
105*f3087befSAndrew Turnerbuild/include/test $(test-sig-dirs) $(addsuffix /$(ARCH),$(test-sig-dirs)) $(addsuffix /aarch64/experimental,$(test-sig-dirs)) \
106*f3087befSAndrew Turner$(addsuffix /aarch64/experimental/advsimd,$(test-sig-dirs)) $(addsuffix /aarch64/experimental/sve,$(test-sig-dirs)) \
107*f3087befSAndrew Turner$(addsuffix /aarch64/advsimd,$(test-sig-dirs)) $(addsuffix /aarch64/sve,$(test-sig-dirs)):
108*f3087befSAndrew Turner	mkdir -p $@
109*f3087befSAndrew Turner
110*f3087befSAndrew Turnerulp-funcs = $(patsubst $(math-src-dir)/%,$(ulp-funcs-dir)/%,$(basename $(math-lib-srcs)))
111*f3087befSAndrew Turnerulp-wrappers = $(patsubst $(math-src-dir)/%,$(ulp-wrappers-dir)/%,$(basename $(math-lib-srcs)))
112*f3087befSAndrew Turnermathbench-funcs = $(patsubst $(math-src-dir)/%,$(mathbench-funcs-dir)/%,$(basename $(math-lib-srcs)))
113*f3087befSAndrew Turner
114*f3087befSAndrew Turnerifeq ($(WANT_SVE_TESTS), 0)
115*f3087befSAndrew Turner  # Filter out anything with sve in the path
116*f3087befSAndrew Turner  ulp-funcs := $(foreach a,$(ulp-funcs),$(if $(findstring sve,$a),,$a))
117*f3087befSAndrew Turner  ulp-wrappers := $(foreach a,$(ulp-wrappers),$(if $(findstring sve,$a),,$a))
118*f3087befSAndrew Turner  mathbench-funcs := $(foreach a,$(mathbench-funcs),$(if $(findstring sve,$a),,$a))
119*f3087befSAndrew Turnerendif
120*f3087befSAndrew Turner
121*f3087befSAndrew Turnerdefine emit_sig
122*f3087befSAndrew Turner$1/aarch64/experimental/sve/%.i: EXTRA_INC = -I$(math-src-dir)/aarch64/sve
123*f3087befSAndrew Turner$1/aarch64/experimental/advsimd/%.i: EXTRA_INC = -I$(math-src-dir)/aarch64/advsimd
124*f3087befSAndrew Turner$1/%.i: $(math-src-dir)/%.c | $$$$(@D)
125*f3087befSAndrew Turner	$(CC) $$< $(math-cflags) -I$(math-src-dir)/include -I$(math-src-dir) $$(EXTRA_INC) -D$2 -E -o $$@
126*f3087befSAndrew Turner$1/%: $1/%.i
127*f3087befSAndrew Turner	{ grep TEST_SIG $$< || true; } | cut -f 2- -d ' ' > $$@
128*f3087befSAndrew Turnerendef
129*f3087befSAndrew Turner
130*f3087befSAndrew Turner$(eval $(call emit_sig,$(ulp-funcs-dir),EMIT_ULP_FUNCS))
131*f3087befSAndrew Turner$(eval $(call emit_sig,$(ulp-wrappers-dir),EMIT_ULP_WRAPPERS))
132*f3087befSAndrew Turner$(eval $(call emit_sig,$(mathbench-funcs-dir),EMIT_MATHBENCH_FUNCS))
133*f3087befSAndrew Turner
134*f3087befSAndrew Turnerulp-funcs-gen = build/include/test/ulp_funcs_gen.h
135*f3087befSAndrew Turnerulp-wrappers-gen = build/include/test/ulp_wrappers_gen.h
136*f3087befSAndrew Turnermathbench-funcs-gen = build/include/test/mathbench_funcs_gen.h
137*f3087befSAndrew Turnermath-tools-autogen-headers = $(ulp-funcs-gen) $(ulp-wrappers-gen) $(mathbench-funcs-gen)
138*f3087befSAndrew Turner
139*f3087befSAndrew Turner$(ulp-funcs-gen): $(ulp-funcs) | $$(@D)
140*f3087befSAndrew Turner$(ulp-wrappers-gen): $(ulp-wrappers) | $$(@D)
141*f3087befSAndrew Turner$(mathbench-funcs-gen): $(mathbench-funcs) | $$(@D)
142*f3087befSAndrew Turner
143*f3087befSAndrew Turner$(math-tools-autogen-headers): | $$(@D)
144*f3087befSAndrew Turner	cat $^ | sort -u > $@
145*f3087befSAndrew Turner
146*f3087befSAndrew Turner$(math-build-dir)/test/mathbench.o: $(mathbench-funcs-gen)
147*f3087befSAndrew Turner$(math-build-dir)/test/ulp.o: $(math-src-dir)/test/ulp.h $(ulp-funcs-gen) $(ulp-wrappers-gen)
14831914882SAlex Richardson
14931914882SAlex Richardsonbuild/lib/libmathlib.so: $(math-lib-objs:%.o=%.os)
15031914882SAlex Richardson	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -shared -o $@ $^
15131914882SAlex Richardson
15231914882SAlex Richardsonbuild/lib/libmathlib.a: $(math-lib-objs)
15331914882SAlex Richardson	rm -f $@
15431914882SAlex Richardson	$(AR) rc $@ $^
15531914882SAlex Richardson	$(RANLIB) $@
15631914882SAlex Richardson
157*f3087befSAndrew Turner$(math-host-tools): HOST_LDLIBS += $(libm-libs) $(mpfr-libs) $(mpc-libs)
158*f3087befSAndrew Turner$(math-tools): LDLIBS += $(math-ldlibs) $(libm-libs)
159*f3087befSAndrew Turner
160*f3087befSAndrew Turnerifneq ($(OS),Darwin)
161*f3087befSAndrew Turner  $(math-tools): LDFLAGS += -static
162*f3087befSAndrew Turnerendif
16331914882SAlex Richardson
16431914882SAlex Richardsonbuild/bin/rtest: $(math-host-objs)
16531914882SAlex Richardson	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ $^ $(HOST_LDLIBS)
16631914882SAlex Richardson
167*f3087befSAndrew Turnerbuild/bin/mathtest: $(math-build-dir)/test/mathtest.o build/lib/libmathlib.a
168*f3087befSAndrew Turner	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -o $@ $^ $(libm-libs)
16931914882SAlex Richardson
170*f3087befSAndrew Turnerbuild/bin/mathbench: $(math-build-dir)/test/mathbench.o build/lib/libmathlib.a
171*f3087befSAndrew Turner	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -o $@ $^ $(libm-libs)
17231914882SAlex Richardson
17331914882SAlex Richardson# This is not ideal, but allows custom symbols in mathbench to get resolved.
174*f3087befSAndrew Turnerbuild/bin/mathbench_libc: $(math-build-dir)/test/mathbench.o build/lib/libmathlib.a
175*f3087befSAndrew Turner	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -o $@ $< $(libm-libs) $(libc-libs) build/lib/libmathlib.a $(libm-libs)
17631914882SAlex Richardson
177*f3087befSAndrew Turnerbuild/bin/ulp: $(math-build-dir)/test/ulp.o build/lib/libmathlib.a
178*f3087befSAndrew Turner	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -o $@ $^ $(LDLIBS)
17931914882SAlex Richardson
180*f3087befSAndrew Turnerbuild/include/%.h: $(math-src-dir)/include/%.h
18131914882SAlex Richardson	cp $< $@
18231914882SAlex Richardson
183*f3087befSAndrew Turnerbuild/bin/%.sh: $(math-src-dir)/test/%.sh
184072a4ba8SAndrew Turner	cp $< $@
185072a4ba8SAndrew Turner
186*f3087befSAndrew Turnermath-tests := $(wildcard $(math-src-dir)/test/testcases/directed/*.tst)
187*f3087befSAndrew Turnerifneq ($(WANT_EXP10_TESTS),1)
188*f3087befSAndrew Turnermath-tests := $(filter-out %exp10.tst, $(math-tests))
189*f3087befSAndrew Turnerendif
190*f3087befSAndrew Turnermath-rtests := $(wildcard $(math-src-dir)/test/testcases/random/*.tst)
19131914882SAlex Richardson
19231914882SAlex Richardsoncheck-math-test: $(math-tools)
19331914882SAlex Richardson	cat $(math-tests) | $(EMULATOR) build/bin/mathtest $(math-testflags)
19431914882SAlex Richardson
19531914882SAlex Richardsoncheck-math-rtest: $(math-host-tools) $(math-tools)
19631914882SAlex Richardson	cat $(math-rtests) | build/bin/rtest | $(EMULATOR) build/bin/mathtest $(math-testflags)
19731914882SAlex Richardson
198*f3087befSAndrew Turnerulp-input-dir = $(math-build-dir)/test/inputs
199*f3087befSAndrew Turner$(ulp-input-dir) $(ulp-input-dir)/$(ARCH) $(ulp-input-dir)/aarch64/sve $(ulp-input-dir)/aarch64/advsimd \
200*f3087befSAndrew Turner$(ulp-input-dir)/aarch64/experimental $(ulp-input-dir)/aarch64/experimental/advsimd $(ulp-input-dir)/aarch64/experimental/sve:
201*f3087befSAndrew Turner	mkdir -p $@
202*f3087befSAndrew Turner
203*f3087befSAndrew Turnermath-lib-lims = $(patsubst $(math-src-dir)/%.c,$(ulp-input-dir)/%.ulp,$(math-lib-srcs))
204*f3087befSAndrew Turnermath-lib-lims-nn = $(patsubst $(math-src-dir)/%.c,$(ulp-input-dir)/%.ulp_nn,$(math-lib-srcs))
205*f3087befSAndrew Turnermath-lib-fenvs = $(patsubst $(math-src-dir)/%.c,$(ulp-input-dir)/%.fenv,$(math-lib-srcs))
206*f3087befSAndrew Turnermath-lib-itvs = $(patsubst $(math-src-dir)/%.c,$(ulp-input-dir)/%.itv,$(math-lib-srcs))
207*f3087befSAndrew Turnermath-lib-cvals = $(patsubst $(math-src-dir)/%.c,$(ulp-input-dir)/%.cval,$(math-lib-srcs))
208*f3087befSAndrew Turner
209*f3087befSAndrew Turnerulp-inputs = $(math-lib-lims) $(math-lib-lims-nn) $(math-lib-fenvs) $(math-lib-itvs) $(math-lib-cvals)
210*f3087befSAndrew Turner$(ulp-inputs): CFLAGS = -I$(math-src-dir)/test -I$(math-src-dir)/include -I$(math-src-dir) $(math-cflags)\
211*f3087befSAndrew Turner                        -I$(math-src-dir)/aarch64/advsimd -I$(math-src-dir)/aarch64/sve
212*f3087befSAndrew Turner
213*f3087befSAndrew Turner$(ulp-input-dir)/%.ulp.i: $(math-src-dir)/%.c | $$(@D)
214*f3087befSAndrew Turner	$(CC) $(CFLAGS) $< -E -o $@
215*f3087befSAndrew Turner
216*f3087befSAndrew Turner$(ulp-input-dir)/%.ulp: $(ulp-input-dir)/%.ulp.i
217*f3087befSAndrew Turner	{ grep "TEST_ULP " $< || true; } > $@
218*f3087befSAndrew Turner
219*f3087befSAndrew Turner$(ulp-input-dir)/%.ulp_nn.i: $(math-src-dir)/%.c | $$(@D)
220*f3087befSAndrew Turner	$(CC) $(CFLAGS) $< -E -o $@
221*f3087befSAndrew Turner
222*f3087befSAndrew Turner$(ulp-input-dir)/%.ulp_nn: $(ulp-input-dir)/%.ulp_nn.i
223*f3087befSAndrew Turner	{ grep "TEST_ULP_NONNEAREST " $< || true; } > $@
224*f3087befSAndrew Turner
225*f3087befSAndrew Turner$(ulp-input-dir)/%.fenv.i: $(math-src-dir)/%.c | $$(@D)
226*f3087befSAndrew Turner	$(CC) $(CFLAGS) $< -E -o $@
227*f3087befSAndrew Turner
228*f3087befSAndrew Turner$(ulp-input-dir)/%.fenv: $(ulp-input-dir)/%.fenv.i
229*f3087befSAndrew Turner	{ grep "TEST_DISABLE_FENV " $< || true; } > $@
230*f3087befSAndrew Turner
231*f3087befSAndrew Turner$(ulp-input-dir)/%.itv.i: $(math-src-dir)/%.c | $$(@D)
232*f3087befSAndrew Turner	$(CC) $(CFLAGS) $< -E -o $@
233*f3087befSAndrew Turner
234*f3087befSAndrew Turner$(ulp-input-dir)/%.itv: $(ulp-input-dir)/%.itv.i
235*f3087befSAndrew Turner	{ grep "TEST_INTERVAL " $< || true; } | sed "s/ TEST_INTERVAL/\nTEST_INTERVAL/g" > $@
236*f3087befSAndrew Turner
237*f3087befSAndrew Turner$(ulp-input-dir)/%.cval.i: $(math-src-dir)/%.c | $$(@D)
238*f3087befSAndrew Turner	$(CC) $(CFLAGS) $< -E -o $@
239*f3087befSAndrew Turner
240*f3087befSAndrew Turner$(ulp-input-dir)/%.cval: $(ulp-input-dir)/%.cval.i
241*f3087befSAndrew Turner	{ grep "TEST_CONTROL_VALUE " $< || true; } > $@
242*f3087befSAndrew Turner
243*f3087befSAndrew Turnerulp-lims = $(ulp-input-dir)/limits
244*f3087befSAndrew Turner$(ulp-lims): $(math-lib-lims)
245*f3087befSAndrew Turner
246*f3087befSAndrew Turnerulp-lims-nn = $(ulp-input-dir)/limits_nn
247*f3087befSAndrew Turner$(ulp-lims-nn): $(math-lib-lims-nn)
248*f3087befSAndrew Turner
249*f3087befSAndrew Turnerfenv-exps := $(ulp-input-dir)/fenv
250*f3087befSAndrew Turner$(fenv-exps): $(math-lib-fenvs)
251*f3087befSAndrew Turner
252*f3087befSAndrew Turnergeneric-itvs = $(ulp-input-dir)/itvs
253*f3087befSAndrew Turner$(generic-itvs): $(filter-out $(ulp-input-dir)/$(ARCH)/%,$(math-lib-itvs))
254*f3087befSAndrew Turner
255*f3087befSAndrew Turnerarch-itvs = $(ulp-input-dir)/$(ARCH)/itvs
256*f3087befSAndrew Turner$(arch-itvs): $(filter $(ulp-input-dir)/$(ARCH)/%,$(math-lib-itvs))
257*f3087befSAndrew Turner
258*f3087befSAndrew Turnerulp-cvals := $(ulp-input-dir)/cvals
259*f3087befSAndrew Turner$(ulp-cvals): $(math-lib-cvals)
260*f3087befSAndrew Turner
261*f3087befSAndrew Turner# Remove first word, which will be TEST directive
262*f3087befSAndrew Turner$(ulp-lims) $(ulp-lims-nn) $(fenv-exps) $(arch-itvs) $(generic-itvs) $(ulp-cvals): | $$(@D)
263*f3087befSAndrew Turner	sed "s/TEST_[^ ]* //g" $^ | sort -u > $@
264*f3087befSAndrew Turner
265*f3087befSAndrew Turnercheck-math-ulp: $(ulp-lims) $(ulp-lims-nn)
266*f3087befSAndrew Turnercheck-math-ulp: $(fenv-exps) $(ulp-cvals)
267*f3087befSAndrew Turnercheck-math-ulp: $(generic-itvs) $(arch-itvs)
26831914882SAlex Richardsoncheck-math-ulp: $(math-tools)
269*f3087befSAndrew Turner	ULPFLAGS="$(math-ulpflags)" \
270*f3087befSAndrew Turner	LIMITS=../../$(ulp-lims) \
271*f3087befSAndrew Turner	ARCH_ITVS=../../$(arch-itvs) \
272*f3087befSAndrew Turner	GEN_ITVS=../../$(generic-itvs) \
273*f3087befSAndrew Turner	DISABLE_FENV=../../$(fenv-exps) \
274*f3087befSAndrew Turner	CVALS=../../$(ulp-cvals) \
275*f3087befSAndrew Turner	FUNC=$(func) \
276*f3087befSAndrew Turner	WANT_EXPERIMENTAL_MATH=$(WANT_EXPERIMENTAL_MATH) \
277*f3087befSAndrew Turner	WANT_SVE_TESTS=$(WANT_SVE_TESTS) \
278*f3087befSAndrew Turner	USE_MPFR=$(USE_MPFR) \
279*f3087befSAndrew Turner	build/bin/runulp.sh $(EMULATOR)
28031914882SAlex Richardson
28131914882SAlex Richardsoncheck-math: check-math-test check-math-rtest check-math-ulp
28231914882SAlex Richardson
28331914882SAlex Richardsoninstall-math: \
28431914882SAlex Richardson $(math-libs:build/lib/%=$(DESTDIR)$(libdir)/%) \
28531914882SAlex Richardson $(math-includes:build/include/%=$(DESTDIR)$(includedir)/%)
28631914882SAlex Richardson
28731914882SAlex Richardsonclean-math:
28831914882SAlex Richardson	rm -f $(math-files)
28931914882SAlex Richardson
29031914882SAlex Richardson.PHONY: all-math check-math-test check-math-rtest check-math-ulp check-math install-math clean-math
291