Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 1 | ########################################################### |
| 2 | ## Standard rules for building an executable file. |
| 3 | ## |
| 4 | ## Additional inputs from base_rules.make: |
| 5 | ## None. |
| 6 | ########################################################### |
| 7 | |
Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 8 | ifeq ($(strip $(LOCAL_MODULE_CLASS)),) |
| 9 | LOCAL_MODULE_CLASS := EXECUTABLES |
| 10 | endif |
| 11 | ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),) |
Dan Willemsen | 057aaea | 2015-08-14 12:59:50 -0700 | [diff] [blame] | 12 | LOCAL_MODULE_SUFFIX := $($(my_prefix)EXECUTABLE_SUFFIX) |
Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 13 | endif |
| 14 | |
Dan Willemsen | 893bebc | 2018-01-29 16:18:40 -0800 | [diff] [blame] | 15 | ifdef host-executable-hook |
Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 16 | $(call host-executable-hook) |
Dan Willemsen | 893bebc | 2018-01-29 16:18:40 -0800 | [diff] [blame] | 17 | endif |
Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 18 | |
| 19 | skip_build_from_source := |
| 20 | ifdef LOCAL_PREBUILT_MODULE_FILE |
| 21 | ifeq (,$(call if-build-from-source,$(LOCAL_MODULE),$(LOCAL_PATH))) |
| 22 | include $(BUILD_SYSTEM)/prebuilt_internal.mk |
| 23 | skip_build_from_source := true |
| 24 | endif |
| 25 | endif |
| 26 | |
| 27 | ifndef skip_build_from_source |
| 28 | |
| 29 | include $(BUILD_SYSTEM)/binary.mk |
| 30 | |
Dan Willemsen | 057aaea | 2015-08-14 12:59:50 -0700 | [diff] [blame] | 31 | my_host_libprofile_rt := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)LIBPROFILE_RT) |
Dan Albert | 343ed67 | 2015-01-25 16:20:57 -0800 | [diff] [blame] | 32 | $(LOCAL_BUILT_MODULE): PRIVATE_HOST_LIBPROFILE_RT := $(my_host_libprofile_rt) |
| 33 | |
Dan Willemsen | 7fe992c | 2016-03-02 13:54:51 -0800 | [diff] [blame] | 34 | my_libdir := $(notdir $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_SHARED_LIBRARIES)) |
| 35 | ifeq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS) |
yangbill | 59c616a | 2018-05-07 06:08:53 +0000 | [diff] [blame] | 36 | $(LOCAL_BUILT_MODULE): PRIVATE_RPATHS := ../../$(my_libdir) ../../../$(my_libdir) |
Dan Willemsen | 7fe992c | 2016-03-02 13:54:51 -0800 | [diff] [blame] | 37 | else |
| 38 | $(LOCAL_BUILT_MODULE): PRIVATE_RPATHS := ../$(my_libdir) $(my_libdir) |
| 39 | endif |
| 40 | my_libdir := |
| 41 | |
Colin Cross | af7ac39 | 2022-11-09 15:52:56 -0800 | [diff] [blame] | 42 | my_crtbegin := |
| 43 | my_crtend := |
| 44 | my_libcrt_builtins := |
| 45 | ifdef USE_HOST_MUSL |
| 46 | my_crtbegin := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_OBJECT_libc_musl_crtbegin_dynamic) |
| 47 | my_crtend := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_OBJECT_libc_musl_crtend) |
| 48 | my_libcrt_builtins := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)LIBCRT_BUILTINS) |
| 49 | $(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS += -Wl,--no-dynamic-linker |
| 50 | endif |
| 51 | |
| 52 | $(LOCAL_BUILT_MODULE): PRIVATE_CRTBEGIN := $(my_crtbegin) |
| 53 | $(LOCAL_BUILT_MODULE): PRIVATE_CRTEND := $(my_crtend) |
| 54 | $(LOCAL_BUILT_MODULE): PRIVATE_LIBCRT_BUILTINS := $(my_libcrt_builtins) |
| 55 | $(LOCAL_BUILT_MODULE): $(my_crtbegin) $(my_crtend) $(my_libcrt_builtins) |
| 56 | |
Dan Willemsen | c5b7c4f | 2019-06-12 05:59:53 +0000 | [diff] [blame] | 57 | $(LOCAL_BUILT_MODULE): $(all_objects) $(all_libraries) $(CLANG_CXX) |
Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 58 | $(transform-host-o-to-executable) |
| 59 | |
Wei Li | 0762f5f | 2024-06-17 14:32:45 -0700 | [diff] [blame] | 60 | $(if $(my_register_name),$(eval ALL_MODULES.$(my_register_name).MAKE_MODULE_TYPE:=HOST_EXECUTABLE)) |
| 61 | |
Ying Wang | 6feb6d5 | 2014-04-17 10:03:35 -0700 | [diff] [blame] | 62 | endif # skip_build_from_source |