1# Makefile fragment - requires GNU make
2#
3# Copyright (c) 2019-2020, Arm Limited.
4# SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
5
6S := $(srcdir)/networking
7B := build/networking
8
9ifeq ($(ARCH),)
10all-networking check-networking install-networking clean-networking:
11	@echo "*** Please set ARCH in config.mk. ***"
12	@exit 1
13else
14
15networking-lib-srcs := $(wildcard $(S)/*.[cS]) $(wildcard $(S)/$(ARCH)/*.[cS])
16networking-test-srcs := $(wildcard $(S)/test/*.c)
17
18networking-includes := $(patsubst $(S)/%,build/%,$(wildcard $(S)/include/*.h))
19
20networking-libs := \
21	build/lib/libnetworking.so \
22	build/lib/libnetworking.a \
23
24networking-tools := \
25	build/bin/test/chksum
26
27networking-lib-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(networking-lib-srcs)))
28networking-test-objs := $(patsubst $(S)/%,$(B)/%.o,$(basename $(networking-test-srcs)))
29
30networking-objs := \
31	$(networking-lib-objs) \
32	$(networking-lib-objs:%.o=%.os) \
33	$(networking-test-objs) \
34
35networking-files := \
36	$(networking-objs) \
37	$(networking-libs) \
38	$(networking-tools) \
39	$(networking-includes) \
40
41all-networking: $(networking-libs) $(networking-tools) $(networking-includes)
42
43$(networking-objs): $(networking-includes)
44$(networking-objs): CFLAGS_ALL += $(networking-cflags)
45
46build/lib/libnetworking.so: $(networking-lib-objs:%.o=%.os)
47	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -shared -o $@ $^
48
49build/lib/libnetworkinglib.a: $(networking-lib-objs)
50	rm -f $@
51	$(AR) rc $@ $^
52	$(RANLIB) $@
53
54build/bin/test/%: $(B)/test/%.o build/lib/libnetworkinglib.a
55	$(CC) $(CFLAGS_ALL) $(LDFLAGS) -static -o $@ $^ $(LDLIBS)
56
57build/include/%.h: $(S)/include/%.h
58	cp $< $@
59
60build/bin/%.sh: $(S)/test/%.sh
61	cp $< $@
62
63check-networking: $(networking-tools)
64	$(EMULATOR) build/bin/test/chksum -i simple
65	$(EMULATOR) build/bin/test/chksum -i scalar
66	$(EMULATOR) build/bin/test/chksum -i simd || true # simd is not always available
67
68install-networking: \
69 $(networking-libs:build/lib/%=$(DESTDIR)$(libdir)/%) \
70 $(networking-includes:build/include/%=$(DESTDIR)$(includedir)/%)
71
72clean-networking:
73	rm -f $(networking-files)
74endif
75
76.PHONY: all-networking check-networking install-networking clean-networking
77