#
########################################################################
+SHELL := /bin/bash -Eeuo pipefail
+
+
MAKEFLAGS += --no-print-directory
MAKEFLAGS += --warn-undefined-variables
DEFAULT_CFLAGS += -Wextra
DEAFULT_CFLAGS += -Wstrict-prototypes
DEFAULT_CFLAGS += -Werror
+DEFAULT_CFLAGS += -Wno-error=unused-parameter
+DEFAULT_CFLAGS += -Wno-error=sign-compare
+DEFAULT_CFLAGS += -Wno-error=format
+DEFAULT_CFLAGS += -Wno-error=uninitialized
EXTRA_CFLAGS :=
CFLAGS := $(DEFAULT_CFLAGS) $(EXTRA_CFLAGS)
_LINT_groff :=$(patsubst $(MANDIR)/%,$(_LINTDIR)/%.lint.groff.touch,$(LINTMAN))
_LINT_mandoc:=$(patsubst $(MANDIR)/%,$(_LINTDIR)/%.lint.mandoc.touch,$(LINTMAN))
_SRCPAGEDIRS:=$(patsubst $(MANDIR)/%,$(_SRCDIR)/%.d,$(LINTMAN))
-_UNITS_c :=$(sort $(patsubst $(MANDIR)/%,$(_SRCDIR)/%,$(shell \
+_UNITS_src :=$(sort $(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 (\(.*.c\))$$,$$m.d/\1,p"; \
+ sed -n "s,^\... SRC BEGIN (\(.*.[ch]\))$$,$$m.d/\1,p"; \
done)))
+_UNITS_h := $(filter %.h,$(_UNITS_src))
+_UNITS_c := $(filter %.c,$(_UNITS_src))
_UNITS_o := $(patsubst %.c,%.o,$(_UNITS_c))
_UNITS_bin := $(patsubst %.c,%,$(_UNITS_c))
_LINT_clang-tidy := $(patsubst %.c,%.lint.clang-tidy.touch,$(_UNITS_c))
$(MKDIR) $@
touch $@
-$(_UNITS_c): $$(@D)
+$(_UNITS_src): $$(patsubst $(_SRCDIR)/%.d,$(MANDIR)/%,$$(@D)) | $$(@D)
+$(_UNITS_c): $$(filter $$(@D)/%.h,$(_UNITS_h))
+$(_UNITS_src):
$(info SED $@)
- <$(patsubst $(_SRCDIR)/%.d,$(MANDIR)/%,$<) \
+ <$< \
sed -n \
-e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \
-e '/^\.SH EXAMPLES/p' \
| $(MAN) -P cat -l - \
| sed '/^[^ ]/d' \
| sed 's/^ //' \
- >$@ \
- || exit $$?
+ >$@
$(_UNITS_o): $(_SRCDIR)/%.o: $(_SRCDIR)/%.c
$(info CC $@)
$(_LINT_clang-tidy): %.lint.clang-tidy.touch: %.c
$(info LINT (clang-tidy) $@)
$(CLANG-TIDY) $(CLANG-TIDYFLAGS) $< -- $(CPPFLAGS) $(CFLAGS) 2>&1 \
- | sed '/generated\.$$/d' || exit $$?
+ | sed '/generated\.$$/d'
touch $@
$(_LINT_iwyu): %.lint.iwyu.touch: %.c
# The sed removes the lines "Content-type: text/html\n\n"
$(_HTMLPAGES): $(_HTMLDIR)/%.html: $(MANDIR)/% | $$(@D)/.
$(info MAN2HTML $@)
- $(MAN2HTML) $(MAN2HTMLFLAGS) $< | sed -e 1,2d >$@ || exit $$?
+ $(MAN2HTML) $(MAN2HTMLFLAGS) $< | sed -e 1,2d >$@
$(_HTMLDIRS): %/.: | $$(dir %). $(_HTMLDIR)/.