defs.mk: Define Q and use it in *.mk

Define Q ?= @, and replace @<command> in recipes by $(Q)<command>.
Meant to be overridden from the environment for debugging as in

  Q= make

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-01-25 17:34:53 +01:00
commit f869b5aaca
15 changed files with 47 additions and 45 deletions

View file

@ -20,4 +20,4 @@ install: $(INSTALL_MAKEDIR)/winres.rc.tmpl
endif endif
grep-vars: grep-vars:
@sed '/^ *[A-Z]/!d; s/^[ ]*//g; s/[=+?:].*//g; s/[ ]*//g' *.mk | sort -u $(Q)sed '/^ *[A-Z]/!d; s/^[ ]*//g; s/[=+?:].*//g; s/[ ]*//g' *.mk | sort -u

View file

@ -80,4 +80,4 @@ coreclean: centralcore-clean
centralcore-clean: centralcore-clean:
$(RM) -f /var/cores/core* /var/cores/vgcore* || exit 0 $(RM) -f /var/cores/core* /var/cores/vgcore* || exit 0
echo-pid: echo-pid:
@echo PID = $(PID) $(Q)echo PID = $(PID)

View file

@ -10,6 +10,7 @@ MAKEFLAGS += -r
empty := empty :=
space := $(empty) $(empty) space := $(empty) $(empty)
comma := , comma := ,
Q ?= @
# ----- executables # ----- executables
@ -528,6 +529,6 @@ doc-project:
$(BROWSER) $(JANWARE_URL_DOC_PROJECT) $(BROWSER) $(JANWARE_URL_DOC_PROJECT)
echo-targets: echo-targets:
@make -pqR | sed '/^[a-zA-Z-]\+:/!d; s/:.*//' | sort $(Q)make -pqR | sed '/^[a-zA-Z-]\+:/!d; s/:.*//' | sort
endif # ifndef JW_PKG_DEF_MK_INCLUDED endif # ifndef JW_PKG_DEF_MK_INCLUDED

View file

@ -37,9 +37,9 @@ endif
show-vars: show-vars-depend-mk show-vars: show-vars-depend-mk
show-vars-depend-mk: show-vars-depend-mk:
@echo DEPEND_MK = $(DEPEND_MK) $(Q)echo DEPEND_MK = $(DEPEND_MK)
@echo BUILD_HDR = $(BUILD_HDR) $(Q)echo BUILD_HDR = $(BUILD_HDR)
@echo SRC_H = $(SRC_H) $(Q)echo SRC_H = $(SRC_H)
endif # DEPEND_MK_INCLUDED endif # DEPEND_MK_INCLUDED
DEPEND_MK_INCLUDED := true DEPEND_MK_INCLUDED := true

View file

@ -45,7 +45,7 @@ indent-makefiles:
--maxdepth 1 --maxdepth 1
cleanup-spaces: cleanup-spaces:
@$(PROCESS_TEXT_FILES_PY) cleanup-spaces \ $(Q)$(PROCESS_TEXT_FILES_PY) cleanup-spaces \
--name-regex="$(CLEANUP_SPACES_NAME_REGEX)" \ --name-regex="$(CLEANUP_SPACES_NAME_REGEX)" \
--root=$(MAKEFILE_INDENT_ROOT) --root=$(MAKEFILE_INDENT_ROOT)

View file

@ -39,6 +39,6 @@ install-links:
DEVELOPMENT=false make do-install-links DEVELOPMENT=false make do-install-links
do-install-links: do-install-links:
@$(call install_links,HDR) $(Q)$(call install_links,HDR)
include $(JWBDIR)/make/rules.mk include $(JWBDIR)/make/rules.mk

View file

