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