Blame build.gradle

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