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