From b2a6fe7976ae85242f9266be23eab025a7e8e7e7 Mon Sep 17 00:00:00 2001 From: djsollen Date: Fri, 3 Apr 2015 12:35:27 -0700 Subject: Enable both static and dynamically linked libpng All platforms except android are configured to use the statically linked copy of libpng. Android uses the system provided dynamic copy for SkImageDecoder and the static copy for SkCodec. The exception being android framework builds that currently use the dynamic copy everywhere. This CL also enables NEON optimizations for libpng. Review URL: https://codereview.chromium.org/1058823002 --- gyp/libpng.gyp | 160 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 92 insertions(+), 68 deletions(-) (limited to 'gyp/libpng.gyp') diff --git a/gyp/libpng.gyp b/gyp/libpng.gyp index 73bdd2aa3c..d918f2d403 100644 --- a/gyp/libpng.gyp +++ b/gyp/libpng.gyp @@ -10,85 +10,109 @@ 'targets': [ { 'target_name': 'libpng', + 'type': 'none', 'conditions': [ - [ 'skia_libpng_static', + [ 'skia_os == "android"', { - 'type': 'static_library', - 'include_dirs': [ - '../third_party/externals/libpng', - # Needed for generated pnglibconf.h - '../third_party/libpng', - ], 'dependencies': [ - 'zlib.gyp:zlib', + 'android_deps.gyp:png', ], 'export_dependent_settings': [ - 'zlib.gyp:zlib', - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '../third_party/externals/libpng', - # Needed for generated pnglibconf.h - '../third_party/libpng', - ], - }, - 'cflags': [ - '-w', - '-fvisibility=hidden', + 'android_deps.gyp:png', ], - 'defines': [ - # TODO: it'd be nice to enable PNG's NEON when possible. - 'PNG_ARM_NEON_OPT=0', + }, { # skia_os != "android" + 'dependencies': [ + 'libpng.gyp:libpng_static', ], - 'sources': [ - '../third_party/externals/libpng/png.c', - '../third_party/externals/libpng/pngerror.c', - '../third_party/externals/libpng/pngget.c', - '../third_party/externals/libpng/pngmem.c', - '../third_party/externals/libpng/pngpread.c', - '../third_party/externals/libpng/pngread.c', - '../third_party/externals/libpng/pngrio.c', - '../third_party/externals/libpng/pngrtran.c', - '../third_party/externals/libpng/pngrutil.c', - '../third_party/externals/libpng/pngset.c', - '../third_party/externals/libpng/pngtrans.c', - '../third_party/externals/libpng/pngwio.c', - '../third_party/externals/libpng/pngwrite.c', - '../third_party/externals/libpng/pngwtran.c', - '../third_party/externals/libpng/pngwutil.c', + 'export_dependent_settings': [ + 'libpng.gyp:libpng_static', ], - }, { # not skia_libpng_static - 'type': 'none', - 'conditions': [ - [ 'skia_os == "android"', - { - # TODO(halcanary): merge all png targets into this file. - 'dependencies': [ - 'android_deps.gyp:png', - ], - 'export_dependent_settings': [ - 'android_deps.gyp:png', - ], - }, { # skia_os != "android" - 'dependencies': [ - 'zlib.gyp:zlib', - ], - 'export_dependent_settings': [ - 'zlib.gyp:zlib', - ], - 'direct_dependent_settings': { - 'link_settings': { - 'libraries': [ - '-lpng', - ], - }, - }, - } - ] - ] } ] + ] + }, + { + 'target_name': 'libpng_static', + 'type': 'static_library', + 'standalone_static_library': 1, + 'include_dirs': [ + # Needed for generated pnglibconf.h and pngprefix.h + '../third_party/libpng', + '../third_party/externals/libpng', + ], + 'dependencies': [ + 'zlib.gyp:zlib', + ], + 'export_dependent_settings': [ + 'zlib.gyp:zlib', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '../third_party/externals/libpng', + # Needed for generated pnglibconf.h and pngprefix.h + '../third_party/libpng', + ], + 'defines': [ + 'SKIA_PNG_PREFIXED', + ], + }, + 'cflags': [ + '-w', + '-fvisibility=hidden', + ], + 'sources': [ + '../third_party/externals/libpng/png.c', + '../third_party/externals/libpng/pngerror.c', + '../third_party/externals/libpng/pngget.c', + '../third_party/externals/libpng/pngmem.c', + '../third_party/externals/libpng/pngpread.c', + '../third_party/externals/libpng/pngread.c', + '../third_party/externals/libpng/pngrio.c', + '../third_party/externals/libpng/pngrtran.c', + '../third_party/externals/libpng/pngrutil.c', + '../third_party/externals/libpng/pngset.c', + '../third_party/externals/libpng/pngtrans.c', + '../third_party/externals/libpng/pngwio.c', + '../third_party/externals/libpng/pngwrite.c', + '../third_party/externals/libpng/pngwtran.c', + '../third_party/externals/libpng/pngwutil.c', + ], + 'conditions': [ + [ 'skia_os == "ios"', { + # explicitly disable looking for NEON on iOS builds + 'defines': [ + 'PNG_ARM_NEON_OPT=0', + ], + }, { # skia_os != "ios" + 'dependencies': [ + 'libpng.gyp:libpng_static_neon', + ], + }], ], }, + { + 'target_name': 'libpng_static_neon', + 'type': 'static_library', + 'include_dirs': [ + # Needed for generated pnglibconf.h and pngprefix.h + '../third_party/libpng', + '../third_party/externals/libpng', + ], + 'dependencies': [ + 'zlib.gyp:zlib', + ], + 'sources': [ + '../third_party/externals/libpng/arm/arm_init.c', + '../third_party/externals/libpng/arm/filter_neon.S', + '../third_party/externals/libpng/arm/filter_neon_intrinsics.c', + ], + 'conditions': [ + ['arm_neon_optional', { + 'cflags': [ + '-mfpu=neon', + ], + }], + ], + } ] } -- cgit v1.2.3