projects/linux·blob master · refs

97 lines · 2.2 KiB

1# SPDX-License-Identifier: GPL-2.0
2# Makefile for YNL tests
3
4include ../Makefile.deps
5
6CC=gcc
7CFLAGS += -std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \
8 -I../lib/ -I../generated/ -I../../../testing/selftests/ \
9 -idirafter $(UAPI_PATH)
10ifneq ("$(NDEBUG)","1")
11 CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
12endif
13
14LDLIBS=../lib/ynl.a ../generated/protos.a
15
16TEST_PROGS := \
17 devlink.sh \
18 ethtool.sh \
19 rt-addr.sh \
20 rt-route.sh \
21 test_ynl_cli.sh \
22 test_ynl_ethtool.sh \
23# end of TEST_PROGS
24
25TEST_GEN_PROGS := \
26 netdev \
27 ovs \
28 rt-link \
29 tc \
30# end of TEST_GEN_PROGS
31
32TEST_GEN_FILES := \
33 devlink \
34 ethtool \
35 rt-addr \
36 rt-route \
37# end of TEST_GEN_FILES
38
39TEST_FILES := \
40 ethtool.py \
41 ynl_nsim_lib.sh \
42# end of TEST_FILES
43
44CFLAGS_netdev:=$(CFLAGS_netdev) $(CFLAGS_rt-link)
45CFLAGS_ovs:=$(CFLAGS_ovs_datapath)
46
47include $(wildcard *.d)
48
49INSTALL_PATH ?= $(DESTDIR)/usr/share/kselftest
50
51all: $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
52
53../lib/ynl.a:
54 @$(MAKE) -C ../lib
55
56../generated/protos.a:
57 @$(MAKE) -C ../generated
58
59$(TEST_GEN_PROGS) $(TEST_GEN_FILES): %: %.c ../lib/ynl.a ../generated/protos.a
60 @echo -e '\tCC test $@'
61 @$(COMPILE.c) $(CFLAGS_$@) $@.c -o $@.o
62 @$(LINK.c) $@.o -o $@ $(LDLIBS)
63
64run_tests:
65 @for test in $(TEST_PROGS); do \
66 ./$$test; \
67 done
68
69install: $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
70 @mkdir -p $(INSTALL_PATH)/ynl
71 @cp ../../../testing/selftests/kselftest/ktap_helpers.sh $(INSTALL_PATH)/
72 @for test in $(TEST_PROGS); do \
73 name=$$(basename $$test); \
74 sed -e 's|^ynl=.*|ynl="ynl"|' \
75 -e 's|^ynl_ethtool=.*|ynl_ethtool="ynl-ethtool"|' \
76 -e 's|KSELFTEST_KTAP_HELPERS=.*|KSELFTEST_KTAP_HELPERS="$(INSTALL_PATH)/ktap_helpers.sh"|' \
77 $$test > $(INSTALL_PATH)/ynl/$$name; \
78 chmod +x $(INSTALL_PATH)/ynl/$$name; \
79 done
80 @for file in $(TEST_FILES); do \
81 cp $$file $(INSTALL_PATH)/ynl/$$file; \
82 done
83 @for bin in $(TEST_GEN_PROGS) $(TEST_GEN_FILES); do \
84 cp $$bin $(INSTALL_PATH)/ynl/$$bin; \
85 done
86 @for test in $(TEST_PROGS) $(TEST_GEN_PROGS); do \
87 echo "ynl:$$test"; \
88 done > $(INSTALL_PATH)/kselftest-list.txt
89
90clean:
91 rm -f *.o *.d *~
92
93distclean: clean
94 rm -f $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
95
96.PHONY: all install clean distclean run_tests
97.DEFAULT_GOAL=all