From 6feb6d5607ce86a446645564212043964628f540 Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Thu, 17 Apr 2014 10:03:35 -0700 Subject: Support host multilib build This change basically ported our target multilib to the host side. It supports 2 host build modes: x86 and x86_64 multilib build. For now you need to set "BUILD_HOST_64bit=true" to switch to x86_64 multilib build. Later we'll default to x86_64 build and have a flag to force 32-bit only build, which may be needed by SDK build. In host module definition, like in target ones, you can use the following LOCAL variables to set up multilib configuration: LOCAL_MULTILIB: can be "both", "first", "32" or "64". It also supports the same set of arch or 32-vs-64 specific LOCAL variables. By default, it builds only for the first arch. To keep path compatibility, in x86_64 build files are still output to out/host/linux-x86; Both 32-bit and 64-bit executables are in out/host/linux-86/bin; In x86_64 build 32-bit shared libraries are installed to out/host/linux-x86/lib32 and 64-bit shared libraries are installed to out/host/linux-x86/lib; 32-bit object files are output to out/host/linux-x86/obj32 and 64-bit object files are output to out/host/linux-x86/obj. Bug: 13751317 Change-Id: I6044f83b7db369a33e05209e8c588eb6dc83409f --- core/host_static_library.mk | 49 ++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 21 deletions(-) (limited to 'core/host_static_library.mk') diff --git a/core/host_static_library.mk b/core/host_static_library.mk index 7d9b375..ab3f16e 100644 --- a/core/host_static_library.mk +++ b/core/host_static_library.mk @@ -1,30 +1,37 @@ -########################################################### -## Standard rules for building a static library for the host. -## -## Additional inputs from base_rules.make: -## None. -## -## LOCAL_MODULE_SUFFIX will be set for you. -########################################################### +my_prefix := HOST_ +include $(BUILD_SYSTEM)/multilib.mk -ifeq ($(strip $(LOCAL_MODULE_CLASS)),) -LOCAL_MODULE_CLASS := STATIC_LIBRARIES -endif -ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),) -LOCAL_MODULE_SUFFIX := .a +ifndef my_module_multilib +# By default we only build host module for the first arch. +my_module_multilib := first endif -ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),) -$(error $(LOCAL_PATH): Cannot set module stem for a library) + +LOCAL_2ND_ARCH_VAR_PREFIX := +include $(BUILD_SYSTEM)/module_arch_supported.mk + +ifeq ($(my_module_arch_supported),true) +include $(BUILD_SYSTEM)/host_static_library_internal.mk endif -LOCAL_UNINSTALLABLE_MODULE := true -LOCAL_IS_HOST_MODULE := true +ifdef HOST_2ND_ARCH +LOCAL_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX) +include $(BUILD_SYSTEM)/module_arch_supported.mk +ifeq ($(my_module_arch_supported),true) +# Build for HOST_2ND_ARCH +OVERRIDE_BUILT_MODULE_PATH := +LOCAL_BUILT_MODULE := +LOCAL_INSTALLED_MODULE := +LOCAL_MODULE_STEM := +LOCAL_BUILT_MODULE_STEM := +LOCAL_INSTALLED_MODULE_STEM := +LOCAL_INTERMEDIATE_TARGETS := -include $(BUILD_SYSTEM)/binary.mk +include $(BUILD_SYSTEM)/host_static_library_internal.mk +endif +LOCAL_2ND_ARCH_VAR_PREFIX := +endif # HOST_2ND_ARCH -$(LOCAL_BUILT_MODULE): $(built_whole_libraries) -$(LOCAL_BUILT_MODULE): $(all_objects) - $(transform-host-o-to-static-lib) +my_module_arch_supported := ########################################################### ## Copy headers to the install tree -- cgit v1.1