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