diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2015-02-05 16:57:02 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2015-02-05 16:57:02 +0000 |
commit | 94e528f159e1e2308e93f767c49f788e28c26ddb (patch) | |
tree | 302201fa813f4f9445a4a53680e15c38459c5b88 /include/prereq.mk | |
parent | 12531a0f869a255860434c2ea3bcdf9e85929d46 (diff) | |
download | openwrt-94e528f159e1e2308e93f767c49f788e28c26ddb.tar.gz openwrt-94e528f159e1e2308e93f767c49f788e28c26ddb.tar.bz2 openwrt-94e528f159e1e2308e93f767c49f788e28c26ddb.zip |
include: add TestHostCommand and SetupHostCommand macros
Those macros allow testing various commands on the host system, also process the
prereq tests in the order they're declared.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 44269
Diffstat (limited to 'include/prereq.mk')
-rw-r--r-- | include/prereq.mk | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/include/prereq.mk b/include/prereq.mk index 45ee77e9e6..d3b73663e3 100644 --- a/include/prereq.mk +++ b/include/prereq.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2007 OpenWrt.org +# Copyright (C) 2006-2015 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -20,12 +20,16 @@ prereq: .SILENT: prereq endif +PREREQ_PREV= + +# 1: display name +# 2: error message define Require export PREREQ_CHECK=1 ifeq ($$(CHECK_$(1)),) prereq: prereq-$(1) - prereq-$(1): FORCE + prereq-$(1): $(if $(PREREQ_PREV),prereq-$(PREREQ_PREV)) FORCE echo -n "Checking '$(1)'... " if $(NO_TRACE_MAKE) -f $(firstword $(MAKEFILE_LIST)) check-$(1) >/dev/null 2>/dev/null; then \ echo 'ok.'; \ @@ -41,6 +45,8 @@ define Require .SILENT: prereq-$(1) check-$(1) .NOTPARALLEL: endif + + PREREQ_PREV=$(1) endef @@ -60,3 +66,41 @@ define RequireHeader $$(eval $$(call Require,$(1),$(2))) endef +define QuoteHostCommand +'$(subst ','"'"',$(strip $(1)))' +endef + +# 1: display name +# 2: failure message +# 3: test +define TestHostCommand + define Require/$(1) + ($(3)) >/dev/null 2>/dev/null + endef + + $$(eval $$(call Require,$(1),$(2))) +endef + +# 1: canonical name +# 2: failure message +# 3+: candidates +define SetupHostCommand + define Require/$(1) + for cmd in $(call QuoteHostCommand,$(3)) $(call QuoteHostCommand,$(4)) \ + $(call QuoteHostCommand,$(5)) $(call QuoteHostCommand,$(6)) \ + $(call QuoteHostCommand,$(7)) $(call QuoteHostCommand,$(8)); do \ + if [ -n "$$$$$$$$cmd" ]; then \ + bin="$$$$$$$$(PATH="$(subst $(space),:,$(filter-out $(STAGING_DIR_HOST)/%,$(subst :,$(space),$(PATH))))" \ + which "$$$$$$$${cmd%% *}")"; \ + if [ -x "$$$$$$$$bin" ] && eval "$$$$$$$$cmd" >/dev/null 2>/dev/null; then \ + mkdir -p "$(STAGING_DIR_HOST)/bin"; \ + ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \ + exit 0; \ + fi; \ + fi; \ + done; \ + exit 1 + endef + + $$(eval $$(call Require,$(1),$(if $(2),$(2),Missing $(1) command))) +endef |