# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

declare_args() {
  skia_use_system_libjpeg_turbo = is_official_build
}

import("../third_party.gni")

if (skia_use_system_libjpeg_turbo) {
  system("libjpeg") {
    libs = [ "jpeg" ]
  }
} else {
  third_party("libjpeg") {
    public_include_dirs = [
      ".",
      "../externals/libjpeg-turbo",
    ]

    defines = [
      "TURBO_FOR_WINDOWS",

      # Add support for arithmetic encoding (C_) and decoding (D_).
      # This matches Android. Note that such JPEGs are likely rare, given lack of
      # support by major browsers.
      "C_ARITH_CODING_SUPPORTED=1",
      "D_ARITH_CODING_SUPPORTED=1",
    ]

    if (!is_win || is_clang) {
      defines += [ "USE_CLZ_INTRINSIC" ]  # Cuts a 64K table.
    }

    sources = [
      "../externals/libjpeg-turbo/jaricom.c",
      "../externals/libjpeg-turbo/jcapimin.c",
      "../externals/libjpeg-turbo/jcapistd.c",
      "../externals/libjpeg-turbo/jcarith.c",
      "../externals/libjpeg-turbo/jccoefct.c",
      "../externals/libjpeg-turbo/jccolor.c",
      "../externals/libjpeg-turbo/jcdctmgr.c",
      "../externals/libjpeg-turbo/jchuff.c",
      "../externals/libjpeg-turbo/jcinit.c",
      "../externals/libjpeg-turbo/jcmainct.c",
      "../externals/libjpeg-turbo/jcmarker.c",
      "../externals/libjpeg-turbo/jcmaster.c",
      "../externals/libjpeg-turbo/jcomapi.c",
      "../externals/libjpeg-turbo/jcparam.c",
      "../externals/libjpeg-turbo/jcphuff.c",
      "../externals/libjpeg-turbo/jcprepct.c",
      "../externals/libjpeg-turbo/jcsample.c",
      "../externals/libjpeg-turbo/jdapimin.c",
      "../externals/libjpeg-turbo/jdapistd.c",
      "../externals/libjpeg-turbo/jdarith.c",
      "../externals/libjpeg-turbo/jdcoefct.c",
      "../externals/libjpeg-turbo/jdcolor.c",
      "../externals/libjpeg-turbo/jddctmgr.c",
      "../externals/libjpeg-turbo/jdhuff.c",
      "../externals/libjpeg-turbo/jdinput.c",
      "../externals/libjpeg-turbo/jdmainct.c",
      "../externals/libjpeg-turbo/jdmarker.c",
      "../externals/libjpeg-turbo/jdmaster.c",
      "../externals/libjpeg-turbo/jdmerge.c",
      "../externals/libjpeg-turbo/jdphuff.c",
      "../externals/libjpeg-turbo/jdpostct.c",
      "../externals/libjpeg-turbo/jdsample.c",
      "../externals/libjpeg-turbo/jerror.c",
      "../externals/libjpeg-turbo/jfdctflt.c",
      "../externals/libjpeg-turbo/jfdctfst.c",
      "../externals/libjpeg-turbo/jfdctint.c",
      "../externals/libjpeg-turbo/jidctflt.c",
      "../externals/libjpeg-turbo/jidctfst.c",
      "../externals/libjpeg-turbo/jidctint.c",
      "../externals/libjpeg-turbo/jidctred.c",
      "../externals/libjpeg-turbo/jmemmgr.c",
      "../externals/libjpeg-turbo/jmemnobs.c",
      "../externals/libjpeg-turbo/jpeg_nbits_table.c",
      "../externals/libjpeg-turbo/jquant1.c",
      "../externals/libjpeg-turbo/jquant2.c",
      "../externals/libjpeg-turbo/jutils.c",
    ]

    if (current_cpu == "arm" && !is_ios && !is_win) {
      sources += [
        "../externals/libjpeg-turbo/simd/arm/arm/jsimd.c",
        "../externals/libjpeg-turbo/simd/arm/arm/jsimd_neon.S",
        "../externals/libjpeg-turbo/simd/arm/common/jcsample-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jdcolor-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jdmerge-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jdsample-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jidctfst-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jidctint-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jidctred-neon.c",
      ]
    } else if (current_cpu == "arm64" && !is_ios && !is_win) {
      sources += [
        "../externals/libjpeg-turbo/simd/arm/arm64/jsimd.c",
        "../externals/libjpeg-turbo/simd/arm/arm64/jsimd_neon.S",
        "../externals/libjpeg-turbo/simd/arm/common/jcsample-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jdcolor-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jdmerge-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jdsample-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jidctfst-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jidctint-neon.c",
        "../externals/libjpeg-turbo/simd/arm/common/jidctred-neon.c",
      ]
    } else {
      sources += [ "../externals/libjpeg-turbo/jsimd_none.c" ]
    }
  }
}
