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