go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

build.gradle (11643B)


      1 // Define dependencies.
      2 buildscript {
      3   repositories {
      4     maven {
      5       url "https://jcenter.bintray.com"
      6     }
      7   }
      8   dependencies {
      9     classpath "com.android.tools.build:gradle:${ANDROID_GRADLE_PLUGIN_VERSION}"
     10   }
     11 }
     12 
     13 // Define versions in the project.
     14 project.ext {
     15   buildToolsVersion = "${BUILD_TOOLS_VERSION}"
     16   compileSdkVersion = COMPILE_SDK_VERSION.toInteger()
     17 }
     18 
     19 // Core libraries and executables.
     20 apply plugin: "c"
     21 def NEON
     22 model {
     23   buildTypes {
     24     debug
     25     release
     26   }
     27   platforms {
     28     arm {
     29       architecture "arm"
     30     }
     31     arm64 {
     32       architecture "arm64"
     33     }
     34     x86 {
     35       architecture "x86"
     36     }
     37     x64 {
     38       architecture "x86_64"
     39     }
     40     mips32r2
     41     mips32r5
     42     mips64r6
     43   }
     44   toolChains {
     45     gcc(Gcc) {
     46       target("mips32r2") {
     47         cCompiler.args "-mips32r2"
     48       }
     49       target("mips32r5") {
     50         cCompiler.args "-mips32r5"
     51       }
     52       target("mips64r6") {
     53         cCompiler.args "-mips64r6"
     54       }
     55     }
     56   }
     57   binaries {
     58     all {
     59       if (toolChain in Gcc) {
     60         cCompiler.args "-fPIC"
     61         cCompiler.args "-Wall"
     62         cCompiler.define "ANDROID"
     63         cCompiler.define "HAVE_MALLOC_H"
     64       }
     65       // Optimizations.
     66       if (buildType == buildTypes.release) {
     67         if (toolChain in Gcc) {
     68           cCompiler.args "-finline-functions"
     69           cCompiler.args "-ffast-math"
     70           cCompiler.args "-ffunction-sections"
     71           cCompiler.args "-fdata-sections"
     72         }
     73         if (toolChain in Clang) {
     74           cCompiler.args "-frename-registers -s"
     75         }
     76       }
     77       // mips32 fails to build with clang from r14b
     78       // https://bugs.chromium.org/p/webp/issues/detail?id=343
     79       if (toolChain in Clang) {
     80         if (getTargetPlatform() == "mips") {
     81           cCompiler.args "-no-integrated-as"
     82         }
     83       }
     84       // Check for NEON usage.
     85       if (getTargetPlatform() == "arm") {
     86         NEON = "c.neon"
     87         cCompiler.define "HAVE_CPU_FEATURES_H"
     88       } else {
     89         NEON = "c"
     90       }
     91 
     92       cCompiler.args "-I" + file(".").absolutePath
     93     }
     94     // Link to pthread for shared libraries.
     95     withType(SharedLibraryBinarySpec) {
     96       if (toolChain in Gcc) {
     97         cCompiler.define "HAVE_PTHREAD"
     98         cCompiler.define "WEBP_USE_THREAD"
     99         linker.args "-pthread"
    100       }
    101     }
    102   }
    103   components {
    104     webp(NativeLibrarySpec) {
    105       sources {
    106         c {
    107           source {
    108             srcDir "sharpyuv"
    109             include "sharpyuv.c"
    110             include "sharpyuv_cpu.c"
    111             include "sharpyuv_csp.c"
    112             include "sharpyuv_dsp.c"
    113             include "sharpyuv_gamma.c"
    114             include "sharpyuv_neon.c"
    115             include "sharpyuv_sse2.c"
    116             srcDir "src/dec"
    117             include "alpha_dec.c"
    118             include "buffer_dec.c"
    119             include "frame_dec.c"
    120             include "idec_dec.c"
    121             include "io_dec.c"
    122             include "quant_dec.c"
    123             include "tree_dec.c"
    124             include "vp8_dec.c"
    125             include "vp8l_dec.c"
    126             include "webp_dec.c"
    127             srcDir "src/dsp"
    128             include "alpha_processing.c"
    129             include "alpha_processing_mips_dsp_r2.c"
    130             include "alpha_processing_neon.$NEON"
    131             include "alpha_processing_sse2.c"
    132             include "alpha_processing_sse41.c"
    133             include "cpu.c"
    134             include "dec.c"
    135             include "dec_clip_tables.c"
    136             include "dec_mips32.c"
    137             include "dec_mips_dsp_r2.c"
    138             include "dec_msa.c"
    139             include "dec_neon.$NEON"
    140             include "dec_sse2.c"
    141             include "dec_sse41.c"
    142             include "filters.c"
    143             include "filters_mips_dsp_r2.c"
    144             include "filters_msa.c"
    145             include "filters_neon.$NEON"
    146             include "filters_sse2.c"
    147             include "lossless.c"
    148             include "lossless_mips_dsp_r2.c"
    149             include "lossless_msa.c"
    150             include "lossless_neon.$NEON"
    151             include "lossless_sse2.c"
    152             include "lossless_sse41.c"
    153             include "rescaler.c"
    154             include "rescaler_mips32.c"
    155             include "rescaler_mips_dsp_r2.c"
    156             include "rescaler_msa.c"
    157             include "rescaler_neon.$NEON"
    158             include "rescaler_sse2.c"
    159             include "upsampling.c"
    160             include "upsampling_mips_dsp_r2.c"
    161             include "upsampling_msa.c"
    162             include "upsampling_neon.$NEON"
    163             include "upsampling_sse2.c"
    164             include "upsampling_sse41.c"
    165             include "yuv.c"
    166             include "yuv_mips32.c"
    167             include "yuv_mips_dsp_r2.c"
    168             include "yuv_neon.$NEON"
    169             include "yuv_sse2.c"
    170             include "yuv_sse41.c"
    171             srcDir "src/utils"
    172             include "bit_reader_utils.c"
    173             include "color_cache_utils.c"
    174             include "filters_utils.c"
    175             include "huffman_utils.c"
    176             include "palette.c"
    177             include "quant_levels_dec_utils.c"
    178             include "random_utils.c"
    179             include "rescaler_utils.c"
    180             include "thread_utils.c"
    181             include "utils.c"
    182             srcDir "src/dsp"
    183             include "cost.c"
    184             include "cost_mips32.c"
    185             include "cost_mips_dsp_r2.c"
    186             include "cost_neon.$NEON"
    187             include "cost_sse2.c"
    188             include "enc.c"
    189             include "enc_mips32.c"
    190             include "enc_mips_dsp_r2.c"
    191             include "enc_msa.c"
    192             include "enc_neon.$NEON"
    193             include "enc_sse2.c"
    194             include "enc_sse41.c"
    195             include "lossless_enc.c"
    196             include "lossless_enc_mips32.c"
    197             include "lossless_enc_mips_dsp_r2.c"
    198             include "lossless_enc_msa.c"
    199             include "lossless_enc_neon.$NEON"
    200             include "lossless_enc_sse2.c"
    201             include "lossless_enc_sse41.c"
    202             include "ssim.c"
    203             include "ssim_sse2.c"
    204             srcDir "src/enc"
    205             include "alpha_enc.c"
    206             include "analysis_enc.c"
    207             include "backward_references_cost_enc.c"
    208             include "backward_references_enc.c"
    209             include "config_enc.c"
    210             include "cost_enc.c"
    211             include "filter_enc.c"
    212             include "frame_enc.c"
    213             include "histogram_enc.c"
    214             include "iterator_enc.c"
    215             include "near_lossless_enc.c"
    216             include "picture_enc.c"
    217             include "picture_csp_enc.c"
    218             include "picture_psnr_enc.c"
    219             include "picture_rescale_enc.c"
    220             include "picture_tools_enc.c"
    221             include "predictor_enc.c"
    222             include "quant_enc.c"
    223             include "syntax_enc.c"
    224             include "token_enc.c"
    225             include "tree_enc.c"
    226             include "vp8l_enc.c"
    227             include "webp_enc.c"
    228             srcDir "src/utils"
    229             include "bit_writer_utils.c"
    230             include "huffman_encode_utils.c"
    231             include "quant_levels_utils.c"
    232           }
    233           exportedHeaders {
    234             srcDir "src"
    235           }
    236         }
    237       }
    238     }
    239 
    240     webpdemux(NativeLibrarySpec) {
    241       sources {
    242         c {
    243           source {
    244             srcDir "src/demux"
    245             include "anim_decode.c"
    246             include "demux.c"
    247           }
    248         }
    249       }
    250     }
    251 
    252     webpmux(NativeLibrarySpec) {
    253       sources {
    254         c {
    255           source {
    256             srcDir "src/mux/"
    257             include "anim_encode.c"
    258             include "muxedit.c"
    259             include "muxinternal.c"
    260             include "muxread.c"
    261           }
    262         }
    263       }
    264     }
    265 
    266     // Executables from examples.
    267     example_util(NativeLibrarySpec) {
    268       binaries {
    269         all {
    270           lib library: "webp", linkage: "static"
    271         }
    272       }
    273       sources {
    274         c {
    275           source {
    276             srcDir "./examples"
    277             include "example_util.c"
    278           }
    279         }
    280       }
    281     }
    282 
    283     imageio_util(NativeLibrarySpec) {
    284       binaries {
    285         all {
    286           lib library: "webp", linkage: "static"
    287         }
    288       }
    289       sources {
    290         c {
    291           source {
    292             srcDir "./imageio"
    293             include "imageio_util.c"
    294           }
    295         }
    296       }
    297     }
    298 
    299     imagedec(NativeLibrarySpec) {
    300       binaries {
    301         all {
    302           lib library: "webpdemux", linkage: "static"
    303           lib library: "webp", linkage: "static"
    304         }
    305       }
    306       sources {
    307         c {
    308           source {
    309             srcDir "./imageio"
    310             include "image_dec.c"
    311             include "jpegdec.c"
    312             include "metadata.c"
    313             include "pngdec.c"
    314             include "pnmdec.c"
    315             include "tiffdec.c"
    316             include "webpdec.c"
    317           }
    318         }
    319       }
    320     }
    321 
    322     imageenc(NativeLibrarySpec) {
    323       binaries {
    324         all {
    325           lib library: "webp", linkage: "static"
    326           lib library: "imageio_util", linkage: "static"
    327         }
    328       }
    329       sources {
    330         c {
    331           source {
    332             srcDir "./imageio"
    333             include "image_enc.c"
    334           }
    335         }
    336       }
    337     }
    338 
    339     cwebp(NativeExecutableSpec) {
    340       binaries {
    341         all {
    342           lib library: "example_util", linkage: "static"
    343           lib library: "imagedec", linkage: "static"
    344           lib library: "imageio_util", linkage: "static"
    345           lib library: "webpdemux", linkage: "static"
    346           lib library: "webp", linkage: "static"
    347         }
    348       }
    349       sources {
    350         c {
    351           source {
    352             srcDir "./examples"
    353             include "cwebp.c"
    354           }
    355         }
    356       }
    357     }
    358 
    359     dwebp(NativeExecutableSpec) {
    360       binaries {
    361         all {
    362           lib library: "example_util", linkage: "static"
    363           lib library: "imagedec", linkage: "static"
    364           lib library: "imageenc", linkage: "static"
    365           lib library: "imageio_util", linkage: "static"
    366           lib library: "webpdemux", linkage: "static"
    367           lib library: "webp"
    368         }
    369       }
    370       sources {
    371         c {
    372           source {
    373               srcDir "./examples"
    374               include "dwebp.c"
    375           }
    376         }
    377       }
    378     }
    379 
    380     webpmux_example(NativeExecutableSpec) {
    381       binaries {
    382         all {
    383           lib library: "example_util", linkage: "static"
    384           lib library: "imageio_util", linkage: "static"
    385           lib library: "webpmux", linkage: "static"
    386           lib library: "webp"
    387         }
    388       }
    389       sources {
    390         c {
    391           source {
    392             srcDir "./examples"
    393             include "webpmux.c"
    394           }
    395         }
    396       }
    397     }
    398 
    399     img2webp_example(NativeExecutableSpec) {
    400       binaries {
    401         all {
    402           lib library: "example_util", linkage: "static"
    403           lib library: "imagedec", linkage: "static"
    404           lib library: "imageio_util", linkage: "static"
    405           lib library: "webpmux", linkage: "static"
    406           lib library: "webpdemux", linkage: "static"
    407           lib library: "webp"
    408         }
    409       }
    410       sources {
    411         c {
    412           source {
    413             srcDir "./examples"
    414             include "img2webp.c"
    415           }
    416         }
    417       }
    418     }
    419 
    420     webpinfo_example(NativeExecutableSpec) {
    421       binaries {
    422         all {
    423           lib library: "example_util", linkage: "static"
    424           lib library: "imageio_util", linkage: "static"
    425           lib library: "webp"
    426         }
    427       }
    428       sources {
    429         c {
    430           source {
    431             srcDir "./examples"
    432             include "webpinfo.c"
    433           }
    434         }
    435       }
    436     }
    437   }
    438   tasks {
    439     // Task to test all possible configurations.
    440     buildAllExecutables(Task) {
    441       dependsOn $.binaries.findAll { it.buildable }
    442     }
    443   }
    444 }