7e57b8ca57
This is mostly the same as the existing 2ND_HOST / HOST_CROSS support.
The interesting thing I did here was make x86 the 'first' architecture,
and x86_64 the second. This way LOCAL_MULTILIB := first defaults to
32-bit windows modules.
windows-x86/bin <- defaults to 32-bit executables
windows-x86/lib <- 32-bit libraries, like before
windows-x86/lib64 <- 64-bit libraries
windows-x86/obj <- 32-bit intermediates
windows-x86/obj64 <- 64-bit intermediates
Then modules are registered with the names:
host_cross_liblog <- 32-bit, like before
host_cross_liblog_64 <- 64-bit
Bug: 26957718
(cherry picked from commit 9ecbf83259
)
Change-Id: Iab2d36e20d7002568c3534e7781e9ac8ab21a4a9
107 lines
3.1 KiB
Makefile
107 lines
3.1 KiB
Makefile
LOCAL_IS_HOST_MODULE := true
|
|
my_prefix := HOST_
|
|
LOCAL_HOST_PREFIX :=
|
|
include $(BUILD_SYSTEM)/multilib.mk
|
|
|
|
ifndef LOCAL_MODULE_HOST_ARCH
|
|
ifndef my_module_multilib
|
|
ifeq ($(HOST_PREFER_32_BIT),true)
|
|
my_module_multilib := 32
|
|
else
|
|
# By default we only build host module for the first arch.
|
|
my_module_multilib := first
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(LOCAL_NO_FPIE),)
|
|
LOCAL_LDFLAGS += $(HOST_FPIE_FLAGS)
|
|
endif
|
|
|
|
ifeq ($(my_module_multilib),both)
|
|
ifeq ($(LOCAL_MODULE_PATH_32)$(LOCAL_MODULE_STEM_32),)
|
|
$(error $(LOCAL_PATH): LOCAL_MODULE_STEM_32 or LOCAL_MODULE_PATH_32 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE))
|
|
endif
|
|
ifeq ($(LOCAL_MODULE_PATH_64)$(LOCAL_MODULE_STEM_64),)
|
|
$(error $(LOCAL_PATH): LOCAL_MODULE_STEM_64 or LOCAL_MODULE_PATH_64 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE))
|
|
endif
|
|
else #!LOCAL_MULTILIB == both
|
|
LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true
|
|
endif
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
|
|
|
ifeq ($(my_module_arch_supported),true)
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
endif
|
|
|
|
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_INTERMEDIATE_TARGETS :=
|
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
endif
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
endif # HOST_2ND_ARCH
|
|
|
|
ifdef HOST_CROSS_OS
|
|
my_prefix := HOST_CROSS_
|
|
LOCAL_HOST_PREFIX := $(my_prefix)
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
|
ifeq ($(my_module_arch_supported),true)
|
|
# Build for Windows
|
|
OVERRIDE_BUILT_MODULE_PATH :=
|
|
# we don't want others using the cross compiled version
|
|
saved_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
|
|
saved_LOCAL_INSTALLED_MODULE := $(LOCAL_INSTALLED_MODULE)
|
|
saved_LOCAL_LDFLAGS := $(LOCAL_LDFLAGS)
|
|
LOCAL_BUILT_MODULE :=
|
|
LOCAL_INSTALLED_MODULE :=
|
|
LOCAL_INTERMEDIATE_TARGETS :=
|
|
|
|
ifeq ($(LOCAL_NO_FPIE),)
|
|
LOCAL_LDFLAGS += $(HOST_CROSS_FPIE_FLAGS)
|
|
endif
|
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
LOCAL_LDFLAGS := $(saved_LOCAL_LDFLAGS)
|
|
LOCAL_BUILT_MODULE := $(saved_LOCAL_BUILT_MODULE)
|
|
LOCAL_INSTALLED_MODULE := $(saved_LOCAL_INSTALLED_MODULE)
|
|
endif
|
|
|
|
ifdef HOST_CROSS_2ND_ARCH
|
|
LOCAL_2ND_ARCH_VAR_PREFIX := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
|
ifeq ($(my_module_arch_supported),true)
|
|
OVERRIDE_BUILT_MODULE_PATH :=
|
|
# we don't want others using the cross compiled version
|
|
saved_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
|
|
saved_LOCAL_INSTALLED_MODULE := $(LOCAL_INSTALLED_MODULE)
|
|
saved_LOCAL_LDFLAGS := $(LOCAL_LDFLAGS)
|
|
LOCAL_BUILT_MODULE :=
|
|
LOCAL_INSTALLED_MODULE :=
|
|
LOCAL_INTERMEDIATE_TARGETS :=
|
|
|
|
ifeq ($(LOCAL_NO_FPIE),)
|
|
LOCAL_LDFLAGS += $(HOST_CROSS_FPIE_FLAGS)
|
|
endif
|
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
LOCAL_LDFLAGS := $(saved_LOCAL_LDFLAGS)
|
|
LOCAL_BUILT_MODULE := $(saved_LOCAL_BUILT_MODULE)
|
|
LOCAL_INSTALLED_MODULE := $(saved_LOCAL_INSTALLED_MODULE)
|
|
endif
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
endif
|
|
LOCAL_HOST_PREFIX :=
|
|
endif
|
|
|
|
LOCAL_NO_2ND_ARCH_MODULE_SUFFIX :=
|
|
my_module_arch_supported :=
|