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 98