102 lines · plain
1# Makefile fragment - requires GNU make2#3# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4# See https://llvm.org/LICENSE.txt for license information.5# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6 7S := $(srcdir)/string8B := build/string9 10ifeq ($(ARCH),)11all-string check-string install-string clean-string:12 @echo "*** Please set ARCH in config.mk. ***"13 @exit 114else15 16string-lib-srcs := $(wildcard $(S)/$(ARCH)/*.[cS])17string-test-srcs := $(wildcard $(S)/test/*.c)18 19string-includes := $(patsubst $(S)/%,build/%,$(wildcard $(S)/include/*.h))20 21string-libs := \22 build/lib/libstringlib.so \23 build/lib/libstringlib.a \24 25string-tools := \26 build/bin/test/memcpy \27 build/bin/test/memmove \28 build/bin/test/memset \29 build/bin/test/memchr \30 build/bin/test/memcmp \31 build/bin/test/strcpy \32 build/bin/test/stpcpy \33 build/bin/test/strcmp \34 build/bin/test/strchr \35 build/bin/test/strrchr \36 build/bin/test/strchrnul \37 build/bin/test/strlen \38 build/bin/test/strnlen \39 build/bin/test/strncmp40 41string-lib-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(string-lib-srcs)))42string-test-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(string-test-srcs)))43 44string-objs := \45 $(string-lib-objs) \46 $(string-lib-objs:%.o=%.os) \47 $(string-test-objs) \48 49string-files := \50 $(string-objs) \51 $(string-libs) \52 $(string-tools) \53 $(string-includes) \54 55all-string: $(string-libs) $(string-tools) $(string-includes)56 57$(string-objs): $(string-includes)58$(string-objs): CFLAGS_ALL += $(string-cflags)59 60build/lib/libstringlib.so: $(string-lib-objs:%.o=%.os)61 $(CC) $(CFLAGS_ALL) $(LDFLAGS) -shared -o $@ $^62 63build/lib/libstringlib.a: $(string-lib-objs)64 rm -f $@65 $(AR) rc $@ $^66 $(RANLIB) $@67 68build/bin/test/%: $(B)/test/%.o build/lib/libstringlib.a69 $(CC) $(CFLAGS_ALL) $(LDFLAGS) -static -o $@ $^ $(LDLIBS)70 71build/include/%.h: $(S)/include/%.h72 cp $< $@73 74build/bin/%.sh: $(S)/test/%.sh75 cp $< $@76 77check-string: $(string-tools)78 $(EMULATOR) build/bin/test/memcpy79 $(EMULATOR) build/bin/test/memmove80 $(EMULATOR) build/bin/test/memset81 $(EMULATOR) build/bin/test/memchr82 $(EMULATOR) build/bin/test/memcmp83 $(EMULATOR) build/bin/test/strcpy84 $(EMULATOR) build/bin/test/stpcpy85 $(EMULATOR) build/bin/test/strcmp86 $(EMULATOR) build/bin/test/strchr87 $(EMULATOR) build/bin/test/strrchr88 $(EMULATOR) build/bin/test/strchrnul89 $(EMULATOR) build/bin/test/strlen90 $(EMULATOR) build/bin/test/strnlen91 $(EMULATOR) build/bin/test/strncmp92 93install-string: \94 $(string-libs:build/lib/%=$(DESTDIR)$(libdir)/%) \95 $(string-includes:build/include/%=$(DESTDIR)$(includedir)/%)96 97clean-string:98 rm -f $(string-files)99endif100 101.PHONY: all-string check-string install-string clean-string102