1*287e80b3SSadaf Ebrahimi# SPDX-License-Identifier: LGPL-2.1 2*287e80b3SSadaf Ebrahimi 3*287e80b3SSadaf Ebrahimiinclude $(src)/scripts/utils.mk 4*287e80b3SSadaf Ebrahimi 5*287e80b3SSadaf Ebrahimi 6*287e80b3SSadaf Ebrahimi# This Makefile and manpage XSL files were taken from libtraceevent 7*287e80b3SSadaf Ebrahimi# and modified for libtracefs. 8*287e80b3SSadaf Ebrahimi 9*287e80b3SSadaf EbrahimiMAN3_TXT= \ 10*287e80b3SSadaf Ebrahimi $(wildcard libtracefs-*.txt) \ 11*287e80b3SSadaf Ebrahimi libtracefs.txt 12*287e80b3SSadaf Ebrahimi 13*287e80b3SSadaf EbrahimiMAN1_TEXT= \ 14*287e80b3SSadaf Ebrahimi $(wildcard libtracefs-*.txt.1) 15*287e80b3SSadaf Ebrahimi 16*287e80b3SSadaf EbrahimiMAN_TXT = $(MAN3_TXT) 17*287e80b3SSadaf Ebrahimi_MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT)) 18*287e80b3SSadaf Ebrahimi_MAN_HTML=$(patsubst %.txt,%.html,$(MAN_TXT)) 19*287e80b3SSadaf Ebrahimi_DOC_MAN3=$(patsubst %.txt,%.m,$(MAN3_TXT)) 20*287e80b3SSadaf Ebrahimi 21*287e80b3SSadaf EbrahimiMAN_XML=$(addprefix $(OUTPUT),$(_MAN_XML)) 22*287e80b3SSadaf EbrahimiMAN_HTML=$(addprefix $(OUTPUT),$(_MAN_HTML)) 23*287e80b3SSadaf EbrahimiDOC_MAN3=$(addprefix $(OUTPUT),$(_DOC_MAN3)) 24*287e80b3SSadaf Ebrahimi 25*287e80b3SSadaf Ebrahimi_MAN1_XML=$(patsubst %.txt.1,%.xml,$(MAN1_TEXT)) 26*287e80b3SSadaf Ebrahimi_MAN1_HTML=$(patsubst %.txt.1,%.html,$(MAN1_TEXT)) 27*287e80b3SSadaf Ebrahimi_DOC_MAN1=$(patsubst %.txt.1,%.m,$(MAN1_TEXT)) 28*287e80b3SSadaf Ebrahimi 29*287e80b3SSadaf EbrahimiMAN1_XML=$(addprefix $(OUTPUT),$(_MAN1_XML)) 30*287e80b3SSadaf EbrahimiMAN1_HTML=$(addprefix $(OUTPUT),$(_MAN1_HTML)) 31*287e80b3SSadaf EbrahimiDOC_MAN1=$(addprefix $(OUTPUT),$(_DOC_MAN1)) 32*287e80b3SSadaf Ebrahimi 33*287e80b3SSadaf Ebrahimi 34*287e80b3SSadaf Ebrahimi# Make the path relative to DESTDIR, not prefix 35*287e80b3SSadaf Ebrahimiifndef DESTDIR 36*287e80b3SSadaf Ebrahimiprefix?=$(HOME) 37*287e80b3SSadaf Ebrahimiendif 38*287e80b3SSadaf Ebrahimibindir?=$(prefix)/bin 39*287e80b3SSadaf Ebrahimihtmldir?=$(prefix)/share/doc/libtracefs-doc 40*287e80b3SSadaf Ebrahimipdfdir?=$(prefix)/share/doc/libtracefs-doc 41*287e80b3SSadaf Ebrahimimandir?=$(prefix)/share/man 42*287e80b3SSadaf Ebrahimiman3dir=$(mandir)/man3 43*287e80b3SSadaf Ebrahimiman1dir=$(mandir)/man1 44*287e80b3SSadaf Ebrahimi 45*287e80b3SSadaf EbrahimiASCIIDOC=asciidoc 46*287e80b3SSadaf EbrahimiASCIIDOC_EXTRA = --unsafe -f asciidoc.conf 47*287e80b3SSadaf EbrahimiASCIIDOC_HTML = xhtml11 48*287e80b3SSadaf EbrahimiMANPAGE_XSL = manpage-normal.xsl 49*287e80b3SSadaf EbrahimiXMLTO_EXTRA = 50*287e80b3SSadaf EbrahimiINSTALL?=install 51*287e80b3SSadaf EbrahimiRM ?= rm -f 52*287e80b3SSadaf Ebrahimi 53*287e80b3SSadaf Ebrahimiifdef USE_ASCIIDOCTOR 54*287e80b3SSadaf EbrahimiASCIIDOC = asciidoctor 55*287e80b3SSadaf EbrahimiASCIIDOC_EXTRA = -a compat-mode 56*287e80b3SSadaf EbrahimiASCIIDOC_EXTRA += -I. -rasciidoctor-extensions 57*287e80b3SSadaf EbrahimiASCIIDOC_EXTRA += -a mansource="libtracefs" -a manmanual="libtracefs Manual" 58*287e80b3SSadaf EbrahimiASCIIDOC_HTML = xhtml5 59*287e80b3SSadaf Ebrahimiendif 60*287e80b3SSadaf Ebrahimi 61*287e80b3SSadaf EbrahimiASCIIDOC_INSTALLED := $(shell command -v $(ASCIIDOC) 2> /dev/null) 62*287e80b3SSadaf Ebrahimiifndef ASCIIDOC_INSTALLED 63*287e80b3SSadaf Ebrahimi missing_tools += $(ASCIIDOC) 64*287e80b3SSadaf Ebrahimiendif 65*287e80b3SSadaf Ebrahimi 66*287e80b3SSadaf EbrahimiXMLTO=xmlto 67*287e80b3SSadaf EbrahimiXMLTO_INSTALLED := $(shell command -v $(XMLTO) 2> /dev/null) 68*287e80b3SSadaf Ebrahimiifndef XMLTO_INSTALLED 69*287e80b3SSadaf Ebrahimi missing_tools += $(XMLTO) 70*287e80b3SSadaf Ebrahimiendif 71*287e80b3SSadaf Ebrahimi 72*287e80b3SSadaf Ebrahimi# 73*287e80b3SSadaf Ebrahimi# For asciidoc ... 74*287e80b3SSadaf Ebrahimi# -7.1.2, no extra settings are needed. 75*287e80b3SSadaf Ebrahimi# 8.0-, set ASCIIDOC8. 76*287e80b3SSadaf Ebrahimi# 77*287e80b3SSadaf Ebrahimi 78*287e80b3SSadaf Ebrahimi# 79*287e80b3SSadaf Ebrahimi# For docbook-xsl ... 80*287e80b3SSadaf Ebrahimi# -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0) 81*287e80b3SSadaf Ebrahimi# 1.69.0, no extra settings are needed? 82*287e80b3SSadaf Ebrahimi# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP? 83*287e80b3SSadaf Ebrahimi# 1.71.1, no extra settings are needed? 84*287e80b3SSadaf Ebrahimi# 1.72.0, set DOCBOOK_XSL_172. 85*287e80b3SSadaf Ebrahimi# 1.73.0-, set ASCIIDOC_NO_ROFF 86*287e80b3SSadaf Ebrahimi# 87*287e80b3SSadaf Ebrahimi 88*287e80b3SSadaf Ebrahimi# 89*287e80b3SSadaf Ebrahimi# If you had been using DOCBOOK_XSL_172 in an attempt to get rid 90*287e80b3SSadaf Ebrahimi# of 'the ".ft C" problem' in your generated manpages, and you 91*287e80b3SSadaf Ebrahimi# instead ended up with weird characters around callouts, try 92*287e80b3SSadaf Ebrahimi# using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8). 93*287e80b3SSadaf Ebrahimi# 94*287e80b3SSadaf Ebrahimi 95*287e80b3SSadaf Ebrahimiifdef ASCIIDOC8 96*287e80b3SSadaf EbrahimiASCIIDOC_EXTRA += -a asciidoc7compatible 97*287e80b3SSadaf Ebrahimiendif 98*287e80b3SSadaf Ebrahimiifdef DOCBOOK_XSL_172 99*287e80b3SSadaf EbrahimiASCIIDOC_EXTRA += -a libtracefs-asciidoc-no-roff 100*287e80b3SSadaf EbrahimiMANPAGE_XSL = manpage-1.72.xsl 101*287e80b3SSadaf Ebrahimielse 102*287e80b3SSadaf Ebrahimi ifdef ASCIIDOC_NO_ROFF 103*287e80b3SSadaf Ebrahimi # docbook-xsl after 1.72 needs the regular XSL, but will not 104*287e80b3SSadaf Ebrahimi # pass-thru raw roff codes from asciidoc.conf, so turn them off. 105*287e80b3SSadaf Ebrahimi ASCIIDOC_EXTRA += -a libtracefs-asciidoc-no-roff 106*287e80b3SSadaf Ebrahimi endif 107*287e80b3SSadaf Ebrahimiendif 108*287e80b3SSadaf Ebrahimiifdef MAN_BOLD_LITERAL 109*287e80b3SSadaf EbrahimiXMLTO_EXTRA += -m manpage-bold-literal.xsl 110*287e80b3SSadaf Ebrahimiendif 111*287e80b3SSadaf Ebrahimiifdef DOCBOOK_SUPPRESS_SP 112*287e80b3SSadaf EbrahimiXMLTO_EXTRA += -m manpage-suppress-sp.xsl 113*287e80b3SSadaf Ebrahimiendif 114*287e80b3SSadaf Ebrahimi 115*287e80b3SSadaf EbrahimiSHELL_PATH ?= $(SHELL) 116*287e80b3SSadaf Ebrahimi# Shell quote; 117*287e80b3SSadaf EbrahimiSHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) 118*287e80b3SSadaf Ebrahimi 119*287e80b3SSadaf EbrahimiDESTDIR ?= 120*287e80b3SSadaf EbrahimiDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))' 121*287e80b3SSadaf Ebrahimi 122*287e80b3SSadaf Ebrahimiexport DESTDIR DESTDIR_SQ 123*287e80b3SSadaf Ebrahimi 124*287e80b3SSadaf EbrahimiQUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir 125*287e80b3SSadaf EbrahimiQUIET_SUBDIR1 = 126*287e80b3SSadaf Ebrahimi 127*287e80b3SSadaf Ebrahimiifneq ($(findstring $(MAKEFLAGS),w),w) 128*287e80b3SSadaf EbrahimiPRINT_DIR = --no-print-directory 129*287e80b3SSadaf Ebrahimielse # "make -w" 130*287e80b3SSadaf EbrahimiNO_SUBDIR = : 131*287e80b3SSadaf Ebrahimiendif 132*287e80b3SSadaf Ebrahimi 133*287e80b3SSadaf Ebrahimiifneq ($(findstring $(MAKEFLAGS),s),s) 134*287e80b3SSadaf Ebrahimiifneq ($(V),1) 135*287e80b3SSadaf Ebrahimi QUIET_ASCIIDOC = @echo ' ASCIIDOC '$@; 136*287e80b3SSadaf Ebrahimi QUIET_XMLTO = @echo ' XMLTO '$@; 137*287e80b3SSadaf Ebrahimi QUIET_SUBDIR0 = +@subdir= 138*287e80b3SSadaf Ebrahimi QUIET_SUBDIR1 = ;$(NO_SUBDIR) \ 139*287e80b3SSadaf Ebrahimi echo ' SUBDIR ' $$subdir; \ 140*287e80b3SSadaf Ebrahimi $(MAKE) $(PRINT_DIR) -C $$subdir 141*287e80b3SSadaf Ebrahimi export V 142*287e80b3SSadaf Ebrahimiendif 143*287e80b3SSadaf Ebrahimiendif 144*287e80b3SSadaf Ebrahimi 145*287e80b3SSadaf Ebrahimiall: check-man-tools html man 146*287e80b3SSadaf Ebrahimi 147*287e80b3SSadaf Ebrahimiman: man3 man1 148*287e80b3SSadaf Ebrahimiman3: $(DOC_MAN3) 149*287e80b3SSadaf Ebrahimiman1: $(DOC_MAN1) 150*287e80b3SSadaf Ebrahimi 151*287e80b3SSadaf Ebrahimihtml: $(MAN_HTML) $(MAN1_HTML) 152*287e80b3SSadaf Ebrahimi 153*287e80b3SSadaf Ebrahimi$(MAN_HTML) $(MAN1_HTML) $(DOC_MAN3) $(DOC_MAN1): asciidoc.conf 154*287e80b3SSadaf Ebrahimi 155*287e80b3SSadaf Ebrahimiinstall: check-man-tools install-man install-html 156*287e80b3SSadaf Ebrahimi 157*287e80b3SSadaf Ebrahimicheck-man-tools: 158*287e80b3SSadaf Ebrahimiifdef missing_tools 159*287e80b3SSadaf Ebrahimi $(error "You need to install $(missing_tools) for man pages") 160*287e80b3SSadaf Ebrahimiendif 161*287e80b3SSadaf Ebrahimi 162*287e80b3SSadaf Ebrahimiinstall-%.3: $(OUTPUT)%.3 163*287e80b3SSadaf Ebrahimi $(Q)$(call do_install,$<,$(man3dir),644); 164*287e80b3SSadaf Ebrahimi 165*287e80b3SSadaf Ebrahimiinstall-%.1: $(OUTPUT)%.1 166*287e80b3SSadaf Ebrahimi $(Q)$(call do_install,$<,$(man1dir),644); 167*287e80b3SSadaf Ebrahimi 168*287e80b3SSadaf Ebrahimido-install-man: man $(addprefix install-,$(wildcard $(OUTPUT)*.3)) $(addprefix install-,$(wildcard $(OUTPUT)*.1)) 169*287e80b3SSadaf Ebrahimi 170*287e80b3SSadaf Ebrahimiinstall-man: man 171*287e80b3SSadaf Ebrahimi $(Q)$(MAKE) -C . do-install-man 172*287e80b3SSadaf Ebrahimi 173*287e80b3SSadaf Ebrahimiinstall-%.txt: $(OUTPUT)%.html 174*287e80b3SSadaf Ebrahimi $(Q)$(call do_install,$<,$(htmldir),644); 175*287e80b3SSadaf Ebrahimi 176*287e80b3SSadaf Ebrahimiinstall-%.txt.1: $(OUTPUT)%.html 177*287e80b3SSadaf Ebrahimi $(Q)$(call do_install,$<,$(htmldir),644); 178*287e80b3SSadaf Ebrahimi 179*287e80b3SSadaf Ebrahimido-install-html: html $(addprefix install-,$(wildcard *.txt)) $(addprefix install-,$(wildcard *.txt.1)) 180*287e80b3SSadaf Ebrahimi 181*287e80b3SSadaf Ebrahimiinstall-html: html do-install-html 182*287e80b3SSadaf Ebrahimi 183*287e80b3SSadaf Ebrahimiuninstall: uninstall-man uninstall-html 184*287e80b3SSadaf Ebrahimi 185*287e80b3SSadaf Ebrahimiuninstall-man: 186*287e80b3SSadaf Ebrahimi $(Q)$(RM) $(addprefix $(DESTDIR)$(man3dir)/,$(DOC_MAN3)) $(addprefix $(DESTDIR)$(man1dir)/,$(DOC_MAN1)) 187*287e80b3SSadaf Ebrahimi 188*287e80b3SSadaf Ebrahimiuninstall-html: 189*287e80b3SSadaf Ebrahimi $(Q)$(RM) $(addprefix $(DESTDIR)$(htmldir)/,$(MAN_HTML)) $(addprefix $(DESTDIR)$(htmldir)/,$(MAN1_HTML)) 190*287e80b3SSadaf Ebrahimi 191*287e80b3SSadaf Ebrahimiifdef missing_tools 192*287e80b3SSadaf Ebrahimi DO_INSTALL_MAN = $(warning Please install $(missing_tools) to have the man pages installed) 193*287e80b3SSadaf Ebrahimielse 194*287e80b3SSadaf Ebrahimi DO_INSTALL_MAN = do-install-man 195*287e80b3SSadaf Ebrahimiendif 196*287e80b3SSadaf Ebrahimi 197*287e80b3SSadaf EbrahimiCLEAN_FILES = \ 198*287e80b3SSadaf Ebrahimi $(MAN_XML) $(addsuffix +,$(MAN_XML)) \ 199*287e80b3SSadaf Ebrahimi $(MAN_HTML) $(addsuffix +,$(MAN_HTML)) \ 200*287e80b3SSadaf Ebrahimi $(MAN1_HTML) $(addsuffix +,$(MAN1_HTML)) \ 201*287e80b3SSadaf Ebrahimi $(filter-out $(MAN1_TEXT),$(wildcard *.1)) \ 202*287e80b3SSadaf Ebrahimi $(DOC_MAN3) *.3 *.m 203*287e80b3SSadaf Ebrahimi 204*287e80b3SSadaf Ebrahimiclean: 205*287e80b3SSadaf Ebrahimi $(Q) $(RM) $(CLEAN_FILES) 206*287e80b3SSadaf Ebrahimi 207*287e80b3SSadaf Ebrahimiifdef USE_ASCIIDOCTOR 208*287e80b3SSadaf Ebrahimi$(OUTPUT)%.3 : $(OUTPUT)%.txt 209*287e80b3SSadaf Ebrahimi $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ 210*287e80b3SSadaf Ebrahimi $(ASCIIDOC) -b manpage -d manpage \ 211*287e80b3SSadaf Ebrahimi $(ASCIIDOC_EXTRA) -alibtracefs_version=$(TRACEFS_VERSION) -o $@+ $< && \ 212*287e80b3SSadaf Ebrahimi mv $@+ $@ 213*287e80b3SSadaf Ebrahimi$(OUTPUT)%.1 : $(OUTPUT)%.txt.1 214*287e80b3SSadaf Ebrahimi $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ 215*287e80b3SSadaf Ebrahimi $(ASCIIDOC) -b manpage -d manpage \ 216*287e80b3SSadaf Ebrahimi $(ASCIIDOC_EXTRA) -alibtracefs_version=$(TRACEFS_VERSION) -o $@+ $< && \ 217*287e80b3SSadaf Ebrahimi mv $@+ $@ 218*287e80b3SSadaf Ebrahimiendif 219*287e80b3SSadaf Ebrahimi 220*287e80b3SSadaf Ebrahimi$(OUTPUT)%.m : $(OUTPUT)%.xml 221*287e80b3SSadaf Ebrahimi $(QUIET_XMLTO)$(RM) $@ && \ 222*287e80b3SSadaf Ebrahimi $(XMLTO) -o $(OUTPUT). -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<; \ 223*287e80b3SSadaf Ebrahimi touch $@ 224*287e80b3SSadaf Ebrahimi 225*287e80b3SSadaf Ebrahimi$(OUTPUT)%.xml : %.txt 226*287e80b3SSadaf Ebrahimi $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ 227*287e80b3SSadaf Ebrahimi $(ASCIIDOC) -b docbook -d manpage \ 228*287e80b3SSadaf Ebrahimi $(ASCIIDOC_EXTRA) -alibtracefs_version=$(TRACEFS_VERSION) -o $@+ $< && \ 229*287e80b3SSadaf Ebrahimi mv $@+ $@ 230*287e80b3SSadaf Ebrahimi 231*287e80b3SSadaf Ebrahimi$(OUTPUT)%.xml : %.txt.1 232*287e80b3SSadaf Ebrahimi $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ 233*287e80b3SSadaf Ebrahimi $(ASCIIDOC) -b docbook -d manpage \ 234*287e80b3SSadaf Ebrahimi $(ASCIIDOC_EXTRA) -alibtracefs_version=$(TRACEFS_VERSION) -o $@+ $< && \ 235*287e80b3SSadaf Ebrahimi mv $@+ $@ 236*287e80b3SSadaf Ebrahimi 237*287e80b3SSadaf Ebrahimi$(MAN_HTML): $(OUTPUT)%.html : %.txt 238*287e80b3SSadaf Ebrahimi $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ 239*287e80b3SSadaf Ebrahimi $(ASCIIDOC) -b $(ASCIIDOC_HTML) -d manpage \ 240*287e80b3SSadaf Ebrahimi $(ASCIIDOC_EXTRA) -alibtracefs_version=$(TRACEFS_VERSION) -o $@+ $< && \ 241*287e80b3SSadaf Ebrahimi mv $@+ $@ 242*287e80b3SSadaf Ebrahimi 243*287e80b3SSadaf Ebrahimi$(MAN1_HTML): $(OUTPUT)%.html : %.txt.1 244*287e80b3SSadaf Ebrahimi $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ 245*287e80b3SSadaf Ebrahimi $(ASCIIDOC) -b $(ASCIIDOC_HTML) -d manpage \ 246*287e80b3SSadaf Ebrahimi $(ASCIIDOC_EXTRA) -alibtracefs_version=$(TRACEFS_VERSION) -o $@+ $< && \ 247*287e80b3SSadaf Ebrahimi mv $@+ $@ 248