| # SPDX-License-Identifier: GPL-2.0 | |
| # Makefile for YNL tests | |
| include ../Makefile.deps | |
| CC=gcc | |
| CFLAGS += -std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \ | |
| -I../lib/ -I../generated/ -I../../../testing/selftests/ \ | |
| -idirafter $(UAPI_PATH) | |
| ifneq ("$(NDEBUG)","1") | |
| CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan | |
| endif | |
| LDLIBS=../lib/ynl.a ../generated/protos.a | |
| TEST_PROGS := \ | |
| devlink.sh \ | |
| ethtool.sh \ | |
| rt-addr.sh \ | |
| rt-route.sh \ | |
| test_ynl_cli.sh \ | |
| test_ynl_ethtool.sh \ | |
| # end of TEST_PROGS | |
| TEST_GEN_PROGS := \ | |
| netdev \ | |
| ovs \ | |
| rt-link \ | |
| tc \ | |
| # end of TEST_GEN_PROGS | |
| TEST_GEN_FILES := \ | |
| devlink \ | |
| ethtool \ | |
| rt-addr \ | |
| rt-route \ | |
| # end of TEST_GEN_FILES | |
| TEST_FILES := \ | |
| ethtool.py \ | |
| ynl_nsim_lib.sh \ | |
| # end of TEST_FILES | |
| CFLAGS_netdev:=$(CFLAGS_netdev) $(CFLAGS_rt-link) | |
| CFLAGS_ovs:=$(CFLAGS_ovs_datapath) | |
| include $(wildcard *.d) | |
| INSTALL_PATH ?= $(DESTDIR)/usr/share/kselftest | |
| all: $(TEST_GEN_PROGS) $(TEST_GEN_FILES) | |
| ../lib/ynl.a: | |
| @$(MAKE) -C ../lib | |
| ../generated/protos.a: | |
| @$(MAKE) -C ../generated | |
| $(TEST_GEN_PROGS) $(TEST_GEN_FILES): %: %.c ../lib/ynl.a ../generated/protos.a | |
| @echo -e '\tCC test $@' | |
| @$(COMPILE.c) $(CFLAGS_$@) $@.c -o $@.o | |
| @$(LINK.c) $@.o -o $@ $(LDLIBS) | |
| run_tests: | |
| @for test in $(TEST_PROGS); do \ | |
| ./$$test; \ | |
| done | |
| install: $(TEST_GEN_PROGS) $(TEST_GEN_FILES) | |
| @mkdir -p $(INSTALL_PATH)/ynl | |
| @cp ../../../testing/selftests/kselftest/ktap_helpers.sh $(INSTALL_PATH)/ | |
| @for test in $(TEST_PROGS); do \ | |
| name=$$(basename $$test); \ | |
| sed -e 's|^ynl=.*|ynl="ynl"|' \ | |
| -e 's|^ynl_ethtool=.*|ynl_ethtool="ynl-ethtool"|' \ | |
| -e 's|KSELFTEST_KTAP_HELPERS=.*|KSELFTEST_KTAP_HELPERS="$(INSTALL_PATH)/ktap_helpers.sh"|' \ | |
| $$test > $(INSTALL_PATH)/ynl/$$name; \ | |
| chmod +x $(INSTALL_PATH)/ynl/$$name; \ | |
| done | |
| @for file in $(TEST_FILES); do \ | |
| cp $$file $(INSTALL_PATH)/ynl/$$file; \ | |
| done | |
| @for bin in $(TEST_GEN_PROGS) $(TEST_GEN_FILES); do \ | |
| cp $$bin $(INSTALL_PATH)/ynl/$$bin; \ | |
| done | |
| @for test in $(TEST_PROGS) $(TEST_GEN_PROGS); do \ | |
| echo "ynl:$$test"; \ | |
| done > $(INSTALL_PATH)/kselftest-list.txt | |
| clean: | |
| rm -f *.o *.d *~ | |
| distclean: clean | |
| rm -f $(TEST_GEN_PROGS) $(TEST_GEN_FILES) | |
| .PHONY: all install clean distclean run_tests | |
| .DEFAULT_GOAL=all |