xref: /freebsd/contrib/arm-optimized-routines/string/Dir.mk (revision f3087bef11543b42e0d69b708f367097a4118d24)
131914882SAlex Richardson# Makefile fragment - requires GNU make
231914882SAlex Richardson#
331914882SAlex Richardson# Copyright (c) 2019-2021, Arm Limited.
4072a4ba8SAndrew Turner# SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
531914882SAlex Richardson
631914882SAlex RichardsonS := $(srcdir)/string
731914882SAlex RichardsonB := build/string
831914882SAlex Richardson
931914882SAlex Richardsonifeq ($(ARCH),)
1031914882SAlex Richardsonall-string bench-string check-string install-string clean-string:
1131914882SAlex Richardson	@echo "*** Please set ARCH in config.mk. ***"
1231914882SAlex Richardson	@exit 1
1331914882SAlex Richardsonelse
1431914882SAlex Richardson
1531914882SAlex Richardsonstring-lib-srcs := $(wildcard $(S)/$(ARCH)/*.[cS])
16*f3087befSAndrew Turnerstring-lib-srcs += $(wildcard $(S)/$(ARCH)/experimental/*.[cS])
1731914882SAlex Richardsonstring-test-srcs := $(wildcard $(S)/test/*.c)
1831914882SAlex Richardsonstring-bench-srcs := $(wildcard $(S)/bench/*.c)
1931914882SAlex Richardson
20*f3087befSAndrew Turnerstring-arch-include-dir := $(wildcard $(S)/$(ARCH))
21*f3087befSAndrew Turnerstring-arch-includes := $(wildcard $(S)/$(ARCH)/*.h)
2231914882SAlex Richardsonstring-includes := $(patsubst $(S)/%,build/%,$(wildcard $(S)/include/*.h))
2331914882SAlex Richardson
2431914882SAlex Richardsonstring-libs := \
2531914882SAlex Richardson	build/lib/libstringlib.so \
2631914882SAlex Richardson	build/lib/libstringlib.a \
2731914882SAlex Richardson
2831914882SAlex Richardsonstring-tests := \
2931914882SAlex Richardson	build/bin/test/memcpy \
3031914882SAlex Richardson	build/bin/test/memmove \
3131914882SAlex Richardson	build/bin/test/memset \
3231914882SAlex Richardson	build/bin/test/memchr \
3331914882SAlex Richardson	build/bin/test/memrchr \
3431914882SAlex Richardson	build/bin/test/memcmp \
3531914882SAlex Richardson	build/bin/test/__mtag_tag_region \
3631914882SAlex Richardson	build/bin/test/__mtag_tag_zero_region \
3731914882SAlex Richardson	build/bin/test/strcpy \
3831914882SAlex Richardson	build/bin/test/stpcpy \
3931914882SAlex Richardson	build/bin/test/strcmp \
4031914882SAlex Richardson	build/bin/test/strchr \
4131914882SAlex Richardson	build/bin/test/strrchr \
4231914882SAlex Richardson	build/bin/test/strchrnul \
4331914882SAlex Richardson	build/bin/test/strlen \
4431914882SAlex Richardson	build/bin/test/strnlen \
4531914882SAlex Richardson	build/bin/test/strncmp
4631914882SAlex Richardson
4731914882SAlex Richardsonstring-benches := \
4831914882SAlex Richardson	build/bin/bench/memcpy \
49*f3087befSAndrew Turner	build/bin/bench/memset \
5031914882SAlex Richardson	build/bin/bench/strlen
5131914882SAlex Richardson
5231914882SAlex Richardsonstring-lib-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(string-lib-srcs)))
5331914882SAlex Richardsonstring-test-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(string-test-srcs)))
5431914882SAlex Richardsonstring-bench-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(string-bench-srcs)))
5531914882SAlex Richardson
5631914882SAlex Richardsonstring-objs := \
5731914882SAlex Richardson	$(string-lib-objs) \
5831914882SAlex Richardson	$(string-lib-objs:%.o=%.os) \
5931914882SAlex Richardson	$(string-test-objs) \
6031914882SAlex Richardson	$(string-bench-objs)
6131914882SAlex Richardson
6231914882SAlex Richardsonstring-files := \
6331914882SAlex Richardson	$(string-objs) \
6431914882SAlex Richardson	$(string-libs) \
6531914882SAlex Richardson	$(string-tests) \
6631914882SAlex Richardson	$(string-benches) \
6731914882SAlex Richardson	$(string-includes) \
6831914882SAlex Richardson
6931914882SAlex Richardsonall-string: $(string-libs) $(string-tests) $(string-benches) $(string-includes)
7031914882SAlex Richardson
71*f3087befSAndrew Turner$(string-objs): $(string-includes) $(string-arch-includes)
72*f3087befSAndrew Turner$(string-objs): CFLAGS_ALL += $(string-cflags) -I$(string-arch-include-dir)
7331914882SAlex Richardson
7431914882SAlex Richardson$(string-test-objs): CFLAGS_ALL += -D_GNU_SOURCE
7531914882SAlex Richardson
7631914882SAlex Richardsonbuild/lib/libstringlib.so: $(string-lib-objs:%.o=%.os)
7731914882SAlex Richardson	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -shared -o $@ $^
7831914882SAlex Richardson
7931914882SAlex Richardsonbuild/lib/libstringlib.a: $(string-lib-objs)
8031914882SAlex Richardson	rm -f $@
8131914882SAlex Richardson	$(AR) rc $@ $^
8231914882SAlex Richardson	$(RANLIB) $@
8331914882SAlex Richardson
8431914882SAlex Richardsonbuild/bin/test/%: $(B)/test/%.o build/lib/libstringlib.a
8531914882SAlex Richardson	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -static -o $@ $^ $(LDLIBS)
8631914882SAlex Richardson
8731914882SAlex Richardsonbuild/bin/bench/%: $(B)/bench/%.o build/lib/libstringlib.a
8831914882SAlex Richardson	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -static -o $@ $^ $(LDLIBS)
8931914882SAlex Richardson
9031914882SAlex Richardsonbuild/include/%.h: $(S)/include/%.h
9131914882SAlex Richardson	cp $< $@
9231914882SAlex Richardson
9331914882SAlex Richardsonbuild/bin/%.sh: $(S)/test/%.sh
9431914882SAlex Richardson	cp $< $@
9531914882SAlex Richardson
9631914882SAlex Richardsonstring-tests-out = $(string-tests:build/bin/test/%=build/string/test/%.out)
9731914882SAlex Richardson
9831914882SAlex Richardsonbuild/string/test/%.out: build/bin/test/%
9931914882SAlex Richardson	$(EMULATOR) $^ | tee $@.tmp
10031914882SAlex Richardson	mv $@.tmp $@
10131914882SAlex Richardson
10231914882SAlex Richardsoncheck-string: $(string-tests-out)
10331914882SAlex Richardson	! grep FAIL $^
10431914882SAlex Richardson
10531914882SAlex Richardsonbench-string: $(string-benches)
10631914882SAlex Richardson	$(EMULATOR) build/bin/bench/strlen
10731914882SAlex Richardson	$(EMULATOR) build/bin/bench/memcpy
108*f3087befSAndrew Turner	$(EMULATOR) build/bin/bench/memset
10931914882SAlex Richardson
11031914882SAlex Richardsoninstall-string: \
11131914882SAlex Richardson $(string-libs:build/lib/%=$(DESTDIR)$(libdir)/%) \
11231914882SAlex Richardson $(string-includes:build/include/%=$(DESTDIR)$(includedir)/%)
11331914882SAlex Richardson
11431914882SAlex Richardsonclean-string:
11531914882SAlex Richardson	rm -f $(string-files)
11631914882SAlex Richardsonendif
11731914882SAlex Richardson
11831914882SAlex Richardson.PHONY: all-string bench-string check-string install-string clean-string
119