Merge "Remove libportable from core_base.mk."
diff --git a/CleanSpec.mk b/CleanSpec.mk
index a3b1a2c..c764204 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -233,6 +233,9 @@
# Switching PRODUCT_RUNTIMES default for some devices
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
+# Switching to 32-bit-by-default host multilib build
+$(call add-clean-step, rm -rf $(HOST_OUT_INTERMEDIATES))
+
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
diff --git a/core/Makefile b/core/Makefile
index bd2f9a0..46b23f8 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1473,7 +1473,7 @@
INTERNAL_SDK_HOST_OS_NAME := $(HOST_OS)
endif
ifneq ($(HOST_OS),windows)
- INTERNAL_SDK_HOST_OS_NAME := $(INTERNAL_SDK_HOST_OS_NAME)-$(HOST_ARCH)
+ INTERNAL_SDK_HOST_OS_NAME := $(INTERNAL_SDK_HOST_OS_NAME)-$(SDK_HOST_ARCH)
endif
sdk_name := $(sdk_name)_$(INTERNAL_SDK_HOST_OS_NAME)
@@ -1500,7 +1500,7 @@
sdk_atree_files := \
$(atree_dir)/sdk.exclude.atree \
$(atree_dir)/sdk.atree \
- $(atree_dir)/sdk-$(HOST_OS)-$(HOST_ARCH).atree
+ $(atree_dir)/sdk-$(HOST_OS)-$(SDK_HOST_ARCH).atree
# development/build/sdk-android-<abi>.atree is used to differentiate
# between architecture models (e.g. ARMv5TE versus ARMv7) when copying
diff --git a/core/binary.mk b/core/binary.mk
index 253c42d..33f243b 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -744,6 +744,19 @@
asm_objects := $(asm_objects_S) $(asm_objects_s)
+# .asm for x86 needs to be compiled with yasm.
+ifeq (x86,$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
+asm_sources_asm := $(filter %.asm,$(my_src_files))
+ifneq ($(strip $(asm_sources_asm)),)
+asm_objects_asm := $(addprefix $(intermediates)/,$(asm_sources_asm:.asm=.o))
+$(asm_objects_asm): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.asm \
+ $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(transform-asm-to-o)
+
+asm_objects += $(asm_objects_asm)
+endif
+endif
+
####################################################
## Import includes
####################################################
diff --git a/core/clang/config.mk b/core/clang/config.mk
index 10b4d72..e751d79 100644
--- a/core/clang/config.mk
+++ b/core/clang/config.mk
@@ -6,11 +6,6 @@
WITHOUT_HOST_CLANG := true
endif
-# We don't have 64-bit host prebuilts yet.
-ifeq (true,$(HOST_IS_64_BIT))
-FORCE_BUILD_LLVM_COMPONENTS := true
-endif
-
LLVM_PREBUILTS_PATH := prebuilts/clang/$(BUILD_OS)-x86/host/3.5/bin
LLVM_PREBUILTS_HEADER_PATH := prebuilts/clang/$(BUILD_OS)-x86/host/3.5/lib/clang/3.5/include/
diff --git a/core/config.mk b/core/config.mk
index 7150380..47d01ea 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -367,6 +367,8 @@
BISON := prebuilts/misc/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/bison/bison
YACC := $(BISON) -d
+YASM := prebuilts/misc/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/yasm/yasm
+
DOXYGEN:= doxygen
AAPT := $(HOST_OUT_EXECUTABLES)/aapt$(HOST_EXECUTABLE_SUFFIX)
AIDL := $(HOST_OUT_EXECUTABLES)/aidl$(HOST_EXECUTABLE_SUFFIX)
diff --git a/core/definitions.mk b/core/definitions.mk
index 5d76285..746becf 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1039,6 +1039,16 @@
$(transform-d-to-p)
endef
+# YASM compilation
+define transform-asm-to-o
+@mkdir -p $(dir $@)
+$(hide) $(YASM) \
+ $(addprefix -I , $(PRIVATE_C_INCLUDES)) \
+ -f elf32 -m x86 \
+ $(PRIVATE_ASFLAGS) \
+ -o $@ $<
+endef
+
###########################################################
## Commands for running gcc to compile an Objective-C file
## This should never happen for target builds but this
diff --git a/core/envsetup.mk b/core/envsetup.mk
index a228fc7..8013e18 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -67,28 +67,32 @@
$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
endif
+# TODO: Replace BUILD_HOST_64bit with a flag that forces 32-bit build,
+# after we default to 64-bit host build.
+ifeq (,$(BUILD_HOST_64bit))
+# Default to 32-bit-by-default multilib host build.
+HOST_PREFER_32_BIT := true
ifeq ($(HOST_PREFER_32_BIT),true)
-# User asks for multilib build, but use 32-bit as preferred arch.
BUILD_HOST_64bit := true
endif
+endif
# HOST_ARCH
ifneq (,$(findstring x86_64,$(UNAME)))
- # TODO: Replace BUILD_HOST_64bit with a flag that forces 32-bit build,
- # after we default to 64-bit host build.
- ifeq (,$(BUILD_HOST_64bit))
- HOST_ARCH := x86
- HOST_2ND_ARCH :=
- else
- HOST_ARCH := x86_64
- HOST_2ND_ARCH := x86
- endif
+ HOST_ARCH := x86_64
+ HOST_2ND_ARCH := x86
else ifneq (,$(findstring 86,$(UNAME)))
# It's not officially supported!
HOST_ARCH := x86
HOST_2ND_ARCH :=
endif
+ifeq ($(HOST_PREFER_32_BIT),true)
+SDK_HOST_ARCH := x86
+else
+SDK_HOST_ARCH := $(HOST_ARCH)
+endif
+
BUILD_ARCH := $(HOST_ARCH)
BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
diff --git a/core/native_test.mk b/core/native_test.mk
index fc08f79..bc7f2e7 100644
--- a/core/native_test.mk
+++ b/core/native_test.mk
@@ -5,4 +5,6 @@
include $(BUILD_SYSTEM)/target_test_internal.mk
+LOCAL_MULTILIB := both
+
include $(BUILD_EXECUTABLE)
diff --git a/core/product_config.mk b/core/product_config.mk
index 290dec4..f32a596 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -164,13 +164,11 @@
# Default to building dalvikvm on hosts that support it...
ifeq ($(HOST_OS),linux)
-ifneq ($(HOST_ARCH),x86_64)
# ... or if the if the option is already set
ifeq ($(WITH_HOST_DALVIK),)
WITH_HOST_DALVIK := true
endif
endif
-endif
# ---------------------------------------------------------------
# Include the product definitions.
diff --git a/core/target_test_internal.mk b/core/target_test_internal.mk
index 49ea518..87503ea 100644
--- a/core/target_test_internal.mk
+++ b/core/target_test_internal.mk
@@ -19,6 +19,17 @@
endif
endif
-ifndef LOCAL_MODULE_PATH
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_NATIVE_TESTS)/$(LOCAL_MODULE)
+ifdef LOCAL_MODULE_PATH
+$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH when building test $(LOCAL_MODULE))
endif
+
+ifdef LOCAL_MODULE_PATH_32
+$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH_32 when building test $(LOCAL_MODULE))
+endif
+
+ifdef LOCAL_MODULE_PATH_64
+$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH_64 when building test $(LOCAL_MODULE))
+endif
+
+LOCAL_MODULE_PATH_32 := $(TARGET_OUT_DATA_NATIVE_TESTS)/$(LOCAL_MODULE)
+LOCAL_MODULE_PATH_64 := $(TARGET_OUT_DATA_NATIVE_TESTS)64/$(LOCAL_MODULE)