1*053f45beSAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0-only 2*053f45beSAndroid Build Coastguard Worker 3*053f45beSAndroid Build Coastguard Workerinclude ../../../scripts/Makefile.include 4*053f45beSAndroid Build Coastguard Workerinclude ../../../scripts/utilities.mak 5*053f45beSAndroid Build Coastguard Worker 6*053f45beSAndroid Build Coastguard WorkerINSTALL ?= install 7*053f45beSAndroid Build Coastguard WorkerRM ?= rm -f 8*053f45beSAndroid Build Coastguard WorkerRMDIR ?= rmdir --ignore-fail-on-non-empty 9*053f45beSAndroid Build Coastguard Worker 10*053f45beSAndroid Build Coastguard Workerifeq ($(V),1) 11*053f45beSAndroid Build Coastguard Worker Q = 12*053f45beSAndroid Build Coastguard Workerelse 13*053f45beSAndroid Build Coastguard Worker Q = @ 14*053f45beSAndroid Build Coastguard Workerendif 15*053f45beSAndroid Build Coastguard Worker 16*053f45beSAndroid Build Coastguard Workerprefix ?= /usr/local 17*053f45beSAndroid Build Coastguard Workermandir ?= $(prefix)/man 18*053f45beSAndroid Build Coastguard Workerman2dir = $(mandir)/man2 19*053f45beSAndroid Build Coastguard Workerman7dir = $(mandir)/man7 20*053f45beSAndroid Build Coastguard Worker 21*053f45beSAndroid Build Coastguard WorkerSYSCALL_RST = bpf-syscall.rst 22*053f45beSAndroid Build Coastguard WorkerMAN2_RST = $(SYSCALL_RST) 23*053f45beSAndroid Build Coastguard Worker 24*053f45beSAndroid Build Coastguard WorkerHELPERS_RST = bpf-helpers.rst 25*053f45beSAndroid Build Coastguard WorkerMAN7_RST = $(HELPERS_RST) 26*053f45beSAndroid Build Coastguard Worker 27*053f45beSAndroid Build Coastguard Worker_DOC_MAN2 = $(patsubst %.rst,%.2,$(MAN2_RST)) 28*053f45beSAndroid Build Coastguard WorkerDOC_MAN2 = $(addprefix $(OUTPUT),$(_DOC_MAN2)) 29*053f45beSAndroid Build Coastguard Worker 30*053f45beSAndroid Build Coastguard Worker_DOC_MAN7 = $(patsubst %.rst,%.7,$(MAN7_RST)) 31*053f45beSAndroid Build Coastguard WorkerDOC_MAN7 = $(addprefix $(OUTPUT),$(_DOC_MAN7)) 32*053f45beSAndroid Build Coastguard Worker 33*053f45beSAndroid Build Coastguard WorkerDOCTARGETS := helpers syscall 34*053f45beSAndroid Build Coastguard Worker 35*053f45beSAndroid Build Coastguard Workerdocs: $(DOCTARGETS) 36*053f45beSAndroid Build Coastguard Workersyscall: man2 37*053f45beSAndroid Build Coastguard Workerhelpers: man7 38*053f45beSAndroid Build Coastguard Workerman2: $(DOC_MAN2) 39*053f45beSAndroid Build Coastguard Workerman7: $(DOC_MAN7) 40*053f45beSAndroid Build Coastguard Worker 41*053f45beSAndroid Build Coastguard WorkerRST2MAN_DEP := $(shell command -v rst2man 2>/dev/null) 42*053f45beSAndroid Build Coastguard Worker 43*053f45beSAndroid Build Coastguard Worker# Configure make rules for the man page bpf-$1.$2. 44*053f45beSAndroid Build Coastguard Worker# $1 - target for scripts/bpf_doc.py 45*053f45beSAndroid Build Coastguard Worker# $2 - man page section to generate the troff file 46*053f45beSAndroid Build Coastguard Workerdefine DOCS_RULES = 47*053f45beSAndroid Build Coastguard Worker$(OUTPUT)bpf-$1.rst: ../../../../include/uapi/linux/bpf.h 48*053f45beSAndroid Build Coastguard Worker $$(QUIET_GEN)../../../../scripts/bpf_doc.py $1 \ 49*053f45beSAndroid Build Coastguard Worker --filename $$< > $$@ 50*053f45beSAndroid Build Coastguard Worker 51*053f45beSAndroid Build Coastguard Worker$(OUTPUT)%.$2: $(OUTPUT)%.rst 52*053f45beSAndroid Build Coastguard Workerifndef RST2MAN_DEP 53*053f45beSAndroid Build Coastguard Worker $$(error "rst2man not found, but required to generate man pages") 54*053f45beSAndroid Build Coastguard Workerendif 55*053f45beSAndroid Build Coastguard Worker $$(QUIET_GEN)rst2man --exit-status=1 $$< > $$@.tmp 56*053f45beSAndroid Build Coastguard Worker $$(QUIET_GEN)mv $$@.tmp $$@ 57*053f45beSAndroid Build Coastguard Worker 58*053f45beSAndroid Build Coastguard Workerdocs-clean-$1: 59*053f45beSAndroid Build Coastguard Worker $$(call QUIET_CLEAN, eBPF_$1-manpage) 60*053f45beSAndroid Build Coastguard Worker $(Q)$(RM) $$(DOC_MAN$2) $(OUTPUT)bpf-$1.rst 61*053f45beSAndroid Build Coastguard Worker 62*053f45beSAndroid Build Coastguard Workerdocs-install-$1: docs 63*053f45beSAndroid Build Coastguard Worker $$(call QUIET_INSTALL, eBPF_$1-manpage) 64*053f45beSAndroid Build Coastguard Worker $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$$(man$2dir) 65*053f45beSAndroid Build Coastguard Worker $(Q)$(INSTALL) -m 644 $$(DOC_MAN$2) $(DESTDIR)$$(man$2dir) 66*053f45beSAndroid Build Coastguard Worker 67*053f45beSAndroid Build Coastguard Workerdocs-uninstall-$1: 68*053f45beSAndroid Build Coastguard Worker $$(call QUIET_UNINST, eBPF_$1-manpage) 69*053f45beSAndroid Build Coastguard Worker $(Q)$(RM) $$(addprefix $(DESTDIR)$$(man$2dir)/,$$(_DOC_MAN$2)) 70*053f45beSAndroid Build Coastguard Worker $(Q)$(RMDIR) $(DESTDIR)$$(man$2dir) 71*053f45beSAndroid Build Coastguard Worker 72*053f45beSAndroid Build Coastguard Worker.PHONY: $1 docs-clean-$1 docs-install-$1 docs-uninstall-$1 73*053f45beSAndroid Build Coastguard Workerendef 74*053f45beSAndroid Build Coastguard Worker 75*053f45beSAndroid Build Coastguard Worker# Create the make targets to generate manual pages by name and section 76*053f45beSAndroid Build Coastguard Worker$(eval $(call DOCS_RULES,helpers,7)) 77*053f45beSAndroid Build Coastguard Worker$(eval $(call DOCS_RULES,syscall,2)) 78*053f45beSAndroid Build Coastguard Worker 79*053f45beSAndroid Build Coastguard Workerdocs-clean: $(foreach doctarget,$(DOCTARGETS), docs-clean-$(doctarget)) 80*053f45beSAndroid Build Coastguard Workerdocs-install: $(foreach doctarget,$(DOCTARGETS), docs-install-$(doctarget)) 81*053f45beSAndroid Build Coastguard Workerdocs-uninstall: $(foreach doctarget,$(DOCTARGETS), docs-uninstall-$(doctarget)) 82*053f45beSAndroid Build Coastguard Worker 83*053f45beSAndroid Build Coastguard Worker.PHONY: docs docs-clean docs-install docs-uninstall man2 man7 84