xref: /linux/tools/net/ynl/tests/Makefile (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1308b7deeSHangbin Liu# SPDX-License-Identifier: GPL-2.0
2308b7deeSHangbin Liu# Makefile for YNL tests
3308b7deeSHangbin Liu
4e0aa0c61SJakub Kicinskiinclude ../Makefile.deps
5e0aa0c61SJakub Kicinski
6e0aa0c61SJakub KicinskiCC=gcc
7e0aa0c61SJakub KicinskiCFLAGS += -std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \
8e0aa0c61SJakub Kicinski	-I../lib/ -I../generated/ -I../../../testing/selftests/ \
9e0aa0c61SJakub Kicinski	-idirafter $(UAPI_PATH)
10e0aa0c61SJakub Kicinskiifneq ("$(NDEBUG)","1")
11e0aa0c61SJakub Kicinski  CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
12e0aa0c61SJakub Kicinskiendif
13e0aa0c61SJakub Kicinski
14e0aa0c61SJakub KicinskiLDLIBS=../lib/ynl.a ../generated/protos.a
15e0aa0c61SJakub Kicinski
16d86670b8SJakub KicinskiTEST_PROGS := \
17db20b374SJakub Kicinski	devlink.sh \
181419fbf5SJakub Kicinski	ethtool.sh \
19e7a39b8fSJakub Kicinski	rt-addr.sh \
20aa234faaSJakub Kicinski	rt-route.sh \
21308b7deeSHangbin Liu	test_ynl_cli.sh \
22308b7deeSHangbin Liu	test_ynl_ethtool.sh \
23d86670b8SJakub Kicinski# end of TEST_PROGS
24308b7deeSHangbin Liu
25285804d6SJakub KicinskiTEST_GEN_PROGS := \
26285804d6SJakub Kicinski	netdev \
277e3effbcSJakub Kicinski	ovs \
285c320678SJakub Kicinski	rt-link \
296cf8fb47SJakub Kicinski	tc \
30285804d6SJakub Kicinski# end of TEST_GEN_PROGS
31e0aa0c61SJakub Kicinski
32db20b374SJakub KicinskiTEST_GEN_FILES := \
33285804d6SJakub Kicinski	devlink \
341419fbf5SJakub Kicinski	ethtool \
35e7a39b8fSJakub Kicinski	rt-addr \
36285804d6SJakub Kicinski	rt-route \
37aa234faaSJakub Kicinski# end of TEST_GEN_FILES
38285804d6SJakub Kicinski
39*22ef8a26SHangbin LiuTEST_FILES := \
40*22ef8a26SHangbin Liu	ethtool.py \
41*22ef8a26SHangbin Liu	ynl_nsim_lib.sh \
42*22ef8a26SHangbin Liu# end of TEST_FILES
437a95e525SJakub Kicinski
44285804d6SJakub KicinskiCFLAGS_netdev:=$(CFLAGS_netdev) $(CFLAGS_rt-link)
457e3effbcSJakub KicinskiCFLAGS_ovs:=$(CFLAGS_ovs_datapath)
46e0aa0c61SJakub Kicinski
47e0aa0c61SJakub Kicinskiinclude $(wildcard *.d)
48e0aa0c61SJakub Kicinski
492bfc36f5SJakub KicinskiINSTALL_PATH ?= $(DESTDIR)/usr/share/kselftest
502bfc36f5SJakub Kicinski
51aa234faaSJakub Kicinskiall: $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
52e0aa0c61SJakub Kicinski
53e0aa0c61SJakub Kicinski../lib/ynl.a:
54e0aa0c61SJakub Kicinski	@$(MAKE) -C ../lib
55e0aa0c61SJakub Kicinski
56e0aa0c61SJakub Kicinski../generated/protos.a:
57e0aa0c61SJakub Kicinski	@$(MAKE) -C ../generated
58e0aa0c61SJakub Kicinski
59aa234faaSJakub Kicinski$(TEST_GEN_PROGS) $(TEST_GEN_FILES): %: %.c ../lib/ynl.a ../generated/protos.a
60e0aa0c61SJakub Kicinski	@echo -e '\tCC test $@'
61e0aa0c61SJakub Kicinski	@$(COMPILE.c) $(CFLAGS_$@) $@.c -o $@.o
62e0aa0c61SJakub Kicinski	@$(LINK.c) $@.o -o $@  $(LDLIBS)
63308b7deeSHangbin Liu
64308b7deeSHangbin Liurun_tests:
65d86670b8SJakub Kicinski	@for test in $(TEST_PROGS); do \
66308b7deeSHangbin Liu		./$$test; \
67308b7deeSHangbin Liu	done
68308b7deeSHangbin Liu
69aa234faaSJakub Kicinskiinstall: $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
702bfc36f5SJakub Kicinski	@mkdir -p $(INSTALL_PATH)/ynl
712bfc36f5SJakub Kicinski	@cp ../../../testing/selftests/kselftest/ktap_helpers.sh $(INSTALL_PATH)/
72d86670b8SJakub Kicinski	@for test in $(TEST_PROGS); do \
733e90e00dSJakub Kicinski		name=$$(basename $$test); \
74308b7deeSHangbin Liu		sed -e 's|^ynl=.*|ynl="ynl"|' \
75308b7deeSHangbin Liu		    -e 's|^ynl_ethtool=.*|ynl_ethtool="ynl-ethtool"|' \
762bfc36f5SJakub Kicinski		    -e 's|KSELFTEST_KTAP_HELPERS=.*|KSELFTEST_KTAP_HELPERS="$(INSTALL_PATH)/ktap_helpers.sh"|' \
772bfc36f5SJakub Kicinski		    $$test > $(INSTALL_PATH)/ynl/$$name; \
782bfc36f5SJakub Kicinski		chmod +x $(INSTALL_PATH)/ynl/$$name; \
79308b7deeSHangbin Liu	done
807a95e525SJakub Kicinski	@for file in $(TEST_FILES); do \
817a95e525SJakub Kicinski		cp $$file $(INSTALL_PATH)/ynl/$$file; \
827a95e525SJakub Kicinski	done
83aa234faaSJakub Kicinski	@for bin in $(TEST_GEN_PROGS) $(TEST_GEN_FILES); do \
84e0aa0c61SJakub Kicinski		cp $$bin $(INSTALL_PATH)/ynl/$$bin; \
85e0aa0c61SJakub Kicinski	done
86285804d6SJakub Kicinski	@for test in $(TEST_PROGS) $(TEST_GEN_PROGS); do \
8732d6fd58SJakub Kicinski		echo "ynl:$$test"; \
8832d6fd58SJakub Kicinski	done > $(INSTALL_PATH)/kselftest-list.txt
89308b7deeSHangbin Liu
90e0aa0c61SJakub Kicinskiclean:
91e0aa0c61SJakub Kicinski	rm -f *.o *.d *~
92308b7deeSHangbin Liu
93e0aa0c61SJakub Kicinskidistclean: clean
94aa234faaSJakub Kicinski	rm -f $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
95e0aa0c61SJakub Kicinski
96e0aa0c61SJakub Kicinski.PHONY: all install clean distclean run_tests
97e0aa0c61SJakub Kicinski.DEFAULT_GOAL=all
98