1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2016 Google Inc. 2*c8dee2aaSAndroid Build Coastguard Worker# 3*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Workerdeclare_args() { 7*c8dee2aaSAndroid Build Coastguard Worker skia_use_system_libwebp = is_official_build && !is_wasm 8*c8dee2aaSAndroid Build Coastguard Worker} 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Workerimport("../third_party.gni") 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_system_libwebp) { 13*c8dee2aaSAndroid Build Coastguard Worker system("libwebp") { 14*c8dee2aaSAndroid Build Coastguard Worker libs = [ 15*c8dee2aaSAndroid Build Coastguard Worker "webp", 16*c8dee2aaSAndroid Build Coastguard Worker "webpdemux", 17*c8dee2aaSAndroid Build Coastguard Worker "webpmux", 18*c8dee2aaSAndroid Build Coastguard Worker ] 19*c8dee2aaSAndroid Build Coastguard Worker } 20*c8dee2aaSAndroid Build Coastguard Worker} else { 21*c8dee2aaSAndroid Build Coastguard Worker config("libwebp_defines") { 22*c8dee2aaSAndroid Build Coastguard Worker defines = [ 23*c8dee2aaSAndroid Build Coastguard Worker # WebP naturally decodes to RGB_565, and we work with BGR_565. 24*c8dee2aaSAndroid Build Coastguard Worker # This makes WebP decode to BGR_565 when we ask for RGB_565. 25*c8dee2aaSAndroid Build Coastguard Worker # (It also swaps the color order for 4444, but we don't care today.) 26*c8dee2aaSAndroid Build Coastguard Worker # TODO: swizzle ourself in SkWebpCodec instead of requiring this non-standard libwebp. 27*c8dee2aaSAndroid Build Coastguard Worker "WEBP_SWAP_16BIT_CSP", 28*c8dee2aaSAndroid Build Coastguard Worker ] 29*c8dee2aaSAndroid Build Coastguard Worker } 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker third_party("libwebp_sse41") { 32*c8dee2aaSAndroid Build Coastguard Worker public_include_dirs = [ 33*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src", 34*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp", 35*c8dee2aaSAndroid Build Coastguard Worker ] 36*c8dee2aaSAndroid Build Coastguard Worker configs = [ ":libwebp_defines" ] 37*c8dee2aaSAndroid Build Coastguard Worker sources = [ 38*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/alpha_processing_sse41.c", 39*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_sse41.c", 40*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc_sse41.c", 41*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc_sse41.c", 42*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_sse41.c", 43*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/upsampling_sse41.c", 44*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/yuv_sse41.c", 45*c8dee2aaSAndroid Build Coastguard Worker ] 46*c8dee2aaSAndroid Build Coastguard Worker if ((current_cpu == "x86" || current_cpu == "x64") && 47*c8dee2aaSAndroid Build Coastguard Worker (!is_win || is_clang)) { 48*c8dee2aaSAndroid Build Coastguard Worker cflags_c = [ "-msse4.1" ] 49*c8dee2aaSAndroid Build Coastguard Worker } 50*c8dee2aaSAndroid Build Coastguard Worker } 51*c8dee2aaSAndroid Build Coastguard Worker 52*c8dee2aaSAndroid Build Coastguard Worker third_party("libwebp") { 53*c8dee2aaSAndroid Build Coastguard Worker public_include_dirs = [ 54*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src", 55*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp", 56*c8dee2aaSAndroid Build Coastguard Worker ] 57*c8dee2aaSAndroid Build Coastguard Worker 58*c8dee2aaSAndroid Build Coastguard Worker deps = [ ":libwebp_sse41" ] 59*c8dee2aaSAndroid Build Coastguard Worker if (is_android) { 60*c8dee2aaSAndroid Build Coastguard Worker deps += [ "//third_party/cpu-features" ] 61*c8dee2aaSAndroid Build Coastguard Worker } 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker configs = [ ":libwebp_defines" ] 64*c8dee2aaSAndroid Build Coastguard Worker sources = [ 65*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv.c", 66*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv_cpu.c", 67*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv_csp.c", 68*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv_dsp.c", 69*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv_gamma.c", 70*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv_neon.c", 71*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/sharpyuv/sharpyuv_sse2.c", 72*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/alpha_dec.c", 73*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/buffer_dec.c", 74*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/frame_dec.c", 75*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/idec_dec.c", 76*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/io_dec.c", 77*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/quant_dec.c", 78*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/tree_dec.c", 79*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/vp8_dec.c", 80*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/vp8l_dec.c", 81*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dec/webp_dec.c", 82*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/demux/anim_decode.c", 83*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/demux/demux.c", 84*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/alpha_processing.c", 85*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/alpha_processing_mips_dsp_r2.c", 86*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/alpha_processing_neon.c", 87*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/alpha_processing_sse2.c", 88*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/cost.c", 89*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/cost_mips32.c", 90*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/cost_mips_dsp_r2.c", 91*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/cost_neon.c", 92*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/cost_sse2.c", 93*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/cpu.c", 94*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec.c", 95*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_clip_tables.c", 96*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_mips32.c", 97*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_mips_dsp_r2.c", 98*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_msa.c", 99*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_neon.c", 100*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/dec_sse2.c", 101*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc.c", 102*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc_mips32.c", 103*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc_mips_dsp_r2.c", 104*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc_msa.c", 105*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc_neon.c", 106*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/enc_sse2.c", 107*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/filters.c", 108*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/filters_mips_dsp_r2.c", 109*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/filters_msa.c", 110*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/filters_neon.c", 111*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/filters_sse2.c", 112*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless.c", 113*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc.c", 114*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc_mips32.c", 115*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc_mips_dsp_r2.c", 116*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc_msa.c", 117*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc_neon.c", 118*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_enc_sse2.c", 119*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_mips_dsp_r2.c", 120*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_msa.c", 121*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_neon.c", 122*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/lossless_sse2.c", 123*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/rescaler.c", 124*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/rescaler_mips32.c", 125*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/rescaler_mips_dsp_r2.c", 126*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/rescaler_msa.c", 127*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/rescaler_neon.c", 128*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/rescaler_sse2.c", 129*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/ssim.c", 130*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/ssim_sse2.c", 131*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/upsampling.c", 132*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/upsampling_mips_dsp_r2.c", 133*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/upsampling_msa.c", 134*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/upsampling_neon.c", 135*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/upsampling_sse2.c", 136*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/yuv.c", 137*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/yuv_mips32.c", 138*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/yuv_mips_dsp_r2.c", 139*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/yuv_neon.c", 140*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/dsp/yuv_sse2.c", 141*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/alpha_enc.c", 142*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/analysis_enc.c", 143*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/backward_references_cost_enc.c", 144*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/backward_references_enc.c", 145*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/config_enc.c", 146*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/cost_enc.c", 147*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/filter_enc.c", 148*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/frame_enc.c", 149*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/histogram_enc.c", 150*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/iterator_enc.c", 151*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/near_lossless_enc.c", 152*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/picture_csp_enc.c", 153*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/picture_enc.c", 154*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/picture_psnr_enc.c", 155*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/picture_rescale_enc.c", 156*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/picture_tools_enc.c", 157*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/predictor_enc.c", 158*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/quant_enc.c", 159*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/syntax_enc.c", 160*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/token_enc.c", 161*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/tree_enc.c", 162*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/vp8l_enc.c", 163*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/enc/webp_enc.c", 164*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/mux/anim_encode.c", 165*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/mux/muxedit.c", 166*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/mux/muxinternal.c", 167*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/mux/muxread.c", 168*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/bit_reader_utils.c", 169*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/bit_writer_utils.c", 170*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/color_cache_utils.c", 171*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/filters_utils.c", 172*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/huffman_encode_utils.c", 173*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/huffman_utils.c", 174*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/palette.c", 175*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/quant_levels_dec_utils.c", 176*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/quant_levels_utils.c", 177*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/random_utils.c", 178*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/rescaler_utils.c", 179*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/thread_utils.c", 180*c8dee2aaSAndroid Build Coastguard Worker "../externals/libwebp/src/utils/utils.c", 181*c8dee2aaSAndroid Build Coastguard Worker ] 182*c8dee2aaSAndroid Build Coastguard Worker } 183*c8dee2aaSAndroid Build Coastguard Worker} 184