| Ying Wang | dd814bf | 2014-01-17 16:17:28 -0800 | [diff] [blame] | 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. | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 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 |  | 
| Dan Willemsen | 4c3a01f | 2020-01-29 13:24:21 -0800 | [diff] [blame] | 9 | ifdef LOCAL_IS_HOST_MODULE | 
|  | 10 | $(call pretty-error,BUILD_EXECUTABLE is incompatible with LOCAL_IS_HOST_MODULE. Use BUILD_HOST_EXECUTABLE instead.) | 
|  | 11 | endif | 
|  | 12 |  | 
| Evgenii Stepanov | 3632cc3 | 2015-06-11 13:57:10 -0700 | [diff] [blame] | 13 | my_skip_this_target := | 
| Ivan Krasin | 74b32b8 | 2015-09-18 11:54:43 -0700 | [diff] [blame] | 14 | ifneq ($(filter address,$(SANITIZE_TARGET)),) | 
| Evgenii Stepanov | 3632cc3 | 2015-06-11 13:57:10 -0700 | [diff] [blame] | 15 | ifeq (true,$(LOCAL_FORCE_STATIC_EXECUTABLE)) | 
|  | 16 | my_skip_this_target := true | 
|  | 17 | else ifeq (false, $(LOCAL_CLANG)) | 
|  | 18 | my_skip_this_target := true | 
| Andreas Gampe | 2114c5a | 2018-10-10 19:27:04 -0700 | [diff] [blame] | 19 | else ifeq (never, $(LOCAL_SANITIZE)) | 
|  | 20 | my_skip_this_target := true | 
| Evgenii Stepanov | 3632cc3 | 2015-06-11 13:57:10 -0700 | [diff] [blame] | 21 | endif | 
|  | 22 | endif | 
|  | 23 |  | 
|  | 24 | ifneq (true,$(my_skip_this_target)) | 
| Dan Willemsen | 1684b32 | 2016-07-25 16:03:53 -0700 | [diff] [blame] | 25 | $(call record-module-type,EXECUTABLE) | 
| Evgenii Stepanov | 3632cc3 | 2015-06-11 13:57:10 -0700 | [diff] [blame] | 26 |  | 
| Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 27 | my_prefix := TARGET_ | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 28 | include $(BUILD_SYSTEM)/multilib.mk | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 29 |  | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 30 | ifeq ($(my_module_multilib),both) | 
| Dan Willemsen | 7fe992c | 2016-03-02 13:54:51 -0800 | [diff] [blame] | 31 | ifneq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS) | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 32 | ifeq ($(LOCAL_MODULE_PATH_32)$(LOCAL_MODULE_STEM_32),) | 
|  | 33 | $(error $(LOCAL_PATH): LOCAL_MODULE_STEM_32 or LOCAL_MODULE_PATH_32 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE)) | 
|  | 34 | endif | 
|  | 35 | ifeq ($(LOCAL_MODULE_PATH_64)$(LOCAL_MODULE_STEM_64),) | 
|  | 36 | $(error $(LOCAL_PATH): LOCAL_MODULE_STEM_64 or LOCAL_MODULE_PATH_64 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE)) | 
|  | 37 | endif | 
| Dan Willemsen | 7fe992c | 2016-03-02 13:54:51 -0800 | [diff] [blame] | 38 | endif | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 39 | else #!LOCAL_MULTILIB == both | 
| Colin Cross | aee1e77 | 2014-02-04 11:16:16 -0800 | [diff] [blame] | 40 | LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 41 | endif | 
| Colin Cross | 8e40412 | 2014-02-06 14:45:37 -0800 | [diff] [blame] | 42 |  | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 43 | ifdef TARGET_2ND_ARCH | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 44 | LOCAL_2ND_ARCH_VAR_PREFIX := | 
|  | 45 | endif | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 46 |  | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 47 | my_skip_non_preferred_arch := | 
|  | 48 |  | 
|  | 49 | # check if preferred arch is supported | 
| Colin Cross | 8e40412 | 2014-02-06 14:45:37 -0800 | [diff] [blame] | 50 | include $(BUILD_SYSTEM)/module_arch_supported.mk | 
|  | 51 | ifeq ($(my_module_arch_supported),true) | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 52 | # first arch is supported | 
| Ying Wang | dd814bf | 2014-01-17 16:17:28 -0800 | [diff] [blame] | 53 | include $(BUILD_SYSTEM)/executable_internal.mk | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 54 | ifneq ($(my_module_multilib),both) | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 55 | my_skip_non_preferred_arch := true | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 56 | endif | 
|  | 57 | endif | 
|  | 58 |  | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 59 | # check if preferred arch was not supported or asked to build both | 
|  | 60 | ifndef my_skip_non_preferred_arch | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 61 | ifdef TARGET_2ND_ARCH | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 62 |  | 
| Colin Cross | 8e40412 | 2014-02-06 14:45:37 -0800 | [diff] [blame] | 63 | LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 64 |  | 
|  | 65 | # check if non-preferred arch is supported | 
| Colin Cross | 8e40412 | 2014-02-06 14:45:37 -0800 | [diff] [blame] | 66 | include $(BUILD_SYSTEM)/module_arch_supported.mk | 
|  | 67 | ifeq ($(my_module_arch_supported),true) | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 68 | # non-preferred arch is supported | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 69 | LOCAL_BUILT_MODULE := | 
|  | 70 | LOCAL_INSTALLED_MODULE := | 
| Colin Cross | e6e48f6 | 2014-03-21 12:29:32 -0700 | [diff] [blame] | 71 | LOCAL_INTERMEDIATE_TARGETS := | 
| Colin Cross | 8e40412 | 2014-02-06 14:45:37 -0800 | [diff] [blame] | 72 | include $(BUILD_SYSTEM)/executable_internal.mk | 
|  | 73 | endif | 
|  | 74 | endif # TARGET_2ND_ARCH | 
| Colin Cross | d3624d5 | 2014-04-10 12:28:56 -0700 | [diff] [blame] | 75 | endif # !my_skip_non_preferred_arch || LOCAL_MULTILIB | 
| Ying Wang | dd814bf | 2014-01-17 16:17:28 -0800 | [diff] [blame] | 76 | LOCAL_2ND_ARCH_VAR_PREFIX := | 
| Colin Cross | aee1e77 | 2014-02-04 11:16:16 -0800 | [diff] [blame] | 77 | LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := | 
| Colin Cross | 8e40412 | 2014-02-06 14:45:37 -0800 | [diff] [blame] | 78 |  | 
|  | 79 | my_module_arch_supported := | 
| Evgenii Stepanov | 3632cc3 | 2015-06-11 13:57:10 -0700 | [diff] [blame] | 80 |  | 
|  | 81 | endif |