blob: e75bc1995554a8c858fd34c8035a15ba1a469c23 [file] [log] [blame]
# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
# Definitions for building standalone Dart binaries to run on Android.
# This is mostly excerpted from:
# http://src.chromium.org/viewvc/chrome/trunk/src/build/common.gypi
{
'variables': {
'android_ndk_root': '<(PRODUCT_DIR)/../../third_party/android_tools/ndk',
}, # variables
'target_defaults': {
'configurations': {
# It is very important to get the order of the linker arguments correct.
# Therefore, we put them all in the architecture specific configurations,
# even though there are many flags in common, to avoid splitting them
# between two configurations and possibly accidentally mixing up the
# order.
'Dart_Android_Base': {
'abstract': 1,
'cflags': [ '-Wno-abi', '-Wall', '-W', '-Wno-unused-parameter',
'-Wnon-virtual-dtor', '-fno-rtti', '-fno-exceptions',],
'target_conditions': [
['_toolset=="target"', {
'defines': [
'ANDROID',
'USE_STLPORT=1',
'_STLP_USE_PTR_SPECIALIZATIONS=1',
'_STLP_NO_CSTD_FUNCTION_IMPORTS=1',
'HAVE_OFF64_T',
'HAVE_SYS_UIO_H',
],
'cflags!': [
'-pthread', # Not supported by Android toolchain.
],
'cflags': [
'-U__linux__', # Don't allow toolchain to claim -D__linux__
'-ffunction-sections',
'-funwind-tables',
'-fstack-protector',
'-fno-short-enums',
'-finline-limit=64',
'-Wa,--noexecstack',
],
}],
# Settings for building host targets using the system toolchain.
['_toolset=="host"', {
'cflags': [ '-m32', '-pthread' ],
}],
],
},
'Dart_Android_Debug': {
'abstract': 1,
'defines': [
'DEBUG',
],
},
'Dart_Android_Release': {
'abstract': 1,
'defines': [
'NDEBUG',
],
'cflags!': [
'-O2',
'-Os',
],
'cflags': [
'-fdata-sections',
'-ffunction-sections',
'-fno-omit-frame-pointer',
'-O3',
],
},
'Dart_Android_ia32_Base': {
'abstract': 1,
'variables': {
'android_sysroot': '<(android_ndk_root)/platforms/android-14/arch-x86',
'android_ndk_include': '<(android_sysroot)/usr/include',
'android_ndk_lib': '<(android_sysroot)/usr/lib',
},
'target_conditions': [
['_toolset=="target"', {
# The x86 toolchain currently has problems with stack-protector.
'cflags!': [
'-fstack-protector',
],
'cflags': [
'-I<(android_ndk_include)',
'-I<(android_ndk_root)/sources/cxx-stl/stlport/stlport',
'-fno-stack-protector',
],
'target_conditions': [
['_type=="executable"', {
'ldflags!': ['-Wl,--exclude-libs=ALL,-shared',],
}],
['_type=="shared_library"', {
'ldflags': ['-Wl,-shared,-Bsymbolic',],
}],
],
'ldflags': [
'ia32', '>(_type)', 'target',
'-nostdlib',
'-Wl,--no-undefined',
# Don't export symbols from statically linked libraries.
'-Wl,--exclude-libs=ALL',
'-Wl,-rpath-link=<(android_ndk_lib)',
'-L<(android_ndk_lib)',
# NOTE: The stlport header include paths below are specified in
# cflags rather than include_dirs because they need to come
# after include_dirs. Think of them like system headers, but
# don't use '-isystem' because the arm-linux-androideabi-4.4.3
# toolchain (circa Gingerbread) will exhibit strange errors.
# The include ordering here is important; change with caution.
'-L<(android_ndk_root)/sources/cxx-stl/stlport/libs/x86',
'-z',
'muldefs',
'-Bdynamic',
'-Wl,-dynamic-linker,/system/bin/linker',
'-Wl,--gc-sections',
'-Wl,-z,nocopyreloc',
# crtbegin_dynamic.o should be the last item in ldflags.
'<(android_ndk_lib)/crtbegin_dynamic.o',
],
'ldflags!': [
'-pthread', # Not supported by Android toolchain.
],
}],
['_toolset=="host"', {
'ldflags': [ '-m32', '-pthread' ],
}],
],
},
'Dart_Android_arm_Base': {
'abstract': 1,
'variables': {
'android_sysroot': '<(android_ndk_root)/platforms/android-14/arch-arm',
'android_ndk_include': '<(android_sysroot)/usr/include',
'android_ndk_lib': '<(android_sysroot)/usr/lib',
},
'target_conditions': [
['_toolset=="target"', {
'cflags': [
'-I<(android_ndk_include)',
'-I<(android_ndk_root)/sources/cxx-stl/stlport/stlport',
'-march=armv7-a',
'-mtune=cortex-a8',
'-mfpu=vfp3',
'-mfloat-abi=softfp',
],
'target_conditions': [
['_type=="executable"', {
'ldflags!': ['-Wl,--exclude-libs=ALL,-shared',],
}],
['_type=="shared_library"', {
'ldflags': ['-Wl,-shared,-Bsymbolic',],
}],
],
'ldflags': [
'arm', '>(_type)', 'target',
'-nostdlib',
'-Wl,--no-undefined',
# Don't export symbols from statically linked libraries.
'-Wl,--exclude-libs=ALL',
'-Wl,-rpath-link=<(android_ndk_lib)',
'-L<(android_ndk_lib)',
# Enable identical code folding to reduce size.
'-Wl,--icf=safe',
'-L<(android_ndk_root)/sources/cxx-stl/stlport/libs/armeabi-v7a',
'-z',
'muldefs',
'-Bdynamic',
'-Wl,-dynamic-linker,/system/bin/linker',
'-Wl,--gc-sections',
'-Wl,-z,nocopyreloc',
# crtbegin_dynamic.o should be the last item in ldflags.
'<(android_ndk_lib)/crtbegin_dynamic.o',
],
'ldflags!': [
'-pthread', # Not supported by Android toolchain.
],
}],
['_toolset=="host"', {
'ldflags': [ '-m32', '-pthread' ],
}],
],
},
}, # configurations
}, # target_defaults
}