| # 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 |