# 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', ], }, }, ] }