186878f14SJakub Kicinski# SPDX-License-Identifier: GPL-2.0 286878f14SJakub Kicinski 3e5ad1d98SJan Stancekinclude ../../scripts/Makefile.arch 4e5ad1d98SJan Stancek 5e5ad1d98SJan StancekINSTALL ?= install 6e5ad1d98SJan Stancekprefix ?= /usr 7e5ad1d98SJan Stancekifeq ($(LP64), 1) 8e5ad1d98SJan Stancek libdir_relative = lib64 9e5ad1d98SJan Stancekelse 10e5ad1d98SJan Stancek libdir_relative = lib 11e5ad1d98SJan Stancekendif 12e5ad1d98SJan Stanceklibdir ?= $(prefix)/$(libdir_relative) 13e5ad1d98SJan Stancekincludedir ?= $(prefix)/include 14e5ad1d98SJan Stancek 15362d051cSDonald HunterSPECDIR=../../../Documentation/netlink/specs 16362d051cSDonald Hunter 17308b7deeSHangbin LiuSUBDIRS = lib generated samples ynltool tests 1886878f14SJakub Kicinski 1907c3cc51SJakub Kicinskiall: $(SUBDIRS) libynl.a 2086878f14SJakub Kicinski 21b02d2290SJakub Kicinskiynltool: | lib generated libynl.a 229cf9b570SJakub Kicinskisamples: | lib generated 2307c3cc51SJakub Kicinskilibynl.a: | lib generated 2407c3cc51SJakub Kicinski @echo -e "\tAR $@" 2507c3cc51SJakub Kicinski @ar rcs $@ lib/ynl.o generated/*-user.o 269cf9b570SJakub Kicinski 2786878f14SJakub Kicinski$(SUBDIRS): 2886878f14SJakub Kicinski @if [ -f "$@/Makefile" ] ; then \ 2986878f14SJakub Kicinski $(MAKE) -C $@ ; \ 3086878f14SJakub Kicinski fi 3186878f14SJakub Kicinski 324e887471SJakub Kicinskiclean distclean: 3386878f14SJakub Kicinski @for dir in $(SUBDIRS) ; do \ 3486878f14SJakub Kicinski if [ -f "$$dir/Makefile" ] ; then \ 3586878f14SJakub Kicinski $(MAKE) -C $$dir $@; \ 3686878f14SJakub Kicinski fi \ 3786878f14SJakub Kicinski done 3807c3cc51SJakub Kicinski rm -f libynl.a 39ab88c2b3SJan Stancek rm -rf pyynl/__pycache__ 40ab88c2b3SJan Stancek rm -rf pyynl/lib/__pycache__ 41e5ad1d98SJan Stancek rm -rf pyynl.egg-info 42e5ad1d98SJan Stancek rm -rf build 4386878f14SJakub Kicinski 44*a917cd0aSMichel Lindinstall: libynl.a lib/*.h ynltool 45e5ad1d98SJan Stancek @echo -e "\tINSTALL libynl.a" 46e5ad1d98SJan Stancek @$(INSTALL) -d $(DESTDIR)$(libdir) 47e5ad1d98SJan Stancek @$(INSTALL) -m 0644 libynl.a $(DESTDIR)$(libdir)/libynl.a 48e5ad1d98SJan Stancek @echo -e "\tINSTALL libynl headers" 49e5ad1d98SJan Stancek @$(INSTALL) -d $(DESTDIR)$(includedir)/ynl 50e5ad1d98SJan Stancek @$(INSTALL) -m 0644 lib/*.h $(DESTDIR)$(includedir)/ynl/ 51e5ad1d98SJan Stancek @echo -e "\tINSTALL pyynl" 52e5ad1d98SJan Stancek @pip install --prefix=$(DESTDIR)$(prefix) . 53e5ad1d98SJan Stancek @make -C generated install 54*a917cd0aSMichel Lind @make -C ynltool install 55e5ad1d98SJan Stancek 56308b7deeSHangbin Liurun_tests: 57308b7deeSHangbin Liu @$(MAKE) -C tests run_tests 58308b7deeSHangbin Liu 59129dc607SDonald Hunterlint: 60129dc607SDonald Hunter yamllint $(SPECDIR) 61362d051cSDonald Hunter 62362d051cSDonald Hunterschema_check: 63362d051cSDonald Hunter @N=1; \ 64362d051cSDonald Hunter for spec in $(SPECDIR)/*.yaml ; do \ 65362d051cSDonald Hunter NAME=$$(basename $$spec) ; \ 66362d051cSDonald Hunter OUTPUT=$$(./pyynl/cli.py --spec $$spec --validate) ; \ 67362d051cSDonald Hunter if [ $$? -eq 0 ] ; then \ 68362d051cSDonald Hunter echo "ok $$N $$NAME schema validation" ; \ 69362d051cSDonald Hunter else \ 70362d051cSDonald Hunter echo "not ok $$N $$NAME schema validation" ; \ 71362d051cSDonald Hunter echo "$$OUTPUT" ; \ 72362d051cSDonald Hunter echo ; \ 73362d051cSDonald Hunter fi ; \ 74362d051cSDonald Hunter N=$$((N+1)) ; \ 75362d051cSDonald Hunter done 76362d051cSDonald Hunter 77129dc607SDonald Hunter.PHONY: all clean distclean install run_tests lint schema_check $(SUBDIRS) 78