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 9 my_prefix := TARGET_ 10 include $(BUILD_SYSTEM)/multilib.mk 11 12 ifeq ($(my_module_multilib),both) 13 ifeq ($(LOCAL_MODULE_PATH_32)$(LOCAL_MODULE_STEM_32),) 14 $(error $(LOCAL_PATH): LOCAL_MODULE_STEM_32 or LOCAL_MODULE_PATH_32 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE)) 15 endif 16 ifeq ($(LOCAL_MODULE_PATH_64)$(LOCAL_MODULE_STEM_64),) 17 $(error $(LOCAL_PATH): LOCAL_MODULE_STEM_64 or LOCAL_MODULE_PATH_64 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE)) 18 endif 19 else #!LOCAL_MULTILIB == both 20 LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true 21 endif 22 23 # if TARGET_PREFER_32_BIT_EXECUTABLES is set, try to build 32-bit first 24 ifdef TARGET_2ND_ARCH 25 ifeq ($(TARGET_PREFER_32_BIT_EXECUTABLES),true) 26 LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) 27 else 28 LOCAL_2ND_ARCH_VAR_PREFIX := 29 endif 30 endif 31 32 my_skip_non_preferred_arch := 33 34 # check if preferred arch is supported 35 include $(BUILD_SYSTEM)/module_arch_supported.mk 36 ifeq ($(my_module_arch_supported),true) 37 # first arch is supported 38 include $(BUILD_SYSTEM)/executable_internal.mk 39 ifneq ($(my_module_multilib),both) 40 my_skip_non_preferred_arch := true 41 endif 42 endif 43 44 # check if preferred arch was not supported or asked to build both 45 ifndef my_skip_non_preferred_arch 46 ifdef TARGET_2ND_ARCH 47 48 # check if the non-preferred arch is the primary or secondary 49 ifeq ($(TARGET_PREFER_32_BIT_EXECUTABLES),true) 50 LOCAL_2ND_ARCH_VAR_PREFIX := 51 else 52 LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) 53 endif 54 55 # check if non-preferred arch is supported 56 include $(BUILD_SYSTEM)/module_arch_supported.mk 57 ifeq ($(my_module_arch_supported),true) 58 # non-preferred arch is supported 59 OVERRIDE_BUILT_MODULE_PATH := 60 LOCAL_BUILT_MODULE := 61 LOCAL_INSTALLED_MODULE := 62 LOCAL_MODULE_STEM := 63 LOCAL_BUILT_MODULE_STEM := 64 LOCAL_INSTALLED_MODULE_STEM := 65 LOCAL_INTERMEDIATE_TARGETS := 66 include $(BUILD_SYSTEM)/executable_internal.mk 67 endif 68 endif # TARGET_2ND_ARCH 69 endif # !my_skip_non_preferred_arch || LOCAL_MULTILIB 70 LOCAL_2ND_ARCH_VAR_PREFIX := 71 LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := 72 73 my_module_arch_supported := 74