@ -30,7 +30,7 @@ done.clean:
$(RM) -f *.done $(RM) -f *.done
$(TARGET_DIR)/%: $(SOURCE_BASE)/% $(TARGET_DIR)/%: $(SOURCE_BASE)/%
@if [ -L "$<" -o -f "$<" ]; then \ $(Q)if [ -L "$<" -o -f "$<" ]; then \
echo $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\ echo $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\
$(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\ $(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\
else \ else \

View file

@ -4,15 +4,15 @@ ifndef LIST_FILES_MK_INCLUDED
LIST_FILES_MK_INCLUDED := true LIST_FILES_MK_INCLUDED := true
list-files echo-files: list-files echo-files:
@$(LIST_VCS_FILES) -f $(Q)$(LIST_VCS_FILES) -f
list-text-files echo-text-files: list-text-files echo-text-files:
@$(LIST_VCS_FILES) -ft $(Q)$(LIST_VCS_FILES) -ft
tar-files: tar-files:
@$(LIST_VCS_FILES) $(TOPDIR) -f | xargs tar -C $(TOPDIR) -cf - $(Q)$(LIST_VCS_FILES) $(TOPDIR) -f | xargs tar -C $(TOPDIR) -cf -
cpio-files: cpio-files:
@$(LIST_VCS_FILES) $(TOPDIR) -f | cpio --directory=$(TOPDIR) -o -H newc $(Q)$(LIST_VCS_FILES) $(TOPDIR) -f | cpio --directory=$(TOPDIR) -o -H newc
endif # ifndef LIST_FILES_MK_INCLUDED endif # ifndef LIST_FILES_MK_INCLUDED

View file

@ -56,7 +56,7 @@ install-links:
DEVELOPMENT=false make do-install-links DEVELOPMENT=false make do-install-links
do-install-links: do-install-links:
@$(call install_links,MAKE) $(Q)$(call install_links,MAKE)
ifeq ($(CREATE_PKG_CONFIG),true) ifeq ($(CREATE_PKG_CONFIG),true)

View file

@ -1,4 +1,4 @@
all: all:
libpath: libpath:
@echo "export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)" $(Q)echo "export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)"
@echo "export PATH=.:$(PATH)" $(Q)echo "export PATH=.:$(PATH)"

View file

@ -18,6 +18,7 @@ PROJECTS_MAKEFILE_NAME := $(firstword $(MAKEFILE_LIST))
-include local.mk -include local.mk
JWBDIR ?= jw-pkg JWBDIR ?= jw-pkg
Q ?= @
ifeq ($(origin PROJECTS_DIR_REMOTE_BASE),undefined) ifeq ($(origin PROJECTS_DIR_REMOTE_BASE),undefined)
ifneq ($(wildcard $(JWBDIR)),) ifneq ($(wildcard $(JWBDIR)),)
@ -63,7 +64,7 @@ all:
include $(PROJECTS_DIR_INCLUDE_MK) include $(PROJECTS_DIR_INCLUDE_MK)
$(PROJECTS_DIR_INCLUDE_MK): | $(JWBDIR) $(PROJECTS_DIR_INCLUDE_MK): | $(JWBDIR)
@echo Provided $@ $(Q)echo Provided $@
$(JWBDIR): $(JWBDIR):
git $(GIT_GLOBAL_OPTS) clone $(addprefix -b ,$(JW_PKG_BRANCH)) $(JWBDIR_GIT_REMOTE) $(JWBDIR) git $(GIT_GLOBAL_OPTS) clone $(addprefix -b ,$(JW_PKG_BRANCH)) $(JWBDIR_GIT_REMOTE) $(JWBDIR)

View file

@ -163,7 +163,7 @@ install:
@echo " Target install is not supported by this Makefile." @echo " Target install is not supported by this Makefile."
@echo " Target pkg-rebuild-reinstall might be what you are looking for." @echo " Target pkg-rebuild-reinstall might be what you are looking for."
@echo @echo
@exit 1 $(Q)exit 1
# --- build targets # --- build targets
@ -185,15 +185,15 @@ build-order-%: $(filter-out $(UNAVAILABLE_TARGETS),pull.done)
build-order: build-order-all build-order: build-order-all
echo-build-deps: echo-build-deps:
@$(PROJECTS_PY) required-os-pkg --skip-excluded --flavours "build" $(TARGET_PROJECTS) $(Q)$(PROJECTS_PY) required-os-pkg --skip-excluded --flavours "build" $(TARGET_PROJECTS)
echo-install-deps: echo-install-deps:
@$(PROJECTS_PY) required-os-pkg --skip-excluded --flavours "build run" $(TARGET_PROJECTS) $(Q)$(PROJECTS_PY) required-os-pkg --skip-excluded --flavours "build run" $(TARGET_PROJECTS)
echo-release-deps: echo-release-deps:
@$(PROJECTS_PY) required-os-pkg --skip-excluded --flavours "build run release" $(TARGET_PROJECTS) $(Q)$(PROJECTS_PY) required-os-pkg --skip-excluded --flavours "build run release" $(TARGET_PROJECTS)
echo-os: echo-os:
@$(GET_OS_SH) $(Q)$(GET_OS_SH)
echo-projects: echo-projects:
@echo $(PROJECTS) @echo $(PROJECTS)
@ -211,22 +211,22 @@ distclean: clean.text-files-cache
clean.text-files-cache: clean.text-files-cache:
rm -f $(TEXT_FILES_CACHE) rm -f $(TEXT_FILES_CACHE)
list-files: list-files:
@realpath PROJECTS_MAKEFILE_NAME $(Q)realpath PROJECTS_MAKEFILE_NAME
@for p in $(BUILD_PROJECTS); do \ $(Q)for p in $(BUILD_PROJECTS); do \
$(LIST_VCS_FILES_SH) -znf $$p | sed -z "s/^/$$p\//" | \ $(LIST_VCS_FILES_SH) -znf $$p | sed -z "s/^/$$p\//" | \
xargs -0 realpath -q ;\ xargs -0 realpath -q ;\
done done
$(TEXT_FILES_CACHE): $(TEXT_FILES_CACHE):
@make -s text-files-update $(Q)make -s text-files-update
text-files-update: text-files-update:
make -s --no-print-directory list-files | tr '\n' '\0' | xargs -0 file -N | sed "/:.*text/I !d; s/:.*//" > $(TEXT_FILES_CACHE).tmp make -s --no-print-directory list-files | tr '\n' '\0' | xargs -0 file -N | sed "/:.*text/I !d; s/:.*//" > $(TEXT_FILES_CACHE).tmp
mv $(TEXT_FILES_CACHE).tmp $(TEXT_FILES_CACHE) mv $(TEXT_FILES_CACHE).tmp $(TEXT_FILES_CACHE)
text-files-update-all: text-files-update-all:
@PROJECTS_TXT= make text-files-update $(Q)PROJECTS_TXT= make text-files-update
text-files-list list-text-files: | $(TEXT_FILES_CACHE) text-files-list list-text-files: | $(TEXT_FILES_CACHE)
@cat $(TEXT_FILES_CACHE) $(Q)cat $(TEXT_FILES_CACHE)
text-files-list-0 list-text-files-0: | $(TEXT_FILES_CACHE) text-files-list-0 list-text-files-0: | $(TEXT_FILES_CACHE)
@cat $(TEXT_FILES_CACHE) | tr '\n' '\0' $(Q)cat $(TEXT_FILES_CACHE) | tr '\n' '\0'
cloc: cloc:
for p in $(GIT_PROJECTS); do \ for p in $(GIT_PROJECTS); do \
@ -334,7 +334,7 @@ git-clone-%: $(SSH_WRAPPER_SH)
$(PGIT_SH_CLONE_DEFAULT) $(PGIT_SH_CLONE_DEFAULT)
git-show-non-master-branches: git-show-non-master-branches:
@$(PGIT_SH) branch 2>&1 | \ $(Q)$(PGIT_SH) branch 2>&1 | \
sed '/^#\|^*/!d; s/.*git -C //; s/ *branch *//; s/ *\* *//' | \ sed '/^#\|^*/!d; s/.*git -C //; s/ *branch *//; s/ *\* *//' | \
while read p; do \ while read p; do \
read b ;\ read b ;\
@ -344,7 +344,7 @@ git-show-non-master-branches:
done done
git-show-pushable-master-branches: git-show-pushable-master-branches:
@for p in $(BUILD_PROJECTS); do \ $(Q)for p in $(BUILD_PROJECTS); do \
if git -C $$p log --oneline origin/master.. | grep . >/dev/null; then \ if git -C $$p log --oneline origin/master.. | grep . >/dev/null; then \
echo ======================= $$p ;\ echo ======================= $$p ;\
git -C $$p log --oneline origin/master.. ;\ git -C $$p log --oneline origin/master.. ;\

View file

@ -198,7 +198,7 @@ pkg-upload-local.dist: pkgbuild.dist
touch $@ touch $@
pkginstall.dist: pkg-build.dist pkginstall.dist: pkg-build.dist
@set -e; for p in $(BINARY_RPM); do \ $(Q)set -e; for p in $(BINARY_RPM); do \
if ! $(RPM) -q `basename $$p | $(SED) "s/[._]$(RPM_ARCH)\.$(RPM_SUFFIX)//; s/_\([0-9.-]\+\)$$/-\1/"` > /dev/null 2>&1 ; then \ if ! $(RPM) -q `basename $$p | $(SED) "s/[._]$(RPM_ARCH)\.$(RPM_SUFFIX)//; s/_\([0-9.-]\+\)$$/-\1/"` > /dev/null 2>&1 ; then \
echo + installing $$p ;\ echo + installing $$p ;\
sudo $(RPM) -U $$(realpath $$p); \ sudo $(RPM) -U $$(realpath $$p); \
@ -214,7 +214,7 @@ pkginstall.dist: pkg-build.dist
# touch $@ # touch $@
pkguninstall.dist: pkguninstall.dist:
@set -e; for s in devel run; do \ $(Q)set -e; for s in devel run; do \
if $(RPM) -q $(RPM_PROJECT)-$$s > /dev/null 2>&1 ; then \ if $(RPM) -q $(RPM_PROJECT)-$$s > /dev/null 2>&1 ; then \
echo + removing $(RPM_PROJECT)-$$s ;\ echo + removing $(RPM_PROJECT)-$$s ;\
sudo $(RPM) -e $(RPM_PROJECT)-$$s --nodeps --allmatches; \ sudo $(RPM) -e $(RPM_PROJECT)-$$s --nodeps --allmatches; \
@ -312,13 +312,13 @@ md5:
echo $(HASH) > HASH echo $(HASH) > HASH
pkg-next-build: pkg-next-build:
@$(increase_build_number) $(Q)$(increase_build_number)
try-reinstall: try-reinstall:
$(check_reinstall_old) $(check_reinstall_old)
pkg-update-release: pkg-update-release:
@if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \ $(Q)if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
echo + source was modified ;\ echo + source was modified ;\
$(increase_build_number) ;\ $(increase_build_number) ;\
elif ! $(check_reinstall_old); then \ elif ! $(check_reinstall_old); then \
@ -327,7 +327,7 @@ pkg-update-release:
fi fi
pkg-check-release: pkg-check-release:
@if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \ $(Q)if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
echo + source was modified ;\ echo + source was modified ;\
else \ else \
echo + source is unmodified ;\ echo + source is unmodified ;\

View file

@ -48,7 +48,7 @@ distclean: clean
# -- phony targets # -- phony targets
checkroot: checkroot:
@if [ "$(CHECK_ROOT)" = true -o "$(CHECK_ROOT)" = TRUE ] ; then \ $(Q)if [ "$(CHECK_ROOT)" = true -o "$(CHECK_ROOT)" = TRUE ] ; then \
echo "Error: You can only do this if either" ;\ echo "Error: You can only do this if either" ;\
echo " a) you are user \"root\"" ;\ echo " a) you are user \"root\"" ;\
echo " b) the Makefile variable CHECK_ROOT does not contain \"true\" as value." ;\ echo " b) the Makefile variable CHECK_ROOT does not contain \"true\" as value." ;\
@ -235,11 +235,11 @@ ifneq ($(TARGET),mingw)
echo-ldd: echo-ldd:
ifneq ($(wildcard *.so),) ifneq ($(wildcard *.so),)
@echo "======= libraries:" @echo "======= libraries:"
@for o in *.so; do echo "------- $$o"; ldd $$o; done $(Q)for o in *.so; do echo "------- $$o"; ldd $$o; done
endif endif
ifneq ($(EXE_PATH),) ifneq ($(EXE_PATH),)
@echo "======= executables:" @echo "======= executables:"
@for o in $(EXE_PATH); do echo "------- $$o"; ldd $$o; done $(Q)for o in $(EXE_PATH); do echo "------- $$o"; ldd $$o; done
endif endif
endif endif
@ -338,7 +338,7 @@ $(PLUGIN) $(PLUGIN_LIB):
define check_not_empty define check_not_empty
check_not_empty_$(1): check_not_empty_$(1):
@if [ -z "$($(1))" ]; then \ $(Q)if [ -z "$($(1))" ]; then \
echo "$(1) is undefined" >&2 ;\ echo "$(1) is undefined" >&2 ;\
exit 1 ;\ exit 1 ;\
fi fi
@ -391,7 +391,7 @@ $$(TOPDIR)/dir_install_$(1).done:
touch $$@ touch $$@
$$(BUILD_$(1)DIR)/%: % | $$(TOPDIR)/dir_build_$(1).done $$(BUILD_$(1)DIR)/%: % | $$(TOPDIR)/dir_build_$(1).done
@if [ ! $$< -ef $$@ -a "`echo $$< | $(SED) 's/\..*//'`" != local ]; then \ $(Q)if [ ! $$< -ef $$@ -a "`echo $$< | $(SED) 's/\..*//'`" != local ]; then \
echo $(BIN_INSTALL) -D -p -m $($(1)MODE) $$< $$@ ;\ echo $(BIN_INSTALL) -D -p -m $($(1)MODE) $$< $$@ ;\
$(BIN_INSTALL) -D -p -m $($(1)MODE) $$< $$@ ;\ $(BIN_INSTALL) -D -p -m $($(1)MODE) $$< $$@ ;\
$(RM) -f $$(TOPDIR)/dirs-*.done ;\ $(RM) -f $$(TOPDIR)/dirs-*.done ;\
@ -427,7 +427,7 @@ $(INSTALLED_PROFILE_PATH_SCRIPT): $(TOPDIR)/profiledir.done
$(INSTALL) -p -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@ $(INSTALL) -p -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@
find: find:
@bash $(JWB_SCRIPT_DIR)/scm.sh ls-files $(Q)bash $(JWB_SCRIPT_DIR)/scm.sh ls-files
collect: collect:
bash $(JWB_SCRIPT_DIR)/collect-installed-pkg-changes.sh -t $(TOPDIR) bash $(JWB_SCRIPT_DIR)/collect-installed-pkg-changes.sh -t $(TOPDIR)

View file

@ -90,7 +90,7 @@ topdir.mrproper: topdir.distclean
topdir.install: prefix.done $(INSTALLED_TOPDIR_FILES) topdir.install: prefix.done $(INSTALLED_TOPDIR_FILES)
do-install-links: do-install-links:
@@cwd=$(shell $(PWD)); \ $(Q)@cwd=$(shell $(PWD)); \
echo "o in $(INSTALL_LIBDIR):" ;\ echo "o in $(INSTALL_LIBDIR):" ;\
find lib -name '*.so' -o -name '*.so.*' -o -name '*.a' -o -name '*.dll' | \ find lib -name '*.so' -o -name '*.so.*' -o -name '*.a' -o -name '*.dll' | \
$(SED) 's%^\./%%' | \ $(SED) 's%^\./%%' | \
@ -176,7 +176,7 @@ $(GIT_DESCR): $(PROJECT_DESCR_FILE)
mv $@.tmp $@ mv $@.tmp $@
git-init.done: git-init.done:
@if [ -e .git ]; then \ $(Q)if [ -e .git ]; then \
echo $(TOPDIR)/.git already exists, not running git init ;\ echo $(TOPDIR)/.git already exists, not running git init ;\
else \ else \
@echo git init ;\ @echo git init ;\
@ -189,7 +189,7 @@ prefix.done:
touch $@ touch $@
echo-build-deps: echo-build-deps:
@echo $(call proj_query, required-os-pkg --flavours "build" $(PROJECT)) $(Q)echo $(call proj_query, required-os-pkg --flavours "build" $(PROJECT))
git-ssh-%: git-ssh-%:
bash -c "`git remote get-url --push $* | sed 's|ssh://||; s|\([^/]\+\)/\(.*\)|LC_CDPATH=/\2 ssh -o SendEnv=LC_CDPATH \1|'`" bash -c "`git remote get-url --push $* | sed 's|ssh://||; s|\([^/]\+\)/\(.*\)|LC_CDPATH=/\2 ssh -o SendEnv=LC_CDPATH \1|'`"
@ -221,7 +221,7 @@ pkg-install-testbuild-deps:
$(PKG_MANAGER_SH) install $(DASH_Y) $(BASE_PKGS) $(shell $(proj_query_cmd) pkg-requires --delimiter=' ' --no-version build,run,release $(PROJECT)) $(PKG_MANAGER_SH) install $(DASH_Y) $(BASE_PKGS) $(shell $(proj_query_cmd) pkg-requires --delimiter=' ' --no-version build,run,release $(PROJECT))
echo-hash: echo-hash:
@/bin/bash $(PKG_SH_EXE) hash $(Q)/bin/bash $(PKG_SH_EXE) hash
recache-vars: recache-vars:
rm -f $(TOPDIR)/make clean-cache cache rm -f $(TOPDIR)/make clean-cache cache