xref: /linux-6.15/tools/net/ynl/generated/Makefile (revision 1b038af9)
186878f14SJakub Kicinski# SPDX-License-Identifier: GPL-2.0
286878f14SJakub Kicinski
386878f14SJakub KicinskiCC=gcc
405a318b4SJan StancekCFLAGS += -std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \
5f0ec58d5SJakub Kicinski	-I../lib/ -idirafter $(UAPI_PATH)
686878f14SJakub Kicinskiifeq ("$(DEBUG)","1")
786878f14SJakub Kicinski  CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
886878f14SJakub Kicinskiendif
986878f14SJakub Kicinski
10*1b038af9SJan StancekINSTALL     ?= install
11*1b038af9SJan Stancekprefix      ?= /usr
12*1b038af9SJan Stancekdatarootdir ?= $(prefix)/share
13*1b038af9SJan Stancekdocdir      ?= $(datarootdir)/doc
14*1b038af9SJan Stancekincludedir  ?= $(prefix)/include
15*1b038af9SJan Stancek
16f0ec58d5SJakub Kicinskiinclude ../Makefile.deps
17f0ec58d5SJakub Kicinski
182d7be507SJakub KicinskiYNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \
192d7be507SJakub Kicinski	--exclude-op stats-get
202d7be507SJakub Kicinski
21ab88c2b3SJan StancekTOOL:=../pyynl/ynl_gen_c.py
22*1b038af9SJan StancekTOOL_RST:=../pyynl/ynl_gen_rst.py
2386878f14SJakub Kicinski
24*1b038af9SJan StancekSPECS_DIR:=../../../../Documentation/netlink/specs
25d2866539SJakub KicinskiGENS_PATHS=$(shell grep -nrI --files-without-match \
26d2866539SJakub Kicinski		'protocol: netlink' \
27*1b038af9SJan Stancek		$(SPECS_DIR))
28*1b038af9SJan StancekGENS=$(patsubst $(SPECS_DIR)/%.yaml,%,${GENS_PATHS})
2986878f14SJakub KicinskiSRCS=$(patsubst %,%-user.c,${GENS})
3086878f14SJakub KicinskiHDRS=$(patsubst %,%-user.h,${GENS})
3186878f14SJakub KicinskiOBJS=$(patsubst %,%-user.o,${GENS})
3286878f14SJakub Kicinski
33*1b038af9SJan StancekSPECS_PATHS=$(wildcard $(SPECS_DIR)/*.yaml)
34*1b038af9SJan StancekSPECS=$(patsubst $(SPECS_DIR)/%.yaml,%,${SPECS_PATHS})
35*1b038af9SJan StancekRSTS=$(patsubst %,%.rst,${SPECS})
36*1b038af9SJan Stancek
37*1b038af9SJan Stancekall: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI) $(RSTS)
3886878f14SJakub Kicinski
3986878f14SJakub Kicinskiprotos.a: $(OBJS)
4086878f14SJakub Kicinski	@echo -e "\tAR $@"
4186878f14SJakub Kicinski	@ar rcs $@ $(OBJS)
4286878f14SJakub Kicinski
43*1b038af9SJan Stancek%-user.h: $(SPECS_DIR)/%.yaml $(TOOL)
4486878f14SJakub Kicinski	@echo -e "\tGEN $@"
45cb7fb0aaSJakub Kicinski	@$(TOOL) --mode user --header --spec $< -o $@ $(YNL_GEN_ARG_$*)
4686878f14SJakub Kicinski
47*1b038af9SJan Stancek%-user.c: $(SPECS_DIR)/%.yaml $(TOOL)
4886878f14SJakub Kicinski	@echo -e "\tGEN $@"
49cb7fb0aaSJakub Kicinski	@$(TOOL) --mode user --source --spec $< -o $@ $(YNL_GEN_ARG_$*)
5086878f14SJakub Kicinski
5186878f14SJakub Kicinski%-user.o: %-user.c %-user.h
5286878f14SJakub Kicinski	@echo -e "\tCC $@"
53f0ec58d5SJakub Kicinski	@$(COMPILE.c) $(CFLAGS_$*) -o $@ $<
5486878f14SJakub Kicinski
55*1b038af9SJan Stancek%.rst: $(SPECS_DIR)/%.yaml $(TOOL_RST)
56*1b038af9SJan Stancek	@echo -e "\tGEN_RST $@"
57*1b038af9SJan Stancek	@$(TOOL_RST) -o $@ -i $<
58*1b038af9SJan Stancek
5986878f14SJakub Kicinskiclean:
6086878f14SJakub Kicinski	rm -f *.o
6186878f14SJakub Kicinski
624e887471SJakub Kicinskidistclean: clean
63*1b038af9SJan Stancek	rm -f *.c *.h *.a *.rst
6486878f14SJakub Kicinski
6586878f14SJakub Kicinskiregen:
6686878f14SJakub Kicinski	@../ynl-regen.sh
6786878f14SJakub Kicinski
68*1b038af9SJan Stancekinstall-headers: $(HDRS)
69*1b038af9SJan Stancek	@echo -e "\tINSTALL generated headers"
70*1b038af9SJan Stancek	@$(INSTALL) -d $(DESTDIR)$(includedir)/ynl
71*1b038af9SJan Stancek	@$(INSTALL) -m 0644 *.h $(DESTDIR)$(includedir)/ynl/
72*1b038af9SJan Stancek
73*1b038af9SJan Stancekinstall-rsts: $(RSTS)
74*1b038af9SJan Stancek	@echo -e "\tINSTALL generated docs"
75*1b038af9SJan Stancek	@$(INSTALL) -d $(DESTDIR)$(docdir)/ynl
76*1b038af9SJan Stancek	@$(INSTALL) -m 0644 $(RSTS) $(DESTDIR)$(docdir)/ynl/
77*1b038af9SJan Stancek
78*1b038af9SJan Stancekinstall-specs:
79*1b038af9SJan Stancek	@echo -e "\tINSTALL specs"
80*1b038af9SJan Stancek	@$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl
81*1b038af9SJan Stancek	@$(INSTALL) -m 0644 ../../../../Documentation/netlink/*.yaml $(DESTDIR)$(datarootdir)/ynl/
82*1b038af9SJan Stancek	@$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl/specs
83*1b038af9SJan Stancek	@$(INSTALL) -m 0644 $(SPECS_DIR)/*.yaml $(DESTDIR)$(datarootdir)/ynl/specs/
84*1b038af9SJan Stancek
85*1b038af9SJan Stancekinstall: install-headers install-rsts install-specs
86*1b038af9SJan Stancek
87*1b038af9SJan Stancek.PHONY: all clean distclean regen install install-headers install-rsts install-specs
8886878f14SJakub Kicinski.DEFAULT_GOAL: all
89