| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | |
| 3 | include ../../../scripts/Makefile.include |
| 4 | include ../../../scripts/utilities.mak |
| 5 | |
| 6 | INSTALL ?= install |
| 7 | RM ?= rm -f |
| 8 | RMDIR ?= rmdir --ignore-fail-on-non-empty |
| 9 | |
| 10 | prefix ?= /usr/local |
| 11 | mandir ?= $(prefix)/man |
| 12 | man2dir = $(mandir)/man2 |
| 13 | man7dir = $(mandir)/man7 |
| 14 | |
| 15 | SYSCALL_RST = bpf-syscall.rst |
| 16 | MAN2_RST = $(SYSCALL_RST) |
| 17 | |
| 18 | HELPERS_RST = bpf-helpers.rst |
| 19 | MAN7_RST = $(HELPERS_RST) |
| 20 | |
| 21 | _DOC_MAN2 = $(patsubst %.rst,%.2,$(MAN2_RST)) |
| 22 | DOC_MAN2 = $(addprefix $(OUTPUT),$(_DOC_MAN2)) |
| 23 | |
| 24 | _DOC_MAN7 = $(patsubst %.rst,%.7,$(MAN7_RST)) |
| 25 | DOC_MAN7 = $(addprefix $(OUTPUT),$(_DOC_MAN7)) |
| 26 | |
| 27 | DOCTARGETS := helpers syscall |
| 28 | |
| 29 | docs: $(DOCTARGETS) |
| 30 | syscall: man2 |
| 31 | helpers: man7 |
| 32 | man2: $(DOC_MAN2) |
| 33 | man7: $(DOC_MAN7) |
| 34 | |
| 35 | RST2MAN_DEP := $(shell command -v rst2man 2>/dev/null) |
| 36 | |
| 37 | # Configure make rules for the man page bpf-$1.$2. |
| 38 | # $1 - target for scripts/bpf_doc.py |
| 39 | # $2 - man page section to generate the troff file |
| 40 | define DOCS_RULES = |
| 41 | $(OUTPUT)bpf-$1.rst: ../../../../include/uapi/linux/bpf.h |
| 42 | $$(QUIET_GEN)../../../../scripts/bpf_doc.py $1 \ |
| 43 | --filename $$< > $$@ |
| 44 | |
| 45 | $(OUTPUT)%.$2: $(OUTPUT)%.rst |
| 46 | ifndef RST2MAN_DEP |
| 47 | $$(error "rst2man not found, but required to generate man pages") |
| 48 | endif |
| 49 | $$(QUIET_GEN)rst2man --exit-status=1 $$< > [email protected] |
| 50 | $$(QUIET_GEN)mv [email protected] $$@ |
| 51 | |
| 52 | docs-clean-$1: |
| 53 | $$(call QUIET_CLEAN, eBPF_$1-manpage) |
| 54 | $(Q)$(RM) $$(DOC_MAN$2) $(OUTPUT)bpf-$1.rst |
| 55 | |
| 56 | docs-install-$1: docs |
| 57 | $$(call QUIET_INSTALL, eBPF_$1-manpage) |
| 58 | $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$$(man$2dir) |
| 59 | $(Q)$(INSTALL) -m 644 $$(DOC_MAN$2) $(DESTDIR)$$(man$2dir) |
| 60 | |
| 61 | docs-uninstall-$1: |
| 62 | $$(call QUIET_UNINST, eBPF_$1-manpage) |
| 63 | $(Q)$(RM) $$(addprefix $(DESTDIR)$$(man$2dir)/,$$(_DOC_MAN$2)) |
| 64 | $(Q)$(RMDIR) $(DESTDIR)$$(man$2dir) |
| 65 | |
| 66 | .PHONY: $1 docs-clean-$1 docs-install-$1 docs-uninstall-$1 |
| 67 | endef |
| 68 | |
| 69 | # Create the make targets to generate manual pages by name and section |
| 70 | $(eval $(call DOCS_RULES,helpers,7)) |
| 71 | $(eval $(call DOCS_RULES,syscall,2)) |
| 72 | |
| 73 | docs-clean: $(foreach doctarget,$(DOCTARGETS), docs-clean-$(doctarget)) |
| 74 | docs-install: $(foreach doctarget,$(DOCTARGETS), docs-install-$(doctarget)) |
| 75 | docs-uninstall: $(foreach doctarget,$(DOCTARGETS), docs-uninstall-$(doctarget)) |
| 76 | |
| 77 | .PHONY: docs docs-clean docs-install docs-uninstall man2 man7 |