+subdir_make_opts = \
+ -r -C $(1) \
+ BUILD_SUBDIR="$(1)" \
+ BUILD_VARIANT="$(4)"
+
+# 1: subdir
+# 2: target
+# 3: build type
+# 4: build variant
+log_make = \
+ $(if $(call debug,$(1),v),,@)+ \
+ $(if $(BUILD_LOG), \
+ set -o pipefail; \
+ mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \
+ $$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \
+ $(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt)
+
+ifdef CONFIG_AUTOREMOVE
+rebuild_check = \
+ @-$$(NO_TRACE_MAKE) $(subdir_make_opts) check-depends >/dev/null 2>/dev/null; \
+ $(if $(BUILD_LOG),mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \
+ $$(NO_TRACE_MAKE) $(if $(BUILD_LOG),-d) -q $(subdir_make_opts) .$(if $(3),$(3)-)$(2) \
+ > $(if $(BUILD_LOG),$(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/check-$(if $(3),$(3)-)$(2).txt,/dev/null) 2>&1 || \
+ $$(SUBMAKE) $(subdir_make_opts) clean-build >/dev/null 2>/dev/null
+
+endif
+