xref: /llvm-project/libc/AOR_v20.02/string/Dir.mk (revision 0928368f623a0f885894f9c3ef1b740b060c0d9c)
1# Makefile fragment - requires GNU make
2#
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-exception
6
7S := $(srcdir)/string
8B := build/string
9
10ifeq ($(ARCH),)
11all-string check-string install-string clean-string:
12	@echo "*** Please set ARCH in config.mk. ***"
13	@exit 1
14else
15
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/strncmp
40
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.a
69	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -static -o $@ $^ $(LDLIBS)
70
71build/include/%.h: $(S)/include/%.h
72	cp $< $@
73
74build/bin/%.sh: $(S)/test/%.sh
75	cp $< $@
76
77check-string: $(string-tools)
78	$(EMULATOR) build/bin/test/memcpy
79	$(EMULATOR) build/bin/test/memmove
80	$(EMULATOR) build/bin/test/memset
81	$(EMULATOR) build/bin/test/memchr
82	$(EMULATOR) build/bin/test/memcmp
83	$(EMULATOR) build/bin/test/strcpy
84	$(EMULATOR) build/bin/test/stpcpy
85	$(EMULATOR) build/bin/test/strcmp
86	$(EMULATOR) build/bin/test/strchr
87	$(EMULATOR) build/bin/test/strrchr
88	$(EMULATOR) build/bin/test/strchrnul
89	$(EMULATOR) build/bin/test/strlen
90	$(EMULATOR) build/bin/test/strnlen
91	$(EMULATOR) build/bin/test/strncmp
92
93install-string: \
94 $(string-libs:build/lib/%=$(DESTDIR)$(libdir)/%) \
95 $(string-includes:build/include/%=$(DESTDIR)$(includedir)/%)
96
97clean-string:
98	rm -f $(string-files)
99endif
100
101.PHONY: all-string check-string install-string clean-string
102