executable_prefer_symlink.mk revision cf331d931d4d254f1bccb18c27e675b41f764890
1# include this makefile to create the LOCAL_MODULE symlink to the primary version binary.
2# but this requires the primary version name specified via LOCAL_MODULE_STEM_32 or LOCAL_MODULE_STEM_64,
3# and different with the LOCAL_MODULE value
4#
5# Note: now only limited to the binaries that will be installed under system/bin directory
6
7# Create link to the one used depending on the target
8# configuration. Note that we require the TARGET_IS_64_BIT
9# check because 32 bit targets may not define TARGET_PREFER_32_BIT_APPS
10# et al. since those variables make no sense in that context.
11
12ifneq ($(LOCAL_IS_HOST_MODULE),true)
13  my_symlink := $(addprefix $(TARGET_OUT)/bin/, $(LOCAL_MODULE))
14  ifeq ($(TARGET_IS_64_BIT),true)
15    ifneq ($(TARGET_PREFER_32_BIT_APPS),true)
16$(my_symlink): PRIVATE_SRC_BINARY_NAME := $(LOCAL_MODULE_STEM_64)
17    else
18$(my_symlink): PRIVATE_SRC_BINARY_NAME := $(LOCAL_MODULE_STEM_32)
19    endif
20  else
21$(my_symlink): PRIVATE_SRC_BINARY_NAME := $(LOCAL_MODULE_STEM_32)
22  endif
23else
24  my_symlink := $(addprefix $(HOST_OUT)/bin/, $(LOCAL_MODULE))
25  ifneq ($(HOST_PREFER_32_BIT),true)
26$(my_symlink): PRIVATE_SRC_BINARY_NAME := $(LOCAL_MODULE_STEM_64)
27  else
28$(my_symlink): PRIVATE_SRC_BINARY_NAME := $(LOCAL_MODULE_STEM_32)
29  endif
30endif
31
32$(my_symlink): $(LOCAL_INSTALLED_MODULE) $(LOCAL_MODULE_MAKEFILE)
33	@echo "Symlink: $@ -> $(PRIVATE_SRC_BINARY_NAME)"
34	@mkdir -p $(dir $@)
35	@rm -rf $@
36	$(hide) ln -sf $(PRIVATE_SRC_BINARY_NAME) $@
37
38# We need this so that the installed files could be picked up based on the
39# local module name
40ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(my_symlink)
41
42# Create the symlink when you run mm/mmm or "make <module_name>"
43$(LOCAL_MODULE) : $(my_symlink)
44
45my_symlink :=
46