module_arch_supported.mk revision 859ac3406453b157b043e19f49018022346ffb6e
1###########################################################
2## Determine if a module can be built for an arch
3##
4## Inputs from module makefile:
5## my_prefix   TARGET_ or HOST_
6## my_module_multilib
7## LOCAL_MODULE_$(my_prefix)ARCH
8## LOCAL_MODULE_$(my_prefix)ARCH_WARN
9## LOCAL_MODULE_UNSUPPORTED_$(my_prefix)ARCH
10## LOCAL_MODULE_UNSUPPORTED_$(my_prefix)ARCH_WARN
11## LOCAL_IS_HOST_MODULE
12## LOCAL_MODULE_HOST_OS
13##
14## Inputs from build system:
15## $(my_prefix)IS_64_BIT
16## LOCAL_2ND_ARCH_VAR_PREFIX
17##
18## Outputs:
19## my_module_arch_supported := (true|false)
20###########################################################
21
22my_module_arch_supported := true
23
24ifeq ($(my_module_multilib),none)
25my_module_arch_supported := false
26endif
27
28ifeq ($(LOCAL_2ND_ARCH_VAR_PREFIX),)
29ifeq ($($(my_prefix)IS_64_BIT)|$(my_module_multilib),true|32)
30my_module_arch_supported := false
31else ifeq ($($(my_prefix)IS_64_BIT)|$(my_module_multilib),|64)
32my_module_arch_supported := false
33endif
34else # LOCAL_2ND_ARCH_VAR_PREFIX
35ifeq ($(my_module_multilib),first)
36my_module_arch_supported := false
37else ifeq ($(my_module_multilib),64)
38my_module_arch_supported := false
39endif
40endif # LOCAL_2ND_ARCH_VAR_PREFIX
41
42ifneq (,$(LOCAL_MODULE_$(my_prefix)ARCH))
43ifeq (,$(filter $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_$(my_prefix)ARCH)))
44my_module_arch_supported := false
45endif
46endif
47
48ifneq (,$(LOCAL_MODULE_$(my_prefix)ARCH_WARN))
49ifeq (,$(filter $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_$(my_prefix)ARCH_WARN)))
50my_module_arch_supported := false
51$(warning $(LOCAL_MODULE): architecture $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) not supported)
52endif
53endif
54
55ifneq (,$(filter $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_UNSUPPORTED_$(my_prefix)ARCH)))
56my_module_arch_supported := false
57endif
58
59ifneq (,$(filter $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_UNSUPPORTED_$(my_prefix)ARCH_WARN)))
60my_module_arch_supported := false
61$(warning $(LOCAL_MODULE): architecture $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) unsupported)
62endif
63
64ifdef LOCAL_IS_HOST_MODULE
65ifneq (,$(LOCAL_MODULE_HOST_OS))
66  ifeq (,$(filter $($(my_prefix)OS),$(LOCAL_MODULE_HOST_OS)))
67    my_module_arch_supported := false
68  endif
69else ifeq ($($(my_prefix)OS),windows)
70  # If LOCAL_MODULE_HOST_OS is empty, only linux and darwin are supported
71  my_module_arch_supported := false
72endif
73endif
74