Home | History | Annotate | Download | only in tools
      1 # Default values used by several dev-scripts.
      2 #
      3 
      4 # Current list of platform levels we support
      5 #
      6 # Note: levels 6 and 7 are omitted since they have the same native
      7 # APIs as level 5. Same for levels 10, 11 and 12
      8 #
      9 API_LEVELS="3 4 5 8 9 12 13 14 15 16 17 18 19 L"
     10 
     11 FIRST_API64_LEVEL=L
     12 
     13 # Default ABIs for the target prebuilt binaries.
     14 PREBUILT_ABIS="armeabi armeabi-v7a x86 mips armeabi-v7a-hard arm64-v8a x86_64 mips64"
     15 
     16 # Location of the STLport sources, relative to the NDK root directory
     17 STLPORT_SUBDIR=sources/cxx-stl/stlport
     18 
     19 # Location of the GAbi++ sources, relative to the NDK root directory
     20 GABIXX_SUBDIR=sources/cxx-stl/gabi++
     21 
     22 # Location of the GNU libstdc++ headers and libraries, relative to the NDK
     23 # root directory.
     24 GNUSTL_SUBDIR=sources/cxx-stl/gnu-libstdc++
     25 
     26 # Location of the LLVM libc++ headers and libraries, relative to the NDK
     27 # root directory.
     28 LIBCXX_SUBDIR=sources/cxx-stl/llvm-libc++
     29 
     30 # Location of the LLVM libc++abi headers, relative to the NDK # root directory.
     31 LIBCXXABI_SUBDIR=sources/cxx-stl/llvm-libc++abi/libcxxabi
     32 
     33 # Location of the libportable sources, relative to the NDK root directory
     34 LIBPORTABLE_SUBDIR=sources/android/libportable
     35 
     36 # Location of the gccunwind sources, relative to the NDK root directory
     37 GCCUNWIND_SUBDIR=sources/android/gccunwind
     38 
     39 # Location of the compiler-rt sources, relative to the NDK root directory
     40 COMPILER_RT_SUBDIR=sources/android/compiler-rt
     41 
     42 # Location of the support sources for libc++, relative to the NDK root directory
     43 SUPPORT_SUBDIR=sources/android/support
     44 
     45 # The date to use when downloading toolchain sources from AOSP servers
     46 # Leave it empty for tip of tree.
     47 TOOLCHAIN_GIT_DATE=now
     48 
     49 # The space-separated list of all GCC versions we support in this NDK
     50 DEFAULT_GCC_VERSION_LIST="4.6 4.8 4.9"
     51 
     52 DEFAULT_GCC32_VERSION=4.6
     53 DEFAULT_GCC64_VERSION=4.9
     54 DEFAULT_LLVM_GCC32_VERSION=4.8
     55 DEFAULT_LLVM_GCC64_VERSION=4.9
     56 
     57 DEFAULT_BINUTILS_VERSION=2.21
     58 DEFAULT_GDB_VERSION=7.3.x
     59 DEFAULT_MPFR_VERSION=3.1.1
     60 DEFAULT_GMP_VERSION=5.0.5
     61 DEFAULT_MPC_VERSION=1.0.1
     62 DEFAULT_CLOOG_VERSION=0.18.0
     63 DEFAULT_ISL_VERSION=0.11.1
     64 DEFAULT_PPL_VERSION=1.0
     65 DEFAULT_PYTHON_VERSION=2.7.5
     66 DEFAULT_PERL_VERSION=5.16.2
     67 
     68 RECENT_BINUTILS_VERSION=2.24
     69 
     70 # Default platform to build target binaries against.
     71 DEFAULT_PLATFORM=android-9
     72 
     73 # The list of default CPU architectures we support
     74 DEFAULT_ARCHS="arm x86 mips arm64 x86_64 mips64"
     75 
     76 # Default toolchain names and prefix
     77 #
     78 # This is used by get_default_toolchain_name_for_arch and get_default_toolchain_prefix_for_arch
     79 # defined below
     80 DEFAULT_ARCH_TOOLCHAIN_NAME_arm=arm-linux-androideabi
     81 DEFAULT_ARCH_TOOLCHAIN_PREFIX_arm=arm-linux-androideabi
     82 
     83 DEFAULT_ARCH_TOOLCHAIN_NAME_arm64=aarch64-linux-android
     84 DEFAULT_ARCH_TOOLCHAIN_PREFIX_arm64=aarch64-linux-android
     85 
     86 DEFAULT_ARCH_TOOLCHAIN_NAME_x86=x86
     87 DEFAULT_ARCH_TOOLCHAIN_PREFIX_x86=i686-linux-android
     88 
     89 DEFAULT_ARCH_TOOLCHAIN_NAME_x86_64=x86_64
     90 DEFAULT_ARCH_TOOLCHAIN_PREFIX_x86_64=x86_64-linux-android
     91 
     92 DEFAULT_ARCH_TOOLCHAIN_NAME_mips=mipsel-linux-android
     93 DEFAULT_ARCH_TOOLCHAIN_PREFIX_mips=mipsel-linux-android
     94 
     95 DEFAULT_ARCH_TOOLCHAIN_NAME_mips64=mips64el-linux-android
     96 DEFAULT_ARCH_TOOLCHAIN_PREFIX_mips64=mips64el-linux-android
     97 
     98 # The space-separated list of all LLVM versions we support in NDK
     99 DEFAULT_LLVM_VERSION_LIST="3.4 3.3"
    100 
    101 # The default LLVM version (first item in the list)
    102 DEFAULT_LLVM_VERSION=$(echo "$DEFAULT_LLVM_VERSION_LIST" | tr ' ' '\n' | head -n 1)
    103 
    104 # The default URL to download the LLVM tar archive
    105 DEFAULT_LLVM_URL="http://llvm.org/releases"
    106 
    107 # The list of default host NDK systems we support
    108 DEFAULT_SYSTEMS="linux-x86 windows darwin-x86"
    109 
    110 # The default issue tracker URL
    111 DEFAULT_ISSUE_TRACKER_URL="http://source.android.com/source/report-bugs.html"
    112 
    113 # Return the default gcc version for a given architecture
    114 # $1: Architecture name (e.g. 'arm')
    115 # Out: default arch-specific gcc version
    116 get_default_gcc_version_for_arch ()
    117 {
    118     case $1 in
    119        *64) echo $DEFAULT_GCC64_VERSION ;;
    120        *) echo $DEFAULT_GCC32_VERSION ;;
    121     esac
    122 }
    123 
    124 # Return default NDK ABI for a given architecture name
    125 # $1: Architecture name
    126 # Out: ABI name
    127 get_default_abi_for_arch ()
    128 {
    129     local RET
    130     case $1 in
    131         arm)
    132             RET="armeabi"
    133             ;;
    134         arm64)
    135             RET="arm64-v8a"
    136             ;;
    137         x86|x86_64|mips|mips64)
    138             RET="$1"
    139             ;;
    140         *)
    141             2> echo "ERROR: Unsupported architecture name: $1, use one of: arm arm64 x86 x86_64 mips mips64"
    142             exit 1
    143             ;;
    144     esac
    145     echo "$RET"
    146 }
    147 
    148 
    149 # Retrieve the list of default ABIs supported by a given architecture
    150 # $1: Architecture name
    151 # Out: space-separated list of ABI names
    152 get_default_abis_for_arch ()
    153 {
    154     local RET
    155     case $1 in
    156         arm)
    157             RET="armeabi armeabi-v7a armeabi-v7a-hard"
    158             ;;
    159         arm64)
    160             RET="arm64-v8a"
    161             ;;
    162         x86|x86_64|mips|mips64)
    163             RET="$1"
    164             ;;
    165         *)
    166             2> echo "ERROR: Unsupported architecture name: $1, use one of: arm arm64 x86 x86_64 mips mips64"
    167             exit 1
    168             ;;
    169     esac
    170     echo "$RET"
    171 }
    172 
    173 # Return toolchain name for given architecture and GCC version
    174 # $1: Architecture name (e.g. 'arm')
    175 # $2: optional, GCC version (e.g. '4.6')
    176 # Out: default arch-specific toolchain name (e.g. 'arm-linux-androideabi-$GCC_VERSION')
    177 # Return empty for unknown arch
    178 get_toolchain_name_for_arch ()
    179 {
    180     if [ ! -z "$2" ] ; then
    181         eval echo \"\${DEFAULT_ARCH_TOOLCHAIN_NAME_$1}-$2\"
    182     else
    183         eval echo \"\${DEFAULT_ARCH_TOOLCHAIN_NAME_$1}\"
    184     fi
    185 }
    186 
    187 # Return the default toolchain name for a given architecture
    188 # $1: Architecture name (e.g. 'arm')
    189 # Out: default arch-specific toolchain name (e.g. 'arm-linux-androideabi-$GCCVER')
    190 # Return empty for unknown arch
    191 get_default_toolchain_name_for_arch ()
    192 {
    193     local GCCVER=$(get_default_gcc_version_for_arch $1)
    194     eval echo \"\${DEFAULT_ARCH_TOOLCHAIN_NAME_$1}-$GCCVER\"
    195 }
    196 
    197 # Return the default toolchain program prefix for a given architecture
    198 # $1: Architecture name
    199 # Out: default arch-specific toolchain prefix (e.g. arm-linux-androideabi)
    200 # Return empty for unknown arch
    201 get_default_toolchain_prefix_for_arch ()
    202 {
    203     eval echo "\$DEFAULT_ARCH_TOOLCHAIN_PREFIX_$1"
    204 }
    205 
    206 # Get the list of all toolchain names for a given architecture
    207 # $1: architecture (e.g. 'arm')
    208 # Out: list of toolchain names for this arch (e.g. arm-linux-androideabi-4.6 arm-linux-androideabi-4.8)
    209 # Return empty for unknown arch
    210 get_toolchain_name_list_for_arch ()
    211 {
    212     local PREFIX VERSION RET ADD DEFAULT_GCC_VERSION
    213     PREFIX=$(eval echo \"\$DEFAULT_ARCH_TOOLCHAIN_NAME_$1\")
    214     if [ -z "$PREFIX" ]; then
    215         return 0
    216     fi
    217     RET=""
    218     DEFAULT_GCC_VERSION=$(get_default_gcc_version_for_arch $1)
    219     ADD=""
    220     for VERSION in $DEFAULT_GCC_VERSION_LIST; do
    221         if [ -z "$ADD" -a "$VERSION" = "$DEFAULT_GCC_VERSION" ]; then
    222             ADD="yes"
    223         fi
    224         if [ -z "$ADD" ]; then
    225             continue
    226         fi
    227         RET=$RET" $PREFIX-$VERSION"
    228     done
    229     RET=${RET## }
    230     echo "$RET"
    231 }
    232 
    233 # Return the binutils version to be used by default when
    234 # building a given version of GCC. This is needed to ensure
    235 # we use binutils-2.19 when building gcc-4.4.3 for ARM and x86,
    236 # and later binutils in other cases (mips, or gcc-4.6+).
    237 #
    238 # Note that technically, we could use latest binutils for all versions of
    239 # GCC, however, in NDK r7, we did build GCC 4.4.3 with binutils-2.20.1
    240 # and this resulted in weird C++ debugging bugs. For NDK r7b and higher,
    241 # binutils was reverted to 2.19, to ensure at least
    242 # feature/bug compatibility.
    243 #
    244 # $1: toolchain with version numer (e.g. 'arm-linux-androideabi-4.6')
    245 #
    246 get_default_binutils_version_for_gcc ()
    247 {
    248     case $1 in
    249         mipsel-*-4.4.3|*-4.6) echo "$DEFAULT_BINUTILS_VERSION";;
    250         *-4.4.3) echo "2.19";;
    251         x86*-4.7) echo "2.23";;  # Use 2.23 to get x32 support in ld.gold
    252         *-4.7) echo "2.22";;
    253         *) echo "2.24";;
    254     esac
    255 }
    256 
    257 # Return the binutils version to be used by default when
    258 # building a given version of llvm. For llvm-3.4 or later,
    259 # we use binutils-2.23 to ensure the LLVMgold.so could be
    260 # built properly. For llvm-3.3, we use binutils-2.21 as default.
    261 #
    262 # $1: toolchain with version numer (e.g. 'llvm-3.3')
    263 #
    264 get_default_binutils_version_for_llvm ()
    265 {
    266     case $1 in
    267         *-3.3|*-3.2) echo "2.21";;
    268         *-3.4) echo "2.23";;
    269         *) echo "2.23";;
    270     esac
    271 }
    272 
    273 # Return the gdb version to be used by default when building a given
    274 # version of GCC.
    275 #
    276 # $1: toolchain with version numer (e.g. 'arm-linux-androideabi-4.6')
    277 #
    278 get_default_gdb_version_for_gcc ()
    279 {
    280     case $1 in
    281         mips*) echo "7.7";;
    282         x86*|aarch64-*|*-4.8|*-4.8l|*-4.9|*-4.9l) echo "7.6";;
    283         *) echo "$DEFAULT_GDB_VERSION";;
    284     esac
    285 }
    286 
    287 # Return the gdbserver version to be used by default when building a given
    288 # version of GCC.
    289 #
    290 # $1: toolchain with version numer (e.g. 'arm-linux-androideabi-4.6')
    291 #
    292 get_default_gdbserver_version_for_gcc ()
    293 {
    294     case $1 in
    295         mips*) echo "7.7";;
    296         *) echo "7.6";;
    297     esac
    298 }
    299