srcdir := .
+
+include $(srcdir)/lib/cmd.mk
+
+
MANDIR := $(srcdir)
MANEXT := \.[0-9]\w*
-MANPAGES := $(sort $(shell find $(MANDIR)/man*/ -type f | grep '$(MANEXT)'))
-MANDIRS := $(sort $(shell find $(MANDIR)/man* -type d))
+MANPAGES := $(shell $(FIND) $(MANDIR)/man*/ -type f \
+ | $(GREP) '$(MANEXT)' \
+ | $(SORT))
+MANDIRS := $(shell $(FIND) $(MANDIR)/man* -type d \
+ | $(SORT))
.PHONY: all
include $(srcdir)/lib/build.mk
+include $(srcdir)/lib/cmd.mk
htmlext := .html
# The sed removes the lines "Content-type: text/html\n\n"
$(_HTMLPAGES): $(_HTMLDIR)/%.html: $(MANDIR)/% | $$(@D)/.
$(info MAN2HTML $@)
- $(MAN2HTML) $(MAN2HTMLFLAGS) $< | sed -e 1,2d >$@
+ $(MAN2HTML) $(MAN2HTMLFLAGS) $< \
+ | $(SED) -e 1,2d >$@
$(_HTMLDIRS): %/.: | $$(dir %). $(_HTMLDIR)/.
include $(srcdir)/lib/build.mk
+include $(srcdir)/lib/cmd.mk
include $(srcdir)/lib/lint.mk
_SRCPAGEDIRS := $(patsubst $(MANDIR)/%,$(_SRCDIR)/%.d,$(LINTMAN))
-_UNITS_src_src := $(sort $(patsubst $(MANDIR)/%,$(_SRCDIR)/%,$(shell \
- find $(MANDIR)/man*/ -type f \
- | grep '$(MANEXT)$$' \
- | xargs grep -l '^\.TH ' \
+_UNITS_src_src := $(patsubst $(MANDIR)/%,$(_SRCDIR)/%,$(shell \
+ $(FIND) $(MANDIR)/man*/ -type f \
+ | $(GREP) '$(MANEXT)$$' \
+ | $(XARGS) $(GREP) -l '^\.TH ' \
| while read m; do \
- <$$m \
- sed -n "s,^\... SRC BEGIN (\(.*.[ch]\))$$,$$m.d/\1,p"; \
- done)))
+ <$$m \
+ $(SED) -n "s,^\... SRC BEGIN (\(.*.[ch]\))$$,$$m.d/\1,p"; \
+ done \
+ | $(SORT)))
_UNITS_src_h := $(filter %.h,$(_UNITS_src_src))
_UNITS_src_c := $(filter %.c,$(_UNITS_src_src))
_UNITS_src_o := $(patsubst %.c,%.o,$(_UNITS_src_c))
$(_UNITS_src_src):
$(info SED $@)
<$< \
- sed -n \
+ $(SED) -n \
-e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \
-e '/^\.SH EXAMPLES/p' \
-e "/^\... SRC BEGIN ($(@F))$$/,/^\... SRC END$$/p" \
| $(MAN) -P cat -l - \
- | sed '/^[^ ]/d' \
- | sed 's/^ //' \
+ | $(SED) '/^[^ ]/d' \
+ | $(SED) 's/^ //' \
>$@
$(_UNITS_src_o): $(_SRCDIR)/%.o: $(_SRCDIR)/%.c
--- /dev/null
+########################################################################
+# Copyright (C) 2022 Alejandro Colomar <alx.manpages@gmail.com>
+# SPDX-License-Identifier: GPL-2.0 OR LGPL-2.0
+########################################################################
+
+
+ifndef MAKEFILE_CMD_INCLUDED
+MAKEFILE_CMD_INCLUDED := 1
+
+
+FIND := find
+GIT := git
+GREP := grep
+GZIP := gzip
+SED := sed
+SORT := sort
+TAC := tac
+TAR := tar
+XARGS := xargs
+XZ := xz
+
+
+endif # MAKEFILE_CMD_INCLUDED
include $(srcdir)/lib/build.mk
+include $(srcdir)/lib/cmd.mk
-DISTNAME := $(shell git describe 2>/dev/null)
+DISTNAME := $(shell $(GIT) describe 2>/dev/null)
DISTFILE := $(builddir)/$(DISTNAME).tar
compression := gz xz
dist := $(foreach x,$(compression),dist-$(x))
-$(DISTFILE): $(shell git ls-files 2>/dev/null) | $$(@D)/.
+$(DISTFILE): $(shell $(GIT) ls-files 2>/dev/null) | $$(@D)/.
$(info TAR $@)
- tar cf $@ -T /dev/null
- git ls-files \
- | sed 's,^,./,' \
- | xargs tar rf $@ -C $(srcdir) --transform 's,^\.,$(DISTNAME),'
+ $(TAR) cf $@ -T /dev/null
+ $(GIT) ls-files \
+ | $(SED) 's,^,./,' \
+ | $(XARGS) $(TAR) rf $@ -C $(srcdir) --transform 's,^\.,$(DISTNAME),'
$(DISTFILE).gz: %.gz: % | $$(@D)/.
$(info GZIP $@)
- gzip -knf $<
+ $(GZIP) -knf $<
$(DISTFILE).xz: %.xz: % | $$(@D)/.
$(info XZ $@)
- xz -kf $<
+ $(XZ) -kf $<
.PHONY: dist-tar
include $(srcdir)/lib/build-src.mk
+include $(srcdir)/lib/cmd.mk
include $(srcdir)/lib/lint.mk
$(_LINT_c_clang-tidy): %.lint-c.clang-tidy.touch: %.c
$(info LINT (clang-tidy) $@)
$(CLANG-TIDY) $(CLANG-TIDYFLAGS) $< -- $(CPPFLAGS) $(CFLAGS) 2>&1 \
- | sed '/generated\.$$/d'
+ | $(SED) '/generated\.$$/d'
touch $@
$(_LINT_c_cpplint): %.lint-c.cpplint.touch: %.c
$(_LINT_c_iwyu): %.lint-c.iwyu.touch: %.c
$(info LINT (iwyu) $@)
$(IWYU) $(IWYUFLAGS) $(CPPFLAGS) $(CFLAGS) $< 2>&1 \
- | tac \
- | sed '/correct/{N;d}' \
- | tac
+ | $(TAC) \
+ | $(SED) '/correct/{N;d}' \
+ | $(TAC)
touch $@
MAKEFILE_LINT_MAN_INCLUDED := 1
+include $(srcdir)/lib/cmd.mk
include $(srcdir)/lib/lint.mk
TMACDIR := $(SYSCONFDIR)/groff/tmac
-TMACFILES := $(sort $(shell find $(TMACDIR) -not -type d))
+TMACFILES := $(shell $(FIND) $(TMACDIR) -not -type d | $(SORT))
TMACNAMES := $(basename $(notdir $(TMACFILES)))
GROFF_CHECKSTYLE_LVL := 3
DEFAULT_GROFFFLAGS := -man
include $(srcdir)/lib/build.mk
+include $(srcdir)/lib/cmd.mk
SYSCONFDIR := $(srcdir)/etc
_LINTDIR := $(builddir)/lint
-LINTMAN := $(shell find $(MANDIR)/man*/ -type f | grep '$(MANEXT)' \
- | xargs grep -l '^\.TH ' | sort))
+LINTMAN := $(shell $(FIND) $(MANDIR)/man*/ -type f \
+ | $(GREP) '$(MANEXT)' \
+ | $(XARGS) $(GREP) -l '^\.TH ' \
+ | $(SORT))
_LINTDIRS := $(patsubst $(MANDIR)/%,$(_LINTDIR)/%/.,$(MANDIRS))