Skip to content

Commit

Permalink
Add GN build support for Android 64-bit platforms.
Browse files Browse the repository at this point in the history
gn now run with arg target_arch = "x64", arm64 and mips64el
releated changes are added as well but not verified.

BUG=none

Review URL: https://codereview.chromium.org/864173006

Cr-Commit-Position: refs/heads/master@{#315680}
  • Loading branch information
halton.huo authored and Commit bot committed Feb 11, 2015
1 parent e8b2c28 commit 98de73d
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
31 changes: 31 additions & 0 deletions build/config/android/config.gni
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,23 @@ if (is_android) {
"platforms/android-${_android_api_level}/arch-arm"
mips_android_sysroot_subdir =
"platforms/android-${_android_api_level}/arch-mips"
_android64_api_level = 21
x86_64_android_sysroot_subdir =
"platforms/android-${_android64_api_level}/arch-x86_64"
arm64_android_sysroot_subdir =
"platforms/android-${_android64_api_level}/arch-arm64"
mips64_android_sysroot_subdir =
"platforms/android-${_android64_api_level}/arch-mips64"

# Toolchain root directory for each build. The actual binaries are inside
# a "bin" directory inside of these.
_android_toolchain_version = "4.9"
x86_android_toolchain_root = "$android_ndk_root/toolchains/x86-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
arm_android_toolchain_root = "$android_ndk_root/toolchains/arm-linux-androideabi-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
mips_android_toolchain_root = "$android_ndk_root/toolchains/mipsel-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
x86_64_android_toolchain_root = "$android_ndk_root/toolchains/x86_64-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
arm64_android_toolchain_root = "$android_ndk_root/toolchains/aarch64-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
mips64_android_toolchain_root = "$android_ndk_root/toolchains/mips64el-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"

# Location of libgcc. This is only needed for the current GN toolchain, so we
# only need to define the current one, rather than one for every platform
Expand All @@ -124,6 +134,21 @@ if (is_android) {
_binary_prefix = "mipsel-linux-android"
android_toolchain_root = "$mips_android_toolchain_root"
android_libgcc_file = "$android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_version}/libgcc.a"
} else if (cpu_arch == "x64") {
android_prebuilt_arch = "android-x86_64"
_binary_prefix = "x86_64-linux-android"
android_toolchain_root = "$x86_64_android_toolchain_root"
android_libgcc_file = "$android_toolchain_root/lib/gcc/x86_64-linux-android/${_android_toolchain_version}/libgcc.a"
} else if (cpu_arch == "arm64") {
android_prebuilt_arch = "android-arm64"
_binary_prefix = "aarch64-linux-android"
android_toolchain_root = "$arm64_android_toolchain_root"
android_libgcc_file = "$android_toolchain_root/lib/gcc/aarch64-linux-android/${_android_toolchain_version}/libgcc.a"
} else if (cpu_arch == "mips64el") {
android_prebuilt_arch = "android-mips64"
_binary_prefix = "mips64el-linux-android"
android_toolchain_root = "$mips64_android_toolchain_root"
android_libgcc_file = "$android_toolchain_root/lib/gcc/mips64el-linux-android/${_android_toolchain_version}/libgcc.a"
} else {
assert(false, "Need android libgcc support for your target arch.")
}
Expand Down Expand Up @@ -155,6 +180,12 @@ if (is_android) {
}
} else if (cpu_arch == "mipsel") {
android_app_abi = "mips"
} else if (cpu_arch == "x64") {
android_app_abi = "x86_64"
} else if (cpu_arch == "arm64") {
android_app_abi = "arm64-v8a"
} else if (cpu_arch == "mips64el") {
android_app_abi = "mips64"
} else {
assert(false, "Unknown Android ABI: " + cpu_arch)
}
Expand Down
6 changes: 6 additions & 0 deletions build/config/sysroot.gni
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ if (current_toolchain == default_toolchain && target_sysroot != "") {
sysroot = rebase_path("$android_ndk_root/$arm_android_sysroot_subdir")
} else if (cpu_arch == "mipsel") {
sysroot = rebase_path("$android_ndk_root/$mips_android_sysroot_subdir")
} else if (cpu_arch == "x64") {
sysroot = rebase_path("$android_ndk_root/$x86_64_android_sysroot_subdir")
} else if (cpu_arch == "arm64") {
sysroot = rebase_path("$android_ndk_root/$arm64_android_sysroot_subdir")
} else if (cpu_arch == "mips64") {
sysroot = rebase_path("$android_ndk_root/$mips64_android_sysroot_subdir")
} else {
sysroot = ""
}
Expand Down
24 changes: 24 additions & 0 deletions build/toolchain/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,27 @@ android_gcc_toolchain("mipsel") {
tool_prefix = "$mips_android_toolchain_root/bin/mipsel-linux-android-"
toolchain_cpu_arch = "mipsel"
}

android_gcc_toolchain("x64") {
android_ndk_sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir"
android_ndk_lib_dir = "usr/lib"

tool_prefix = "$x86_64_android_toolchain_root/bin/x86_64-linux-android-"
toolchain_cpu_arch = "x86_64"
}

android_gcc_toolchain("arm64") {
android_ndk_sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir"
android_ndk_lib_dir = "usr/lib"

tool_prefix = "$arm64_android_toolchain_root/bin/arm-linux-androideabi-"
toolchain_cpu_arch = "aarch64"
}

android_gcc_toolchain("mips64el") {
android_ndk_sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir"
android_ndk_lib_dir = "usr/lib"

tool_prefix = "$mips64_android_toolchain_root/bin/mipsel-linux-android-"
toolchain_cpu_arch = "mipsel64el"
}

0 comments on commit 98de73d

Please sign in to comment.