diff --git a/make/defs.mk b/make/defs.mk index 46647ac1..5127b63b 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -98,6 +98,14 @@ endif ifndef PRISTINE_MAKE PRISTINE_MAKE := umask $(MINIMAL_UMASK) && MAKEFLAGS=$(MINIMAL_MAKEFLAGS) LD_LIBRARY_PATH=$(MINIMAL_LD_LIBRARY_PATH) PATH=$(MINIMAL_PATH) $(MAKE) endif +ifndef SHELLCHECK + SHELLCHECK := $(shell $(WHICH) shellcheck) +endif +ifdef SHELLCHECK + SHELLCHECK += -f gcc +else + SHELLCHECK := bash -n +endif # ----- Function definitions @@ -356,17 +364,18 @@ INSTALLED_DOC ?= $(addprefix $(INSTALL_DOCDIR)/,$(DOCS)) # -- EXE INSTALLATION_FILE_TYPES += EXE -EXE_SH += $(filter-out $(DONT_INSTALL),$(wildcard *.sh *.pl *.pm *.py *.bat *.feedfs)) +EXE_SH += $(wildcard *.sh) EXE_SH += $(patsubst %.sh.tmpl,%.sh,$(filter-out $(DONT_INSTALL),$(wildcard *.sh.tmpl))) +EXE_SCRIPTS += $(EXE_SH) $(filter-out $(DONT_INSTALL),$(wildcard *.pl *.pm *.py *.bat *.feedfs)) #EXE_ALL += $(EXE) $(wildcard *.a *.dll *.so *.so.*) -BUILD_EXE_BIN += $(addprefix $(BUILD_EXEDIR)/,$(EXE) $(EXE_SH)) +BUILD_EXE_BIN += $(addprefix $(BUILD_EXEDIR)/,$(EXE) $(EXE_SCRIPTS)) INSTALLED_EXE_BIN += $(addprefix $(INSTALL_EXEDIR)/,$(EXE_BIN)) BUILD_EXEDIR = $(TOPDIR)/bin INSTALL_EXEDIR ?= $(EXE_PREFIX)/bin BUILD_EXE += $(BUILD_EXE_BIN) -INSTALLED_EXE += $(addprefix $(INSTALL_EXEDIR)/,$(EXE) $(EXE_SH)) $(INSTALLED_EXE_BIN) +INSTALLED_EXE += $(addprefix $(INSTALL_EXEDIR)/,$(EXE) $(EXE_SCRIPTS)) $(INSTALLED_EXE_BIN) # -- CGI INSTALLATION_FILE_TYPES += CGI diff --git a/make/rules.mk b/make/rules.mk index 6d2b5fe0..fca1258a 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -16,6 +16,7 @@ distclean: clean %.this \ allclean \ checkroot \ + check-syntax \ collect \ coreclean \ depclean \ @@ -39,6 +40,7 @@ distclean: clean rccclean \ remake \ runclean \ + sh-check-syntax \ textclean \ tmpclean \ uicclean \ @@ -58,8 +60,6 @@ installexe: all checkroot $(INSTALLED_EXE) installso: all checkroot install_dir_LIB $(INSTALLED_SHOBJS) -installsh: all checkroot $(INSTALL_EXEDIR) $(INSTALLED_EXE_SH) - pckgclean: $(RM) -rf *.zip *.tar.gz *.rpm *.deb @@ -432,4 +432,19 @@ find: collect: bash $(JWB_SCRIPT_DIR)/collect-installed-pkg-changes.sh -t $(TOPDIR) +check: check-syntax +check-syntax: sh-check-syntax +sh-check-syntax: + +ifneq ($(strip $(EXE_SH)),) +$(info EXE_SH=>$(EXE_SH)<) +sh-check-syntax: sh-check-syntax-rule +sh-check-syntax-rule: $(EXE_SH) + $(SHELLCHECK) $^ + set -e; for script in $^; do \ + echo "Checking $$script" ;\ + $(SHELLCHECK) $$script ;\ + done +endif + endif # ifndef JW_PKG_RULES_MK_INCLUDED