# 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" ]

    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/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/jsimd.c",
        "../externals/libjpeg-turbo/simd/arm/jsimd_neon.S",
      ]
    } else if (current_cpu == "arm64" && !is_ios && !is_win) {
      sources += [
        "../externals/libjpeg-turbo/simd/arm64/jsimd.c",
        "../externals/libjpeg-turbo/simd/arm64/jsimd_neon.S",
      ]
    } else {
      sources += [ "../externals/libjpeg-turbo/jsimd_none.c" ]
    }
  }
}
