aboutsummaryrefslogtreecommitdiffhomepage
path: root/gyp
diff options
context:
space:
mode:
authorGravatar djsollen <djsollen@google.com>2015-04-03 12:35:27 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-04-03 12:35:27 -0700
commitb2a6fe7976ae85242f9266be23eab025a7e8e7e7 (patch)
tree92c840da319692114516ad4d3b83d31f079573ee /gyp
parentaed98b80d9a0092e8e3d3fd3ebf237b1c652f9c8 (diff)
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
Diffstat (limited to 'gyp')
-rw-r--r--gyp/codec.gyp16
-rw-r--r--gyp/common_variables.gypi9
-rw-r--r--gyp/libpng.gyp160
3 files changed, 107 insertions, 78 deletions
diff --git a/gyp/codec.gyp b/gyp/codec.gyp
index eb49f6cd5c..1373773940 100644
--- a/gyp/codec.gyp
+++ b/gyp/codec.gyp
@@ -18,7 +18,6 @@
'dependencies': [
'core.gyp:*',
'giflib.gyp:giflib',
- 'libpng.gyp:libpng',
],
'cflags':[
# FIXME: This gets around a longjmp warning. See
@@ -47,6 +46,21 @@
'../include/codec',
],
},
+ 'conditions': [
+ [ 'skia_android_framework == 1',
+ {
+ # TODO(djsollen): this is a temporary dependency until we can update
+ # the android framework to a more recent version of libpng.
+ 'dependencies': [
+ 'libpng.gyp:libpng',
+ ],
+ }, { # !skia_android_framework
+ 'dependencies': [
+ 'libpng.gyp:libpng_static',
+ ],
+ }
+ ]
+ ]
},
],
}
diff --git a/gyp/common_variables.gypi b/gyp/common_variables.gypi
index b9f0bd7a9a..3cd3fc4f5b 100644
--- a/gyp/common_variables.gypi
+++ b/gyp/common_variables.gypi
@@ -162,15 +162,6 @@
}, {
'skia_release_optimization_level%': '<(skia_default_gcc_optimization_level)',
}],
- [ 'skia_os == "android"', {
- # skia_libpng_static - instead of linking libpng with '-lpng' and
- # including the headers from '/usr/include/png.h', compile and
- # statically link the version of libpng in
- # third_party/externals/libpng.
- 'skia_libpng_static%': '0',
- }, {
- 'skia_libpng_static%': '1',
- }],
[ 'skia_sanitizer', {
'skia_clang_build': 1,
'skia_keep_frame_pointer': 1,
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',
+ ],
+ }],
+ ],
+ }
]
}