Message ID | 0271f19ad8f5453d2fea5b0f05648b9c2667d771.1733755068.git.jstancek@redhat.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | tools: ynl: add install target | expand |
On Mon, 9 Dec 2024 15:47:16 +0100 Jan Stancek wrote: > +SPECS_PATHS=$(wildcard ../../../../Documentation/netlink/specs/*.yaml) Maybe factor out: SPECS_DIR := ../../../../Documentation/netlink/specs ? It's pretty long and we repeat it all over the place. > +SPECS=$(patsubst ../../../../Documentation/netlink/specs/%.yaml,%,${SPECS_PATHS}) > +RSTS=$(patsubst %,%.rst,${SPECS}) > + > +all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI) $(RSTS) > > protos.a: $(OBJS) > @echo -e "\tAR $@" > @@ -40,8 +50,12 @@ protos.a: $(OBJS) > @echo -e "\tCC $@" > @$(COMPILE.c) $(CFLAGS_$*) -o $@ $< > > +%.rst: ../../../../Documentation/netlink/specs/%.yaml $(TOOL2) TOOL2 -> TOOL_RST ? > + @echo -e "\tGEN_RST $@" > + @$(TOOL_RST) -o $@ -i $< > + > clean: > - rm -f *.o > + rm -f *.o *.rst No strong preference but I'd count .rst as final artifacts so I'd clean them up in distclean target only, not the clean target. The distinction itself may be a local custom.. > distclean: clean > rm -f *.c *.h *.a > @@ -49,5 +63,19 @@ distclean: clean > regen: > @../ynl-regen.sh > > -.PHONY: all clean distclean regen > +install-rsts: > + @echo -e "\tINSTALL generated docs" > + @$(INSTALL) -d $(DESTDIR)$(docdir)/ynl > + @$(INSTALL) -m 0644 $(RSTS) $(DESTDIR)$(docdir)/ynl/ > + > +install-specs: > + @echo -e "\tINSTALL specs" > + @$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl > + @$(INSTALL) -m 0644 ../../../../Documentation/netlink/*.yaml $(DESTDIR)$(datarootdir)/ynl/ > + @$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl/specs > + @$(INSTALL) -m 0644 ../../../../Documentation/netlink/specs/*.yaml $(DESTDIR)$(datarootdir)/ynl/specs/ > + > +install: install-rsts install-specs > + > +.PHONY: all clean distclean regen install I think .PHONY needs install-rsts install-specs, too? > .DEFAULT_GOAL: all
diff --git a/tools/net/ynl/generated/.gitignore b/tools/net/ynl/generated/.gitignore index ade488626d26..859a6fb446e1 100644 --- a/tools/net/ynl/generated/.gitignore +++ b/tools/net/ynl/generated/.gitignore @@ -1,2 +1,3 @@ *-user.c *-user.h +*.rst diff --git a/tools/net/ynl/generated/Makefile b/tools/net/ynl/generated/Makefile index 00af721b1571..d28509ac0573 100644 --- a/tools/net/ynl/generated/Makefile +++ b/tools/net/ynl/generated/Makefile @@ -7,12 +7,18 @@ ifeq ("$(DEBUG)","1") CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan endif +INSTALL ?= install +prefix ?= /usr +datarootdir ?= $(prefix)/share +docdir ?= $(datarootdir)/doc + include ../Makefile.deps YNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \ --exclude-op stats-get TOOL:=../pyynl/ynl_gen_c.py +TOOL_RST:=../pyynl/ynl_gen_rst.py GENS_PATHS=$(shell grep -nrI --files-without-match \ 'protocol: netlink' \ @@ -22,7 +28,11 @@ SRCS=$(patsubst %,%-user.c,${GENS}) HDRS=$(patsubst %,%-user.h,${GENS}) OBJS=$(patsubst %,%-user.o,${GENS}) -all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI) +SPECS_PATHS=$(wildcard ../../../../Documentation/netlink/specs/*.yaml) +SPECS=$(patsubst ../../../../Documentation/netlink/specs/%.yaml,%,${SPECS_PATHS}) +RSTS=$(patsubst %,%.rst,${SPECS}) + +all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI) $(RSTS) protos.a: $(OBJS) @echo -e "\tAR $@" @@ -40,8 +50,12 @@ protos.a: $(OBJS) @echo -e "\tCC $@" @$(COMPILE.c) $(CFLAGS_$*) -o $@ $< +%.rst: ../../../../Documentation/netlink/specs/%.yaml $(TOOL2) + @echo -e "\tGEN_RST $@" + @$(TOOL_RST) -o $@ -i $< + clean: - rm -f *.o + rm -f *.o *.rst distclean: clean rm -f *.c *.h *.a @@ -49,5 +63,19 @@ distclean: clean regen: @../ynl-regen.sh -.PHONY: all clean distclean regen +install-rsts: + @echo -e "\tINSTALL generated docs" + @$(INSTALL) -d $(DESTDIR)$(docdir)/ynl + @$(INSTALL) -m 0644 $(RSTS) $(DESTDIR)$(docdir)/ynl/ + +install-specs: + @echo -e "\tINSTALL specs" + @$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl + @$(INSTALL) -m 0644 ../../../../Documentation/netlink/*.yaml $(DESTDIR)$(datarootdir)/ynl/ + @$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl/specs + @$(INSTALL) -m 0644 ../../../../Documentation/netlink/specs/*.yaml $(DESTDIR)$(datarootdir)/ynl/specs/ + +install: install-rsts install-specs + +.PHONY: all clean distclean regen install .DEFAULT_GOAL: all
Generate docs using ynl_gen_rst and add install target for both specs and generates rst files. Signed-off-by: Jan Stancek <jstancek@redhat.com> --- tools/net/ynl/generated/.gitignore | 1 + tools/net/ynl/generated/Makefile | 34 +++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-)