1# SPDX-License-Identifier: GPL-2.0 2 3include ../../scripts/Makefile.include 4include ../../scripts/Makefile.arch 5 6INSTALL ?= install 7prefix ?= /usr 8ifeq ($(LP64), 1) 9 libdir_relative = lib64 10else 11 libdir_relative = lib 12endif 13libdir ?= $(prefix)/$(libdir_relative) 14includedir ?= $(prefix)/include 15 16SPECDIR=../../../Documentation/netlink/specs 17 18SUBDIRS = lib generated ynltool tests 19 20all: $(SUBDIRS) libynl.a 21 22tests: | lib generated libynl.a 23ynltool: | lib generated libynl.a 24libynl.a: | lib generated 25 @echo -e "\tAR $@" 26 @$(AR) rcs $@ lib/ynl.o generated/*-user.o 27 28$(SUBDIRS): 29 @if [ -f "$@/Makefile" ] ; then \ 30 $(MAKE) -C $@ ; \ 31 fi 32 33clean distclean: 34 @for dir in $(SUBDIRS) ; do \ 35 if [ -f "$$dir/Makefile" ] ; then \ 36 $(MAKE) -C $$dir $@; \ 37 fi \ 38 done 39 rm -f libynl.a 40 rm -rf pyynl/__pycache__ 41 rm -rf pyynl/lib/__pycache__ 42 rm -rf pyynl.egg-info 43 rm -rf build 44 45install: libynl.a lib/*.h ynltool 46 @echo -e "\tINSTALL libynl.a" 47 @$(INSTALL) -d $(DESTDIR)$(libdir) 48 @$(INSTALL) -m 0644 libynl.a $(DESTDIR)$(libdir)/libynl.a 49 @echo -e "\tINSTALL libynl headers" 50 @$(INSTALL) -d $(DESTDIR)$(includedir)/ynl 51 @$(INSTALL) -m 0644 lib/*.h $(DESTDIR)$(includedir)/ynl/ 52 @echo -e "\tINSTALL pyynl" 53 @pip install --prefix=$(DESTDIR)$(prefix) . 54 @make -C generated install 55 @make -C ynltool install 56 57run_tests: 58 @$(MAKE) -C tests run_tests 59 60lint: 61 yamllint $(SPECDIR) 62 63schema_check: 64 @N=1; \ 65 for spec in $(SPECDIR)/*.yaml ; do \ 66 NAME=$$(basename $$spec) ; \ 67 OUTPUT=$$(./pyynl/cli.py --spec $$spec --validate) ; \ 68 if [ $$? -eq 0 ] ; then \ 69 echo "ok $$N $$NAME schema validation" ; \ 70 else \ 71 echo "not ok $$N $$NAME schema validation" ; \ 72 echo "$$OUTPUT" ; \ 73 echo ; \ 74 fi ; \ 75 N=$$((N+1)) ; \ 76 done 77 78.PHONY: all clean distclean install run_tests lint schema_check $(SUBDIRS) 79