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
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich