Merge "Sync modules required by releasetools"
diff --git a/core/combo/HOST_CROSS_linux_bionic-arm64.mk b/core/combo/HOST_CROSS_linux_bionic-arm64.mk
new file mode 100644
index 0000000..df6865f
--- /dev/null
+++ b/core/combo/HOST_CROSS_linux_bionic-arm64.mk
@@ -0,0 +1,22 @@
+#
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Configuration for builds hosted on linux_arm-arm64
+# Included by combo/select.mk
+
+define $(combo_var_prefix)transform-shared-lib-to-toc
+$(call _gen_toc_command_for_elf,$(1),$(2))
+endef
diff --git a/core/envsetup.mk b/core/envsetup.mk
index e8eb158..59cf508 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -148,15 +148,25 @@
# BUILD_OS is the real host doing the build.
BUILD_OS := $(HOST_OS)
-HOST_CROSS_OS :=
-# We can cross-build Windows binaries on Linux
+# We can do the cross-build only on Linux
ifeq ($(HOST_OS),linux)
-ifeq ($(BUILD_HOST_static),)
-HOST_CROSS_OS := windows
-HOST_CROSS_ARCH := x86
-HOST_CROSS_2ND_ARCH := x86_64
-2ND_HOST_CROSS_IS_64_BIT := true
-endif
+ # Windows has been the default host_cross OS
+ ifeq (,$(filter-out windows,$(HOST_CROSS_OS)))
+ # We can only create static host binaries for Linux, so if static host
+ # binaries are requested, turn off Windows cross-builds.
+ ifeq ($(BUILD_HOST_static),)
+ HOST_CROSS_OS := windows
+ HOST_CROSS_ARCH := x86
+ HOST_CROSS_2ND_ARCH := x86_64
+ 2ND_HOST_CROSS_IS_64_BIT := true
+ endif
+ else ifeq ($(HOST_CROSS_OS),linux_bionic)
+ ifeq (,$(HOST_CROSS_ARCH))
+ $(error HOST_CROSS_ARCH missing.)
+ endif
+ else
+ $(error Unsupported HOST_CROSS_OS $(HOST_CROSS_OS))
+ endif
endif
ifeq ($(HOST_OS),)
diff --git a/core/main.mk b/core/main.mk
index 363ee3d..ec92c1e 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -608,8 +608,8 @@
$(eval modules_32 := $(patsubst %:32,%,$(filter %:32,$(2)))) \
$(eval modules_64 := $(patsubst %:64,%,$(filter %:64,$(2)))) \
$(eval modules_both := $(filter-out %:32 %:64,$(2))) \
- $(eval ### For host cross modules, the primary arch is windows x86 and secondary is x86_64) \
- $(if $(filter HOST_CROSS,$(1)), \
+ $(eval ### if 2ND_HOST_CROSS_IS_64_BIT, then primary/secondary are reversed for HOST_CROSS modules) \
+ $(if $(filter HOST_CROSS_true,$(1)_$(2ND_HOST_CROSS_IS_64_BIT)), \
$(eval modules_1st_arch := $(modules_32)) \
$(eval modules_2nd_arch := $(modules_64)), \
$(eval modules_1st_arch := $(modules_64)) \