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