| 1 |
|
| 2 |
|
| 3 |
|
| 4 | include ../Makefile.deps
|
| 5 |
|
| 6 | CC=gcc
|
| 7 | CFLAGS += -std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \
|
| 8 | -I../lib/ -I../generated/ -I../../../testing/selftests/ \
|
| 9 | -idirafter $(UAPI_PATH)
|
| 10 | ifneq ("$(NDEBUG)","1")
|
| 11 | CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
|
| 12 | endif
|
| 13 |
|
| 14 | LDLIBS=../lib/ynl.a ../generated/protos.a
|
| 15 |
|
| 16 | TEST_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 |
|
| 24 |
|
| 25 | TEST_GEN_PROGS := \
|
| 26 | netdev \
|
| 27 | ovs \
|
| 28 | rt-link \
|
| 29 | tc \
|
| 30 |
|
| 31 |
|
| 32 | TEST_GEN_FILES := \
|
| 33 | devlink \
|
| 34 | ethtool \
|
| 35 | rt-addr \
|
| 36 | rt-route \
|
| 37 |
|
| 38 |
|
| 39 | TEST_FILES := \
|
| 40 | ethtool.py \
|
| 41 | ynl_nsim_lib.sh \
|
| 42 |
|
| 43 |
|
| 44 | CFLAGS_netdev:=$(CFLAGS_netdev) $(CFLAGS_rt-link)
|
| 45 | CFLAGS_ovs:=$(CFLAGS_ovs_datapath)
|
| 46 |
|
| 47 | include $(wildcard *.d)
|
| 48 |
|
| 49 | INSTALL_PATH ?= $(DESTDIR)/usr/share/kselftest
|
| 50 |
|
| 51 | all: $(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 |
|
| 64 | run_tests:
|
| 65 | @for test in $(TEST_PROGS); do \
|
| 66 | ./$$test; \
|
| 67 | done
|
| 68 |
|
| 69 | install: $(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 |
|
| 90 | clean:
|
| 91 | rm -f *.o *.d *~
|
| 92 |
|
| 93 | distclean: clean
|
| 94 | rm -f $(TEST_GEN_PROGS) $(TEST_GEN_FILES)
|
| 95 |
|
| 96 | .PHONY: all install clean distclean run_tests
|
| 97 | .DEFAULT_GOAL=all
|