xref: /linux/tools/net/ynl/Makefile (revision 0a80e38d0fe1fe7b59c1e93ad908c4148a15926a)
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