Add support for custom Linux host toolchains when building the SDK.
This is needed in order to build Linux SDK binaries that can run properly on Ubuntu 8.04 (Hardy). By default, the host toolchain on 10.04 (Lucid) generates machine code that won't run on Hardy due to GLibc ABI mistmatches. Note that nothing happens if the new toolchain is not in the prebuilt tree. Change-Id: I914f5a303f16b6871759ce5a7178585ed3060870
This commit is contained in:
parent
7e27c8e155
commit
60a1e88052
2 changed files with 24 additions and 4 deletions
|
@ -22,6 +22,26 @@ define get-file-size
|
|||
stat --format "%s" "$(1)" | tr -d '\n'
|
||||
endef
|
||||
|
||||
# Special case for the Linux SDK: We need to use a special cross-toolchain
|
||||
# that generates machine code that will run properly on Ubuntu 8.04 (Hardy)
|
||||
# By default, the code generated by the Lucid host toolchain will not run
|
||||
# on previous versions of the platform, due to GLibc ABI mistmatches
|
||||
# (Lucid is 2.11, Hardy is 2.7)
|
||||
#
|
||||
# Note that components that need to be built as 64-bit (e.g. clearsilver
|
||||
# which is loaded by the 64-bit JVM through JNI), will have to use
|
||||
# LOCAL_CC and LOCAL_CXX to override this.
|
||||
#
|
||||
ifeq ($(TARGET_PRODUCT),sdk)
|
||||
HOST_SDK_TOOLCHAIN_PREFIX := prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/bin/i686-linux
|
||||
# Don't do anything if the toolchain is not there
|
||||
ifneq (,$(strip $(wildcard $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc)))
|
||||
HOST_CC := $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc
|
||||
HOST_CXX := $(HOST_SDK_TOOLCHAIN_PREFIX)-g++
|
||||
HOST_AR := $(HOST_SDK_TOOLCHAIN_PREFIX)-ar
|
||||
endif # $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc exists
|
||||
endif # TARGET_PRODUCT == sdk
|
||||
|
||||
# We build everything in 32-bit, because some host tools are
|
||||
# 32-bit-only anyway (emulator, acc), and because it gives us
|
||||
# more consistency between the host tools and the target.
|
||||
|
|
|
@ -1001,7 +1001,7 @@ endef
|
|||
# it to be overriden en-masse see combo/linux-arm.make for an example.
|
||||
ifneq ($(HOST_CUSTOM_LD_COMMAND),true)
|
||||
define transform-host-o-to-shared-lib-inner
|
||||
$(HOST_CXX) \
|
||||
$(PRIVATE_CXX) \
|
||||
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
|
||||
-Wl,-rpath,\$$ORIGIN/../lib \
|
||||
-shared -Wl,-soname,$(notdir $@) \
|
||||
|
@ -1051,7 +1051,7 @@ endef
|
|||
# it to be overriden en-masse see combo/linux-arm.make for an example.
|
||||
ifneq ($(TARGET_CUSTOM_LD_COMMAND),true)
|
||||
define transform-o-to-shared-lib-inner
|
||||
$(TARGET_CXX) \
|
||||
$(PRIVATE_CXX) \
|
||||
$(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
|
||||
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
|
||||
-Wl,-rpath,\$$ORIGIN/../lib \
|
||||
|
@ -1110,7 +1110,7 @@ endef
|
|||
|
||||
ifneq ($(TARGET_CUSTOM_LD_COMMAND),true)
|
||||
define transform-o-to-executable-inner
|
||||
$(TARGET_CXX) \
|
||||
$(PRIVATE_CXX) \
|
||||
$(TARGET_GLOBAL_LDFLAGS) \
|
||||
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
|
||||
$(TARGET_GLOBAL_LD_DIRS) \
|
||||
|
@ -1161,7 +1161,7 @@ endef
|
|||
|
||||
ifneq ($(HOST_CUSTOM_LD_COMMAND),true)
|
||||
define transform-host-o-to-executable-inner
|
||||
$(HOST_CXX) \
|
||||
$(PRIVATE_CXX) \
|
||||
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
|
||||
-Wl,-rpath,\$$ORIGIN/../lib \
|
||||
$(HOST_GLOBAL_LD_DIRS) \
|
||||
|
|
Loading…
Reference in a new issue