Upstream Android modifications to the image encoders/decoders.

This CL does not update the libjpeg as that change is large enough
to warrant its own CL.


Author: djsollen@google.com

Reviewed By: reed@google.com,robertphillips@google.com,scroggo@google.com

Review URL: https://chromiumcodereview.appspot.com/12604006

git-svn-id: http://skia.googlecode.com/svn/trunk@8155 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/libwebp.gyp b/gyp/libwebp.gyp
new file mode 100644
index 0000000..ad3f47a
--- /dev/null
+++ b/gyp/libwebp.gyp
@@ -0,0 +1,174 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+  'variables': {
+    'use_system_libwebp%': 0,
+  },
+  'conditions': [
+    ['use_system_libwebp==0', {
+      'targets': [
+        {
+          'target_name': 'libwebp_dec',
+          'type': 'static_library',
+          'include_dirs': [
+              '../third_party/externals/libwebp',
+          ],
+          'sources': [
+            '../third_party/externals/libwebp/dec/alpha.c',
+            '../third_party/externals/libwebp/dec/buffer.c',
+            '../third_party/externals/libwebp/dec/frame.c',
+            '../third_party/externals/libwebp/dec/idec.c',
+            '../third_party/externals/libwebp/dec/io.c',
+            '../third_party/externals/libwebp/dec/layer.c',
+            '../third_party/externals/libwebp/dec/quant.c',
+            '../third_party/externals/libwebp/dec/tree.c',
+            '../third_party/externals/libwebp/dec/vp8.c',
+            '../third_party/externals/libwebp/dec/vp8l.c',
+            '../third_party/externals/libwebp/dec/webp.c',
+          ],
+          'cflags!': [
+            '-fno-rtti', # supresses warnings about invalid option of non-C++ code
+          ],
+        },
+        {
+          'target_name': 'libwebp_dsp',
+          'type': 'static_library',
+          'include_dirs': [
+              '../third_party/externals/libwebp',
+          ],
+          'sources': [
+            '../third_party/externals/libwebp/dsp/cpu.c',
+            '../third_party/externals/libwebp/dsp/dec.c',
+            '../third_party/externals/libwebp/dsp/dec_sse2.c',
+            '../third_party/externals/libwebp/dsp/enc.c',
+            '../third_party/externals/libwebp/dsp/enc_sse2.c',
+            '../third_party/externals/libwebp/dsp/lossless.c',
+            '../third_party/externals/libwebp/dsp/upsampling.c',
+            '../third_party/externals/libwebp/dsp/upsampling_sse2.c',
+            '../third_party/externals/libwebp/dsp/yuv.c',
+          ],
+          'cflags!': [
+            '-fno-rtti', # supresses warnings about invalid option of non-C++ code
+          ],
+          'conditions': [
+            ['skia_os == "android"', {
+              'dependencies' : [
+                'android_deps.gyp:cpu_features',
+              ],
+            }],
+          ],
+        },
+        {
+          'target_name': 'libwebp_dsp_neon',
+          'conditions': [
+            ['armv7 == 1', {
+              'type': 'static_library',
+              'include_dirs': [
+                  '../third_party/externals/libwebp',
+              ],
+              'sources': [
+                '../third_party/externals/libwebp/dsp/dec_neon.c',
+              ],
+              # behavior similar dsp_neon.c.neon in an Android.mk
+              'cflags!': [ 
+                '-mfpu=vfpv3-d16',
+                '-fno-rtti', # supresses warnings about invalid option of non-C++ code
+              ],
+              'cflags': [ '-mfpu=neon' ],
+            },{  # "armv7 != 1"
+              'type': 'none',
+            }],
+          ],
+        },
+        {
+          'target_name': 'libwebp_enc',
+          'type': 'static_library',
+          'include_dirs': [
+              '../third_party/externals/libwebp',
+          ],
+          'sources': [
+            '../third_party/externals/libwebp/enc/alpha.c',
+            '../third_party/externals/libwebp/enc/analysis.c',
+            '../third_party/externals/libwebp/enc/backward_references.c',
+            '../third_party/externals/libwebp/enc/config.c',
+            '../third_party/externals/libwebp/enc/cost.c',
+            '../third_party/externals/libwebp/enc/filter.c',
+            '../third_party/externals/libwebp/enc/frame.c',
+            '../third_party/externals/libwebp/enc/histogram.c',
+            '../third_party/externals/libwebp/enc/iterator.c',
+            '../third_party/externals/libwebp/enc/layer.c',
+            '../third_party/externals/libwebp/enc/picture.c',
+            '../third_party/externals/libwebp/enc/quant.c',
+            '../third_party/externals/libwebp/enc/syntax.c',
+            '../third_party/externals/libwebp/enc/tree.c',
+            '../third_party/externals/libwebp/enc/vp8l.c',
+            '../third_party/externals/libwebp/enc/webpenc.c',
+          ],
+          'cflags!': [
+            '-fno-rtti', # supresses warnings about invalid option of non-C++ code
+          ],
+        },
+        {
+          'target_name': 'libwebp_utils',
+          'type': 'static_library',
+          'include_dirs': [
+              '../third_party/externals/libwebp',
+          ],
+          'sources': [
+            '../third_party/externals/libwebp/utils/bit_reader.c',
+            '../third_party/externals/libwebp/utils/bit_writer.c',
+            '../third_party/externals/libwebp/utils/color_cache.c',
+            '../third_party/externals/libwebp/utils/filters.c',
+            '../third_party/externals/libwebp/utils/huffman.c',
+            '../third_party/externals/libwebp/utils/huffman_encode.c',
+            '../third_party/externals/libwebp/utils/quant_levels.c',
+            '../third_party/externals/libwebp/utils/rescaler.c',
+            '../third_party/externals/libwebp/utils/thread.c',
+            '../third_party/externals/libwebp/utils/utils.c',
+          ],
+          'cflags!': [
+            '-fno-rtti', # supresses warnings about invalid option of non-C++ code
+          ],
+        },
+        {
+          'target_name': 'libwebp',
+          'type': 'none',
+          'dependencies' : [
+            'libwebp_dec',
+            'libwebp_dsp',
+            'libwebp_dsp_neon',
+            'libwebp_enc',
+            'libwebp_utils',
+          ],
+          'direct_dependent_settings': {
+            'include_dirs': [
+              '../third_party/externals/libwebp',
+            ],
+          },
+          'conditions': [
+            ['OS!="win"', {'product_name': 'webp'}],
+          ],
+        },
+      ],
+    }, {
+      'targets': [
+        {
+          'target_name': 'libwebp',
+          'type': 'none',
+          'direct_dependent_settings': {
+            'defines': [
+              'ENABLE_WEBP',
+            ],
+          },
+          'link_settings': {
+            'libraries': [
+              '-lwebp',
+            ],
+          },
+        }
+      ],
+    }],
+  ],
+}