blob: bb0db7184bbc8e2d2cb822002609c634e27b221e [file] [log] [blame]
# This GYP file stores the dependencies necessary to build Skia on the Android
# platform. The OS doesn't provide many stable libraries as part of the
# distribution so we have to build a few of them ourselves.
#
# NOTE: We tried adding the gyp file to the android/ directory at the root of
# the Skia repo, but that resulted in the generated makefiles being created
# outside of the out directory. We may be able to move the bulk of this gyp
# to the /android directory and put a simple shim here, but that has yet to be
# tested.
{
'variables': {
'skia_warnings_as_errors': 0,
},
'targets': [
{
'target_name': 'cpu_features',
'type': 'static_library',
'direct_dependent_settings': {
'include_dirs': [
'../third_party/cpufeatures',
],
},
'sources': [
'../third_party/cpufeatures/cpu-features.c',
'../third_party/cpufeatures/cpu-features.h',
],
'cflags': [
'-w',
],
},
{
'target_name': 'expat',
'type': 'static_library',
'sources': [
'../third_party/externals/expat/lib/xmlparse.c',
'../third_party/externals/expat/lib/xmlrole.c',
'../third_party/externals/expat/lib/xmltok.c',
],
'include_dirs': [
'../third_party/externals/expat',
'../third_party/externals/expat/lib',
],
'cflags': [
'-w',
'-fexceptions',
'-DHAVE_EXPAT_CONFIG_H',
],
'direct_dependent_settings': {
'include_dirs': [
'../third_party/externals/expat/lib', # For expat.h
],
}
},
{
'target_name': 'gif',
'type': 'static_library',
'sources': [
'../third_party/externals/gif/dgif_lib.c',
'../third_party/externals/gif/gifalloc.c',
'../third_party/externals/gif/gif_err.c',
],
'include_dirs': [
'../third_party/externals/gif',
],
'cflags': [
'-w',
'-DHAVE_CONFIG_H',
],
'direct_dependent_settings': {
'include_dirs': [
'../third_party/externals/gif',
],
}
},
{
'target_name': 'png',
'type': 'static_library',
'sources': [
'../third_party/externals/png/png.c',
'../third_party/externals/png/pngerror.c',
'../third_party/externals/png/pnggccrd.c',
'../third_party/externals/png/pngget.c',
'../third_party/externals/png/pngmem.c',
'../third_party/externals/png/pngpread.c',
'../third_party/externals/png/pngread.c',
'../third_party/externals/png/pngrio.c',
'../third_party/externals/png/pngrtran.c',
'../third_party/externals/png/pngrutil.c',
'../third_party/externals/png/pngset.c',
'../third_party/externals/png/pngtrans.c',
'../third_party/externals/png/pngvcrd.c',
'../third_party/externals/png/pngwio.c',
'../third_party/externals/png/pngwrite.c',
'../third_party/externals/png/pngwtran.c',
'../third_party/externals/png/pngwutil.c',
],
'include_dirs': [
'../third_party/externals/png',
],
'cflags': [
'-w',
'-fvisibility=hidden',
],
'link_settings': {
'libraries': [
'-lz',
],
},
'direct_dependent_settings': {
'include_dirs': [
'../third_party/externals/png',
],
}
},
{
'target_name': 'jpeg',
'type': 'static_library',
'sources': [
'../third_party/externals/jpeg/jcapimin.c',
'../third_party/externals/jpeg/jcapistd.c',
'../third_party/externals/jpeg/jccoefct.c',
'../third_party/externals/jpeg/jccolor.c',
'../third_party/externals/jpeg/jcdctmgr.c',
'../third_party/externals/jpeg/jchuff.c',
'../third_party/externals/jpeg/jcinit.c',
'../third_party/externals/jpeg/jcmainct.c',
'../third_party/externals/jpeg/jcmarker.c',
'../third_party/externals/jpeg/jcmaster.c',
'../third_party/externals/jpeg/jcomapi.c',
'../third_party/externals/jpeg/jcparam.c',
'../third_party/externals/jpeg/jcphuff.c',
'../third_party/externals/jpeg/jcprepct.c',
'../third_party/externals/jpeg/jcsample.c',
'../third_party/externals/jpeg/jctrans.c',
'../third_party/externals/jpeg/jdapimin.c',
'../third_party/externals/jpeg/jdapistd.c',
'../third_party/externals/jpeg/jdatadst.c',
'../third_party/externals/jpeg/jdatasrc.c',
'../third_party/externals/jpeg/jdcoefct.c',
'../third_party/externals/jpeg/jdcolor.c',
'../third_party/externals/jpeg/jddctmgr.c',
'../third_party/externals/jpeg/jdhuff.c',
'../third_party/externals/jpeg/jdinput.c',
'../third_party/externals/jpeg/jdmainct.c',
'../third_party/externals/jpeg/jdmarker.c',
'../third_party/externals/jpeg/jdmaster.c',
'../third_party/externals/jpeg/jdmerge.c',
'../third_party/externals/jpeg/jdphuff.c',
'../third_party/externals/jpeg/jdpostct.c',
'../third_party/externals/jpeg/jdsample.c',
'../third_party/externals/jpeg/jdtrans.c',
'../third_party/externals/jpeg/jerror.c',
'../third_party/externals/jpeg/jfdctflt.c',
'../third_party/externals/jpeg/jfdctfst.c',
'../third_party/externals/jpeg/jfdctint.c',
'../third_party/externals/jpeg/jidctflt.c',
'../third_party/externals/jpeg/jidctfst.c',
'../third_party/externals/jpeg/jidctint.c',
'../third_party/externals/jpeg/jidctred.c',
'../third_party/externals/jpeg/jquant1.c',
'../third_party/externals/jpeg/jquant2.c',
'../third_party/externals/jpeg/jutils.c',
'../third_party/externals/jpeg/jmemmgr.c',
'../third_party/externals/jpeg/jmem-android.c', # ashmem is also available
],
'include_dirs': [
'../third_party/externals/jpeg',
],
'cflags': [
'-w',
'-fvisibility=hidden',
'-DAVOID_TABLES',
'-O3',
'-fstrict-aliasing',
'-fprefetch-loop-arrays',
'-DANDROID_TILE_BASED_DECODE',
],
'direct_dependent_settings': {
'include_dirs': [
'../third_party/externals/jpeg',
],
}
},
{
# This target is a dependency for all console-type Skia applications which
# will run on Android. Since Android requires us to load native code in
# shared libraries, we need a common entry point to wrap around main().
# Here we also change the type of all would-be executables to be shared
# libraries. The alternative would be to introduce a condition in every
# executable target which changes to a shared library if the target OS is
# Android. This is nicer because the switch is in one place.
'target_name': 'Android_EntryPoint',
'type': 'static_library',
'direct_dependent_settings': {
'target_conditions': [
# '_type' is an 'automatic variable' which is defined for any
# target which defines a key-value pair with 'type' as the key (so,
# all of them). Conditionals inside 'target_conditions' are evaluated
# *after* all other definitions and conditionals are evaluated, so
# we're guaranteed that '_type' will be defined when we get here.
# For more info, see:
# - http://code.google.com/p/gyp/wiki/InputFormatReference#Variables
# - http://codereview.appspot.com/6353065/
['_type == "executable"', {
'type': 'shared_library',
}],
],
},
},
{
# This target is a dependency for Skia Sample application which runs on
# Android. Since Android requires us to load native code in shared
# libraries, we need a common entry point to wrap around main(). Here
# we also change the type of all would-be executables to be shared
# libraries. The alternative would be to introduce a condition in every
# executable target which changes to a shared library if the target OS is
# Android. This is nicer because the switch is in one place.
'target_name': 'Android_SampleApp',
'type': 'static_library',
'direct_dependent_settings': {
'target_conditions': [
# '_type' is an 'automatic variable' which is defined for any
# target which defines a key-value pair with 'type' as the key (so,
# all of them). Conditionals inside 'target_conditions' are evaluated
# *after* all other definitions and conditionals are evaluated, so
# we're guaranteed that '_type' will be defined when we get here.
# For more info, see:
# - http://code.google.com/p/gyp/wiki/InputFormatReference#Variables
# - http://codereview.appspot.com/6353065/
['_type == "executable"', {
'type': 'shared_library',
}],
],
'sources': [
'../app/jni/com_skia_SkiaSampleRenderer.cpp',
],
},
},
]
}