executable.mk revision d3624d5f4850e4cb0676f4a9897fe77524403b8c
1# We don't automatically set up rules to build executables for both
2# TARGET_ARCH and TARGET_2ND_ARCH.
3# By default, an executable is built for TARGET_ARCH.
4# To build it for TARGET_2ND_ARCH in a 64bit product, use "LOCAL_MULTILIB := 32"
5# To build it for both set LOCAL_MULTILIB := both and specify
6# LOCAL_MODULE_PATH_32 and LOCAL_MODULE_PATH_64 or LOCAL_MODULE_STEM_32 and
7# LOCAL_MODULE_STEM_64
8
9include $(BUILD_SYSTEM)/multilib.mk
10
11ifeq ($(my_module_multilib),both)
12ifeq ($(LOCAL_MODULE_PATH_32)$(LOCAL_MODULE_STEM_32),)
13$(error $(LOCAL_PATH): LOCAL_MODULE_STEM_32 or LOCAL_MODULE_PATH_32 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE))
14endif
15ifeq ($(LOCAL_MODULE_PATH_64)$(LOCAL_MODULE_STEM_64),)
16$(error $(LOCAL_PATH): LOCAL_MODULE_STEM_64 or LOCAL_MODULE_PATH_64 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE))
17endif
18else #!LOCAL_MULTILIB == both
19LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true
20endif
21
22# if TARGET_PREFER_32_BIT is set, try to build 32-bit first
23ifdef TARGET_2ND_ARCH
24ifeq ($(TARGET_PREFER_32_BIT),true)
25LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
26else
27LOCAL_2ND_ARCH_VAR_PREFIX :=
28endif
29endif
30
31my_skip_non_preferred_arch :=
32
33# check if preferred arch is supported
34include $(BUILD_SYSTEM)/module_arch_supported.mk
35ifeq ($(my_module_arch_supported),true)
36# first arch is supported
37include $(BUILD_SYSTEM)/executable_internal.mk
38ifneq ($(my_module_multilib),both)
39my_skip_non_preferred_arch := true
40endif
41endif
42
43# check if preferred arch was not supported or asked to build both
44ifndef my_skip_non_preferred_arch
45ifdef TARGET_2ND_ARCH
46
47# check if the non-preferred arch is the primary or secondary
48ifeq ($(TARGET_PREFER_32_BIT),true)
49LOCAL_2ND_ARCH_VAR_PREFIX :=
50else
51LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
52endif
53
54# check if non-preferred arch is supported
55include $(BUILD_SYSTEM)/module_arch_supported.mk
56ifeq ($(my_module_arch_supported),true)
57# non-preferred arch is supported
58OVERRIDE_BUILT_MODULE_PATH :=
59LOCAL_BUILT_MODULE :=
60LOCAL_INSTALLED_MODULE :=
61LOCAL_MODULE_STEM :=
62LOCAL_BUILT_MODULE_STEM :=
63LOCAL_INSTALLED_MODULE_STEM :=
64LOCAL_INTERMEDIATE_TARGETS :=
65include $(BUILD_SYSTEM)/executable_internal.mk
66endif
67endif # TARGET_2ND_ARCH
68endif # !my_skip_non_preferred_arch || LOCAL_MULTILIB
69LOCAL_2ND_ARCH_VAR_PREFIX :=
70LOCAL_NO_2ND_ARCH_MODULE_SUFFIX :=
71
72my_module_arch_supported :=
73