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