| // Define dependencies. | 
 | buildscript { | 
 |   repositories { | 
 |     maven { | 
 |       url "https://jcenter.bintray.com" | 
 |     } | 
 |   } | 
 |   dependencies { | 
 |     classpath "com.android.tools.build:gradle:${ANDROID_GRADLE_PLUGIN_VERSION}" | 
 |   } | 
 | } | 
 |  | 
 | // Define versions in the project. | 
 | project.ext { | 
 |   buildToolsVersion = "${BUILD_TOOLS_VERSION}" | 
 |   compileSdkVersion = COMPILE_SDK_VERSION.toInteger() | 
 | } | 
 |  | 
 | // Core libraries and executables. | 
 | apply plugin: "c" | 
 | def NEON | 
 | model { | 
 |   buildTypes { | 
 |     debug | 
 |     release | 
 |   } | 
 |   platforms { | 
 |     arm { | 
 |       architecture "arm" | 
 |     } | 
 |     arm64 { | 
 |       architecture "arm64" | 
 |     } | 
 |     x86 { | 
 |       architecture "x86" | 
 |     } | 
 |     x64 { | 
 |       architecture "x86_64" | 
 |     } | 
 |     mips32r2 | 
 |     mips32r5 | 
 |     mips64r6 | 
 |   } | 
 |   toolChains { | 
 |     gcc(Gcc) { | 
 |       target("mips32r2") { | 
 |         cCompiler.args "-mips32r2" | 
 |       } | 
 |       target("mips32r5") { | 
 |         cCompiler.args "-mips32r5" | 
 |       } | 
 |       target("mips64r6") { | 
 |         cCompiler.args "-mips64r6" | 
 |       } | 
 |     } | 
 |   } | 
 |   binaries { | 
 |     all { | 
 |       if (toolChain in Gcc) { | 
 |         cCompiler.args "-fPIC" | 
 |         cCompiler.args "-Wall" | 
 |         cCompiler.define "ANDROID" | 
 |         cCompiler.define "HAVE_MALLOC_H" | 
 |       } | 
 |       // Optimizations. | 
 |       if (buildType == buildTypes.release) { | 
 |         if (toolChain in Gcc) { | 
 |           cCompiler.args "-finline-functions" | 
 |           cCompiler.args "-ffast-math" | 
 |           cCompiler.args "-ffunction-sections" | 
 |           cCompiler.args "-fdata-sections" | 
 |         } | 
 |         if (toolChain in Clang) { | 
 |           cCompiler.args "-frename-registers -s" | 
 |         } | 
 |       } | 
 |       // mips32 fails to build with clang from r14b | 
 |       // https://bugs.chromium.org/p/webp/issues/detail?id=343 | 
 |       if (toolChain in Clang) { | 
 |         if (getTargetPlatform() == "mips") { | 
 |           cCompiler.args "-no-integrated-as" | 
 |         } | 
 |       } | 
 |       // Check for NEON usage. | 
 |       if (getTargetPlatform() == "arm") { | 
 |         NEON = "c.neon" | 
 |         cCompiler.define "HAVE_CPU_FEATURES_H" | 
 |       } else { | 
 |         NEON = "c" | 
 |       } | 
 |  | 
 |       cCompiler.args "-I" + file(".").absolutePath | 
 |     } | 
 |     // Link to pthread for shared libraries. | 
 |     withType(SharedLibraryBinarySpec) { | 
 |       if (toolChain in Gcc) { | 
 |         cCompiler.define "HAVE_PTHREAD" | 
 |         cCompiler.define "WEBP_USE_THREAD" | 
 |         linker.args "-pthread" | 
 |       } | 
 |     } | 
 |   } | 
 |   components { | 
 |     webp(NativeLibrarySpec) { | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "sharpyuv" | 
 |             include "sharpyuv.c" | 
 |             include "sharpyuv_cpu.c" | 
 |             include "sharpyuv_csp.c" | 
 |             include "sharpyuv_dsp.c" | 
 |             include "sharpyuv_gamma.c" | 
 |             include "sharpyuv_neon.c" | 
 |             include "sharpyuv_sse2.c" | 
 |             srcDir "src/dec" | 
 |             include "alpha_dec.c" | 
 |             include "buffer_dec.c" | 
 |             include "frame_dec.c" | 
 |             include "idec_dec.c" | 
 |             include "io_dec.c" | 
 |             include "quant_dec.c" | 
 |             include "tree_dec.c" | 
 |             include "vp8_dec.c" | 
 |             include "vp8l_dec.c" | 
 |             include "webp_dec.c" | 
 |             srcDir "src/dsp" | 
 |             include "alpha_processing.c" | 
 |             include "alpha_processing_mips_dsp_r2.c" | 
 |             include "alpha_processing_neon.$NEON" | 
 |             include "alpha_processing_sse2.c" | 
 |             include "alpha_processing_sse41.c" | 
 |             include "cpu.c" | 
 |             include "dec.c" | 
 |             include "dec_clip_tables.c" | 
 |             include "dec_mips32.c" | 
 |             include "dec_mips_dsp_r2.c" | 
 |             include "dec_msa.c" | 
 |             include "dec_neon.$NEON" | 
 |             include "dec_sse2.c" | 
 |             include "dec_sse41.c" | 
 |             include "filters.c" | 
 |             include "filters_mips_dsp_r2.c" | 
 |             include "filters_msa.c" | 
 |             include "filters_neon.$NEON" | 
 |             include "filters_sse2.c" | 
 |             include "lossless.c" | 
 |             include "lossless_mips_dsp_r2.c" | 
 |             include "lossless_msa.c" | 
 |             include "lossless_neon.$NEON" | 
 |             include "lossless_sse2.c" | 
 |             include "lossless_sse41.c" | 
 |             include "rescaler.c" | 
 |             include "rescaler_mips32.c" | 
 |             include "rescaler_mips_dsp_r2.c" | 
 |             include "rescaler_msa.c" | 
 |             include "rescaler_neon.$NEON" | 
 |             include "rescaler_sse2.c" | 
 |             include "upsampling.c" | 
 |             include "upsampling_mips_dsp_r2.c" | 
 |             include "upsampling_msa.c" | 
 |             include "upsampling_neon.$NEON" | 
 |             include "upsampling_sse2.c" | 
 |             include "upsampling_sse41.c" | 
 |             include "yuv.c" | 
 |             include "yuv_mips32.c" | 
 |             include "yuv_mips_dsp_r2.c" | 
 |             include "yuv_neon.$NEON" | 
 |             include "yuv_sse2.c" | 
 |             include "yuv_sse41.c" | 
 |             srcDir "src/utils" | 
 |             include "bit_reader_utils.c" | 
 |             include "color_cache_utils.c" | 
 |             include "filters_utils.c" | 
 |             include "huffman_utils.c" | 
 |             include "quant_levels_dec_utils.c" | 
 |             include "random_utils.c" | 
 |             include "rescaler_utils.c" | 
 |             include "thread_utils.c" | 
 |             include "utils.c" | 
 |             srcDir "src/dsp" | 
 |             include "cost.c" | 
 |             include "cost_mips32.c" | 
 |             include "cost_mips_dsp_r2.c" | 
 |             include "cost_neon.$NEON" | 
 |             include "cost_sse2.c" | 
 |             include "enc.c" | 
 |             include "enc_mips32.c" | 
 |             include "enc_mips_dsp_r2.c" | 
 |             include "enc_msa.c" | 
 |             include "enc_neon.$NEON" | 
 |             include "enc_sse2.c" | 
 |             include "enc_sse41.c" | 
 |             include "lossless_enc.c" | 
 |             include "lossless_enc_mips32.c" | 
 |             include "lossless_enc_mips_dsp_r2.c" | 
 |             include "lossless_enc_msa.c" | 
 |             include "lossless_enc_neon.$NEON" | 
 |             include "lossless_enc_sse2.c" | 
 |             include "lossless_enc_sse41.c" | 
 |             include "ssim.c" | 
 |             include "ssim_sse2.c" | 
 |             srcDir "src/enc" | 
 |             include "alpha_enc.c" | 
 |             include "analysis_enc.c" | 
 |             include "backward_references_cost_enc.c" | 
 |             include "backward_references_enc.c" | 
 |             include "config_enc.c" | 
 |             include "cost_enc.c" | 
 |             include "filter_enc.c" | 
 |             include "frame_enc.c" | 
 |             include "histogram_enc.c" | 
 |             include "iterator_enc.c" | 
 |             include "near_lossless_enc.c" | 
 |             include "picture_enc.c" | 
 |             include "picture_csp_enc.c" | 
 |             include "picture_psnr_enc.c" | 
 |             include "picture_rescale_enc.c" | 
 |             include "picture_tools_enc.c" | 
 |             include "predictor_enc.c" | 
 |             include "quant_enc.c" | 
 |             include "syntax_enc.c" | 
 |             include "token_enc.c" | 
 |             include "tree_enc.c" | 
 |             include "vp8l_enc.c" | 
 |             include "webp_enc.c" | 
 |             srcDir "src/utils" | 
 |             include "bit_writer_utils.c" | 
 |             include "huffman_encode_utils.c" | 
 |             include "quant_levels_utils.c" | 
 |           } | 
 |           exportedHeaders { | 
 |             srcDir "src" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     webpdemux(NativeLibrarySpec) { | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "src/demux" | 
 |             include "anim_decode.c" | 
 |             include "demux.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     webpmux(NativeLibrarySpec) { | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "src/mux/" | 
 |             include "anim_encode.c" | 
 |             include "muxedit.c" | 
 |             include "muxinternal.c" | 
 |             include "muxread.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     // Executables from examples. | 
 |     example_util(NativeLibrarySpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "webp", linkage: "static" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./examples" | 
 |             include "example_util.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     imageio_util(NativeLibrarySpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "webp", linkage: "static" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./imageio" | 
 |             include "imageio_util.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     imagedec(NativeLibrarySpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "webpdemux", linkage: "static" | 
 |           lib library: "webp", linkage: "static" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./imageio" | 
 |             include "image_dec.c" | 
 |             include "jpegdec.c" | 
 |             include "metadata.c" | 
 |             include "pngdec.c" | 
 |             include "pnmdec.c" | 
 |             include "tiffdec.c" | 
 |             include "webpdec.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     imageenc(NativeLibrarySpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "webp", linkage: "static" | 
 |           lib library: "imageio_util", linkage: "static" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./imageio" | 
 |             include "image_enc.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     cwebp(NativeExecutableSpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "example_util", linkage: "static" | 
 |           lib library: "imagedec", linkage: "static" | 
 |           lib library: "imageio_util", linkage: "static" | 
 |           lib library: "webpdemux", linkage: "static" | 
 |           lib library: "webp", linkage: "static" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./examples" | 
 |             include "cwebp.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     dwebp(NativeExecutableSpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "example_util", linkage: "static" | 
 |           lib library: "imagedec", linkage: "static" | 
 |           lib library: "imageenc", linkage: "static" | 
 |           lib library: "imageio_util", linkage: "static" | 
 |           lib library: "webpdemux", linkage: "static" | 
 |           lib library: "webp" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |               srcDir "./examples" | 
 |               include "dwebp.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     webpmux_example(NativeExecutableSpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "example_util", linkage: "static" | 
 |           lib library: "imageio_util", linkage: "static" | 
 |           lib library: "webpmux", linkage: "static" | 
 |           lib library: "webp" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./examples" | 
 |             include "webpmux.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     img2webp_example(NativeExecutableSpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "example_util", linkage: "static" | 
 |           lib library: "imagedec", linkage: "static" | 
 |           lib library: "imageio_util", linkage: "static" | 
 |           lib library: "webpmux", linkage: "static" | 
 |           lib library: "webpdemux", linkage: "static" | 
 |           lib library: "webp" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./examples" | 
 |             include "img2webp.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |  | 
 |     webpinfo_example(NativeExecutableSpec) { | 
 |       binaries { | 
 |         all { | 
 |           lib library: "example_util", linkage: "static" | 
 |           lib library: "imageio_util", linkage: "static" | 
 |           lib library: "webp" | 
 |         } | 
 |       } | 
 |       sources { | 
 |         c { | 
 |           source { | 
 |             srcDir "./examples" | 
 |             include "webpinfo.c" | 
 |           } | 
 |         } | 
 |       } | 
 |     } | 
 |   } | 
 |   tasks { | 
 |     // Task to test all possible configurations. | 
 |     buildAllExecutables(Task) { | 
 |       dependsOn $.binaries.findAll { it.buildable } | 
 |     } | 
 |   } | 
 | } |