xref: /linux/tools/net/ynl/tests/Makefile (revision 77de28cd7cf172e782319a144bf64e693794d78b)
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 := ynl_nsim_lib.sh
40
41CFLAGS_netdev:=$(CFLAGS_netdev) $(CFLAGS_rt-link)
42CFLAGS_ovs:=$(CFLAGS_ovs_datapath)
43
44include $(wildcard *.d)
45
46INSTALL_PATH ?= $(DESTDIR)/usr/share/kselftest
47
48all: $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
49
50../lib/ynl.a:
51	@$(MAKE) -C ../lib
52
53 ../generated/protos.a:
54	@$(MAKE) -C ../generated
55
56$(TEST_GEN_PROGS) $(TEST_GEN_FILES): %: %.c ../lib/ynl.a ../generated/protos.a
57	@echo -e '\tCC test $@'
58	@$(COMPILE.c) $(CFLAGS_$@) $@.c -o $@.o
59	@$(LINK.c) $@.o -o $@  $(LDLIBS)
60
61run_tests:
62	@for test in $(TEST_PROGS); do \
63		./$$test; \
64	done
65
66install: $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
67	@mkdir -p $(INSTALL_PATH)/ynl
68	@cp ../../../testing/selftests/kselftest/ktap_helpers.sh $(INSTALL_PATH)/
69	@for test in $(TEST_PROGS); do \
70		name=$$(basename $$test); \
71		sed -e 's|^ynl=.*|ynl="ynl"|' \
72		    -e 's|^ynl_ethtool=.*|ynl_ethtool="ynl-ethtool"|' \
73		    -e 's|KSELFTEST_KTAP_HELPERS=.*|KSELFTEST_KTAP_HELPERS="$(INSTALL_PATH)/ktap_helpers.sh"|' \
74		    $$test > $(INSTALL_PATH)/ynl/$$name; \
75		chmod +x $(INSTALL_PATH)/ynl/$$name; \
76	done
77	@for file in $(TEST_FILES); do \
78		cp $$file $(INSTALL_PATH)/ynl/$$file; \
79	done
80	@for bin in $(TEST_GEN_PROGS) $(TEST_GEN_FILES); do \
81		cp $$bin $(INSTALL_PATH)/ynl/$$bin; \
82	done
83	@for test in $(TEST_PROGS) $(TEST_GEN_PROGS); do \
84		echo "ynl:$$test"; \
85	done > $(INSTALL_PATH)/kselftest-list.txt
86
87clean:
88	rm -f *.o *.d *~
89
90distclean: clean
91	rm -f $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
92
93.PHONY: all install clean distclean run_tests
94.DEFAULT_GOAL=all
95