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