summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2023-04-14 16:46:45 +0200
committerAlejandro Colomar <alx@kernel.org>2023-04-19 23:37:19 +0200
commit3bf446018179a9639416e37477e2c257f73d9942 (patch)
treee8b4b41978f8a036fbe36f3c36a9b44a7160ee38
parent4b59a57e7c4fe414933b44656d869bd7eda7966d (diff)
*.mk: lint, lint-sh, lint-sh-shellcheck: Lint the shell script
Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--Makefile43
-rw-r--r--share/mk/build/_.mk21
-rw-r--r--share/mk/cmd.mk12
-rw-r--r--share/mk/lint/_.mk16
-rw-r--r--share/mk/lint/sh.mk39
-rw-r--r--share/mk/src.mk13
-rw-r--r--share/mk/verbose.mk16
7 files changed, 160 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..01556eb
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+SHELL := /usr/bin/env bash -Eeuo pipefail
+
+
+MAKEFLAGS += --no-builtin-rules
+MAKEFLAGS += --no-builtin-variables
+MAKEFLAGS += --warn-undefined-variables
+
+
+srcdir := .
+DATAROOTDIR := $(srcdir)/share
+MAKEFILEDIR := $(DATAROOTDIR)/mk
+
+
+.PHONY: all
+all:
+ @:
+
+
+.PHONY: help
+help:
+ $(info all No-op)
+ $(info )
+ $(info lint Alias for "lint-sh")
+ $(info lint-sh Alias for "lint-sh-shellcheck")
+ $(info lint-sh-shellcheck Lint the shell script with shellcheck(1))
+ $(info )
+ $(info help Print this help)
+ $(info )
+
+
+.SECONDEXPANSION:
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/lint/_.mk
+include $(MAKEFILEDIR)/lint/sh.mk
+include $(MAKEFILEDIR)/verbose.mk
+
+
+.DELETE_ON_ERROR:
diff --git a/share/mk/build/_.mk b/share/mk/build/_.mk
new file mode 100644
index 0000000..5b5bc07
--- /dev/null
+++ b/share/mk/build/_.mk
@@ -0,0 +1,21 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+ifndef MAKEFILE_BUILD_INCLUDED
+MAKEFILE_BUILD_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/cmd.mk
+
+
+builddir := .tmp
+
+_BINDIR := $(builddir)/bin
+
+
+$(builddir)/%/:
+ +$(info MKDIR $@)
+ +$(MKDIR) $@
+
+
+endif # include guard
diff --git a/share/mk/cmd.mk b/share/mk/cmd.mk
new file mode 100644
index 0000000..470b764
--- /dev/null
+++ b/share/mk/cmd.mk
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+ifndef MAKEFILE_CMD_INCLUDED
+MAKEFILE_CMD_INCLUDED := 1
+
+
+MKDIR := mkdir -p
+SHELLCHECK := shellcheck
+
+
+endif # include guard
diff --git a/share/mk/lint/_.mk b/share/mk/lint/_.mk
new file mode 100644
index 0000000..b2a1cbe
--- /dev/null
+++ b/share/mk/lint/_.mk
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+ifndef MAKEFILE_LINT_INCLUDED
+MAKEFILE_LINT_INCLUDED := 1
+
+
+lint := lint-sh
+
+
+.PHONY: lint
+lint: $(lint)
+ @:
+
+
+endif # include guard
diff --git a/share/mk/lint/sh.mk b/share/mk/lint/sh.mk
new file mode 100644
index 0000000..a20d2ab
--- /dev/null
+++ b/share/mk/lint/sh.mk
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+ifndef MAKEFILE_LINT_SH_INCLUDED
+MAKEFILE_LINT_SH_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+DEFAULT_SHELLCHECKFLAGS :=
+EXTRA_SHELLCHECKFLAGS :=
+SHELLCHECKFLAGS := $(DEFAULT_SHELLCHECKFLAGS) $(EXTRA_SHELLCHECKFLAGS)
+SHELLCHECK := shellcheck
+
+
+_LINT_sh_shellcheck := $(patsubst $(BINDIR)/%,$(_BINDIR)/%.lint-sh.shellcheck.touch,$(BIN))
+
+linters_sh := shellcheck
+lint_sh := $(foreach x,$(linters_sh),lint-sh-$(x))
+
+
+$(_LINT_sh_shellcheck): $(_BINDIR)/%.lint-sh.shellcheck.touch: $(BINDIR)/% | $$(@D)/
+ $(info SHELLCHECK $@)
+ $(SHELLCHECK) $(SHELLCHECKFLAGS) $<
+ touch $@
+
+
+.PHONY: $(lint_sh)
+$(lint_sh): lint-sh-%: $$(_LINT_sh_%)
+ @:
+
+.PHONY: lint-sh
+lint-sh: $(lint_sh)
+ @:
+
+
+endif # include guard
diff --git a/share/mk/src.mk b/share/mk/src.mk
new file mode 100644
index 0000000..e409b78
--- /dev/null
+++ b/share/mk/src.mk
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+ifndef MAKEFILE_SRC_INCLUDED
+MAKEFILE_SRC_INCLUDED := 1
+
+
+BINDIR := $(srcdir)/bin
+
+BIN := $(BINDIR)/stdc
+
+
+endif # include guard
diff --git a/share/mk/verbose.mk b/share/mk/verbose.mk
new file mode 100644
index 0000000..864068c
--- /dev/null
+++ b/share/mk/verbose.mk
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+
+ifndef MAKEFILE_VERBOSE_INCLUDED
+MAKEFILE_VERBOSE_INCLUDED := 1
+
+
+ifdef V
+HIDE_ERR :=
+else
+HIDE_ERR := 2>/dev/null
+.SILENT:
+endif
+
+
+endif # include guard