15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# This file contains common system config stuff for the Android build. 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)if (is_android) { 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) declare_args() { 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) # Absolute directory containing the Android source code. 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) android_src = "" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk_root = "//third_party/android_tools/sdk" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk_version = "20" 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) # This is set when building the Android WebView inside the Android build 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) # system, using the 'android' gyp backend. The WebView code is still built 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) # when this is unset, but builds using the normal chromium build system. 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) is_android_webview_build = false 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) android_default_keystore_path = "//build/android/ant/chromium-debug.keystore" 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) android_default_keystore_name = "chromiumdebugkey" 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) android_default_keystore_password = "chromium" 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci # This is a unique identifier for a given build. It's used for 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci # identifying various build artifacts corresponding to a particular build of 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci # chrome (e.g. where to find archived symbols). 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci android_chrome_build_id = "\"\"" 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (is_android_webview_build) { 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(android_src != "", 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "You must specify android_src for an Android WebView build.") 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Host stuff ----------------------------------------------------------------- 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Defines the name the Android build gives to the current host CPU 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # architecture, which is different than the names GN uses. 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (build_cpu_arch == "x64") { 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_host_arch = "x86_64" 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (build_cpu_arch == "x86") { 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_host_arch = "x86" 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else { 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) assert(false, "Need Android toolchain support for your build CPU arch.") 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Defines the name the Android build gives to the current host CPU 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # architecture, which is different than the names GN uses. 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (build_os == "linux") { 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_host_os = "linux" 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else { 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) assert(false, "Need Android toolchain support for your build OS.") 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Directories and files ------------------------------------------------------ 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # We define may of the dirs strings here for each output architecture (rather 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # than just the current one) since these are needed by the Android toolchain 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # file to define toolchains for all possible targets in one pass. 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}" 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) # Path to the Android NDK and SDK. 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_ndk_root = "//third_party/android_tools/ndk" 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}" 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk_tools = "${android_sdk_root}/tools" 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk_build_tools = "${android_sdk_root}/build-tools/20.0.0" 7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) # Path to the SDK's android.jar 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch android_sdk_jar = "$android_sdk/android.jar" 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) zipalign_path = "$android_sdk_build_tools/zipalign" 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Subdirectories inside android_ndk_root that contain the sysroot for the 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # associated platform. 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) _android_api_level = 14 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) x86_android_sysroot_subdir = "platforms/android-${_android_api_level}/arch-x86" 81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) arm_android_sysroot_subdir = "platforms/android-${_android_api_level}/arch-arm" 82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) mips_android_sysroot_subdir = "platforms/android-${_android_api_level}/arch-mips" 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Toolchain root directory for each build. The actual binaries are inside 85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # a "bin" directory inside of these. 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci _android_toolchain_version = "4.9" 87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) x86_android_toolchain_root = "$android_ndk_root/toolchains/x86-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" 88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) arm_android_toolchain_root = "$android_ndk_root/toolchains/arm-linux-androideabi-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" 89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) mips_android_toolchain_root = "$android_ndk_root/toolchains/mipsel-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}" 90cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Location of libgcc. This is only needed for the current GN toolchain, so we 92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # only need to define the current one, rather than one for every platform 93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # like the toolchain roots. 94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (cpu_arch == "x86") { 9503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) android_prebuilt_arch = "android-x86" 9603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) _binary_prefix = "i686-linux-android" 976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) android_toolchain_root = "$x86_android_toolchain_root" 98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_libgcc_file = 996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "$android_toolchain_root/lib/gcc/i686-linux-android/${_android_toolchain_version}/libgcc.a" 100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else if (cpu_arch == "arm") { 10103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) android_prebuilt_arch = "android-arm" 10203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) _binary_prefix = "arm-linux-androideabi" 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) android_toolchain_root = "$arm_android_toolchain_root" 104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_libgcc_file = 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a" 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } else if (cpu_arch == "mipsel") { 10703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) android_prebuilt_arch = "android-mips" 10803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) _binary_prefix = "mipsel-linux-android" 1096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) android_toolchain_root = "$mips_android_toolchain_root" 110cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) android_libgcc_file = 1116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "$android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_version}/libgcc.a" 112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } else { 113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) assert(false, "Need android libgcc support for your target arch.") 114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) android_readelf = "$android_toolchain_root/bin/$_binary_prefix-readelf" 11703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) android_gdbserver = "$android_ndk_root/prebuilt/$android_prebuilt_arch/gdbserver/gdbserver" 11803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) # stlport stuff -------------------------------------------------------------- 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) use_system_stlport = is_android_webview_build 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (use_system_stlport) { 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_stlport_library = "stlport" 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else if (component_mode == "shared_library") { 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_stlport_library = "stlport_shared" 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_stlport_library = "stlport_static" 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) # ABI ------------------------------------------------------------------------ 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (cpu_arch == "x86") { 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_app_abi = "x86" 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else if (cpu_arch == "arm") { 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) import("//build/config/arm.gni") 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (arm_version < 7) { 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_app_abi = "armeabi" 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_app_abi = "armeabi-v7a" 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else if (cpu_arch == "mipsel") { 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) android_app_abi = "mips" 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) assert(false, "Unknown Android ABI: " + cpu_arch) 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} else { 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!defined(is_android_webview_build)) { 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) is_android_webview_build = false 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) use_system_stlport = false 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 153