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
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:
$(RM) -f /var/cores/core* /var/cores/vgcore* || exit 0
echo-pid:
@echo PID = $(PID)
$(Q)echo PID = $(PID)

View file

@ -10,6 +10,7 @@ MAKEFLAGS += -r
empty :=
space := $(empty) $(empty)
comma := ,
Q ?= @
# ----- executables
@ -528,6 +529,6 @@ doc-project:
$(BROWSER) $(JANWARE_URL_DOC_PROJECT)
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

View file

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

View file

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

View file

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

View file

@ -30,7 +30,7 @@ done.clean:
$(RM) -f *.done
$(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) "$<" "$@" ;\
$(INSTALL) -p -D -m $(TARGET_MODE) -o $(TARGET_OWNER) -g $(TARGET_GROUP) "$<" "$@" ;\
else \

View file

@ -4,15 +4,15 @@ ifndef LIST_FILES_MK_INCLUDED
LIST_FILES_MK_INCLUDED := true
list-files echo-files:
@$(LIST_VCS_FILES) -f
$(Q)$(LIST_VCS_FILES) -f
list-text-files echo-text-files:
@$(LIST_VCS_FILES) -ft
$(Q)$(LIST_VCS_FILES) -ft
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:
@$(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

View file

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

View file

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

View file

@ -18,6 +18,7 @@ PROJECTS_MAKEFILE_NAME := $(firstword $(MAKEFILE_LIST))
-include local.mk
JWBDIR ?= jw-pkg
Q ?= @
ifeq ($(origin PROJECTS_DIR_REMOTE_BASE),undefined)
ifneq ($(wildcard $(JWBDIR)),)
@ -63,7 +64,7 @@ all:
include $(PROJECTS_DIR_INCLUDE_MK)
$(PROJECTS_DIR_INCLUDE_MK): | $(JWBDIR)
@echo Provided $@
$(Q)echo Provided $@
$(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 pkg-rebuild-reinstall might be what you are looking for."
@echo
@exit 1
$(Q)exit 1
# --- build targets
@ -185,15 +185,15 @@ build-order-%: $(filter-out $(UNAVAILABLE_TARGETS),pull.done)
build-order: build-order-all
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:
@$(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:
@$(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:
@$(GET_OS_SH)
$(Q)$(GET_OS_SH)
echo-projects:
@echo $(PROJECTS)
@ -211,22 +211,22 @@ distclean: clean.text-files-cache
clean.text-files-cache:
rm -f $(TEXT_FILES_CACHE)
list-files:
@realpath PROJECTS_MAKEFILE_NAME
@for p in $(BUILD_PROJECTS); do \
$(Q)realpath PROJECTS_MAKEFILE_NAME
$(Q)for p in $(BUILD_PROJECTS); do \
$(LIST_VCS_FILES_SH) -znf $$p | sed -z "s/^/$$p\//" | \
xargs -0 realpath -q ;\
done
$(TEXT_FILES_CACHE):
@make -s text-files-update
$(Q)make -s 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
mv $(TEXT_FILES_CACHE).tmp $(TEXT_FILES_CACHE)
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)
@cat $(TEXT_FILES_CACHE)
$(Q)cat $(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:
for p in $(GIT_PROJECTS); do \
@ -334,7 +334,7 @@ git-clone-%: $(SSH_WRAPPER_SH)
$(PGIT_SH_CLONE_DEFAULT)
git-show-non-master-branches:
@$(PGIT_SH) branch 2>&1 | \
$(Q)$(PGIT_SH) branch 2>&1 | \
sed '/^#\|^*/!d; s/.*git -C //; s/ *branch *//; s/ *\* *//' | \
while read p; do \
read b ;\
@ -344,7 +344,7 @@ git-show-non-master-branches:
done
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 \
echo ======================= $$p ;\
git -C $$p log --oneline origin/master.. ;\

View file

@ -198,7 +198,7 @@ pkg-upload-local.dist: pkgbuild.dist
touch $@
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 \
echo + installing $$p ;\
sudo $(RPM) -U $$(realpath $$p); \
@ -214,7 +214,7 @@ pkginstall.dist: pkg-build.dist
# touch $@
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 \
echo + removing $(RPM_PROJECT)-$$s ;\
sudo $(RPM) -e $(RPM_PROJECT)-$$s --nodeps --allmatches; \
@ -312,13 +312,13 @@ md5:
echo $(HASH) > HASH
pkg-next-build:
@$(increase_build_number)
$(Q)$(increase_build_number)
try-reinstall:
$(check_reinstall_old)
pkg-update-release:
@if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
$(Q)if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
echo + source was modified ;\
$(increase_build_number) ;\
elif ! $(check_reinstall_old); then \
@ -327,7 +327,7 @@ pkg-update-release:
fi
pkg-check-release:
@if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
$(Q)if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
echo + source was modified ;\
else \
echo + source is unmodified ;\

View file

@ -48,7 +48,7 @@ distclean: clean
# -- phony targets
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 " a) you are user \"root\"" ;\
echo " b) the Makefile variable CHECK_ROOT does not contain \"true\" as value." ;\
@ -235,11 +235,11 @@ ifneq ($(TARGET),mingw)
echo-ldd:
ifneq ($(wildcard *.so),)
@echo "======= libraries:"
@for o in *.so; do echo "------- $$o"; ldd $$o; done
$(Q)for o in *.so; do echo "------- $$o"; ldd $$o; done
endif
ifneq ($(EXE_PATH),)
@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
@ -338,7 +338,7 @@ $(PLUGIN) $(PLUGIN_LIB):
define check_not_empty
check_not_empty_$(1):
@if [ -z "$($(1))" ]; then \
$(Q)if [ -z "$($(1))" ]; then \
echo "$(1) is undefined" >&2 ;\
exit 1 ;\
fi
@ -391,7 +391,7 @@ $$(TOPDIR)/dir_install_$(1).done:
touch $$@
$$(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) $$< $$@ ;\
$(BIN_INSTALL) -D -p -m $($(1)MODE) $$< $$@ ;\
$(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 $@
find:
@bash $(JWB_SCRIPT_DIR)/scm.sh ls-files
$(Q)bash $(JWB_SCRIPT_DIR)/scm.sh ls-files
collect:
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)
do-install-links:
@@cwd=$(shell $(PWD)); \
$(Q)@cwd=$(shell $(PWD)); \
echo "o in $(INSTALL_LIBDIR):" ;\
find lib -name '*.so' -o -name '*.so.*' -o -name '*.a' -o -name '*.dll' | \
$(SED) 's%^\./%%' | \
@ -176,7 +176,7 @@ $(GIT_DESCR): $(PROJECT_DESCR_FILE)
mv $@.tmp $@
git-init.done:
@if [ -e .git ]; then \
$(Q)if [ -e .git ]; then \
echo $(TOPDIR)/.git already exists, not running git init ;\
else \
@echo git init ;\
@ -189,7 +189,7 @@ prefix.done:
touch $@
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-%:
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))
echo-hash:
@/bin/bash $(PKG_SH_EXE) hash
$(Q)/bin/bash $(PKG_SH_EXE) hash
recache-vars:
rm -f $(TOPDIR)/make clean-cache cache