19f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# vars for use by utils 29f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarempty := 39f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarspace := $(empty) $(empty) 49f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarcolon := $(empty):$(empty) 59f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarunderscore := $(empty)_$(empty) 69f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 79f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call match-word,w1,w2) 89f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# checks if w1 == w2 99f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# How it works 109f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# if (w1-w2 not empty or w2-w1 not empty) then not_match else match 119f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 129f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 139f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar#$(warning :$(1): :$(2): :$(subst $(1),,$(2)):) \ 149f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar#$(warning :$(2): :$(1): :$(subst $(2),,$(1)):) \ 159f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 169f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine match-word 179f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 189f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if $(or $(subst $(1),$(empty),$(2)),$(subst $(2),$(empty),$(1))),,true) \ 199f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 209f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 219f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 229f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call find-word-in-list,w,wlist) 239f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# finds an exact match of word w in word list wlist 249f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 259f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# How it works 269f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# fill wlist spaces with colon 279f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# wrap w with colon 289f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# search word w in list wl, if found match m, return stripped word w 299f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 309f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns stripped word or empty 319f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine find-word-in-list 329f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 339f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval wl:= $(colon)$(subst $(space),$(colon),$(strip $(2)))$(colon)) \ 349f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval w:= $(colon)$(strip $(1))$(colon)) \ 359f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval m:= $(findstring $(w),$(wl))) \ 369f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if $(m),$(1),) \ 379f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 389f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 399f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 409f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call match-word-in-list,w,wlist) 419f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# does an exact match of word w in word list wlist 429f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# How it works 439f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# if the input word is not empty 449f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# return output of an exact match of word w in wordlist wlist 459f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# else 469f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# return empty 479f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 489f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine match-word-in-list 499f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 509f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if $(strip $(1)), \ 519f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call match-word,$(call find-word-in-list,$(1),$(2)),$(strip $(1))), \ 529f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ) \ 539f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 549f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 559f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 569f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call match-prefix,p,delim,w/wlist) 579f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# matches prefix p in wlist using delimiter delim 589f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 599f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# How it works 609f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# trim the words in wlist w 619f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# if find-word-in-list returns not empty 629f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# return true 639f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# else 649f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# return empty 659f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 669f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine match-prefix 679f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 689f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval w := $(strip $(1)$(strip $(2)))) \ 699f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval text := $(patsubst $(w)%,$(1),$(3))) \ 709f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if $(call match-word-in-list,$(1),$(text)),true,) \ 719f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 729f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 739f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 749f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# ---- 759f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# The following utilities are meant for board platform specific 769f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# featurisation 779f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 789f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call get-vendor-board-platforms,v) 799f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns list of board platforms for vendor v 809f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine get-vendor-board-platforms 819f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$($(1)_BOARD_PLATFORMS) 829f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 839f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 849f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-board-platform,bp) 859f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 869f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-board-platform 879f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(call match-word,$(1),$(TARGET_BOARD_PLATFORM)) 889f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 899f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 909f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-not-board-platform,bp) 919f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 929f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-not-board-platform 939f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(if $(call match-word,$(1),$(TARGET_BOARD_PLATFORM)),,true) 949f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 959f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 969f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-board-platform-in-list,bpl) 979f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 989f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-board-platform-in-list 999f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(call match-word-in-list,$(TARGET_BOARD_PLATFORM),$(1)) 1009f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 1019f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 1029f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-vendor-board-platform,vendor) 1039f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 1049f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-vendor-board-platform 1059f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 1069f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call match-word-in-list,$(TARGET_BOARD_PLATFORM),\ 1079f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call get-vendor-board-platforms,$(1)) \ 1089f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ) \ 1099f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 1109f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 1119f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 1129f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-chipset-in-board-platform,chipset) 1139f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# does a prefix match of chipset in TARGET_BOARD_PLATFORM 1149f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# uses underscore as a delimiter 1159f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 1169f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# returns true or empty 1179f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-chipset-in-board-platform 1189f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(call match-prefix,$(1),$(underscore),$(TARGET_BOARD_PLATFORM)) 1199f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 1209f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 1219f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-chipset-prefix-in-board-platform,prefix) 1229f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# does a chipset prefix match in TARGET_BOARD_PLATFORM 1239f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# assumes '_' and 'a' as the delimiter to the chipset prefix 1249f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 1259f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# How it works 1269f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# if ($(prefix)_ or $(prefix)a match in board platform) 1279f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# return true 1289f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# else 1299f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# return empty 1309f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 1319f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-chipset-prefix-in-board-platform 1329f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 1339f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval delim_a := $(empty)a$(empty)) \ 1349f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if \ 1359f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(or \ 1369f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call match-prefix,$(1),$(delim_a),$(TARGET_BOARD_PLATFORM)), \ 1379f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call match-prefix,$(1),$(underscore),$(TARGET_BOARD_PLATFORM)), \ 1389f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ), \ 1399f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar true, \ 1409f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ) \ 1419f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 1429f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 1439f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 1449f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar#---- 1459f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# The following utilities are meant for Android Code Name 1469f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# specific featurisation 1479f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# 1489f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# refer http://source.android.com/source/build-numbers.html 1499f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# for code names and associated sdk versions 1509f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarCUPCAKE_SDK_VERSIONS := 3 1519f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarDONUT_SDK_VERSIONS := 4 1529f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarECLAIR_SDK_VERSIONS := 5 6 7 1539f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarFROYO_SDK_VERSIONS := 8 1549f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarGINGERBREAD_SDK_VERSIONS := 9 10 1559f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarHONEYCOMB_SDK_VERSIONS := 11 12 13 1569f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender TelkarICECREAM_SANDWICH_SDK_VERSIONS := 14 15 157369b42b2619b8d82dba1a96ba279564cd3fc913cIan MaundJELLY_BEAN_SDK_VERSIONS := 16 17 18 1589f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 15972da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng# $(call is-platform-sdk-version-at-least,version) 16072da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng# version is a numeric SDK_VERSION defined above 16172da6e2100213cb1cba46eedfc22d6d97f9a1377David Ngdefine is-platform-sdk-version-at-least 16272da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng$(strip \ 16372da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng $(if $(filter 1,$(shell echo "$$(( $(PLATFORM_SDK_VERSION) >= $(1) ))" )), \ 16472da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng true, \ 16572da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng ) \ 16672da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng) 16772da6e2100213cb1cba46eedfc22d6d97f9a1377David Ngendef 16872da6e2100213cb1cba46eedfc22d6d97f9a1377David Ng 1699f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-android-codename,codename) 1709f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# codename is one of cupcake,donut,eclair,froyo,gingerbread,icecream 1719f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# please refer the $(codename)_SDK_VERSIONS declared above 1729f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-android-codename 1739f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 1749f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if \ 1759f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call match-word-in-list,$(PLATFORM_SDK_VERSION),$($(1)_SDK_VERSIONS)), \ 1769f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar true, \ 1779f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ) \ 1789f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 1799f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 1809f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar 1819f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# $(call is-android-codename-in-list,cnlist) 1829f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar# cnlist is combination/list of android codenames 1839f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkardefine is-android-codename-in-list 1849f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar$(strip \ 1859f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval acn := $(empty)) \ 1869f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(foreach \ 1879f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar i,$(1),\ 1889f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(eval acn += \ 1899f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if \ 1909f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(call \ 1919f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar match-word-in-list,\ 1929f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(PLATFORM_SDK_VERSION),\ 1939f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $($(i)_SDK_VERSIONS)\ 1949f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ),\ 1959f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar true,\ 1969f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar )\ 1979f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar )\ 1989f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar ) \ 1999f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar $(if $(strip $(acn)),true,) \ 2009f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkar) 2019f04b596ac9772e7b38a92df4a7e653a0f3f3acdNagender Telkarendef 202