|  | # Copyright 2014 The Chromium Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | # Do not use the targets in this file unless you need a certain libjpeg | 
|  | # implementation. Use the meta target //third_party:jpeg instead. | 
|  |  | 
|  | import("//build/config/sanitizers/sanitizers.gni") | 
|  | if (current_cpu == "arm") { | 
|  | import("//build/config/arm.gni") | 
|  | } | 
|  |  | 
|  | assert(!is_ios, "This is not used on iOS, don't drag it in unintentionally") | 
|  |  | 
|  | if (current_cpu == "x86" || current_cpu == "x64") { | 
|  | import("//third_party/yasm/yasm_assemble.gni") | 
|  |  | 
|  | yasm_assemble("simd_asm") { | 
|  | defines = [] | 
|  |  | 
|  | if (current_cpu == "x86") { | 
|  | sources = [ | 
|  | "simd/jccolor-mmx.asm", | 
|  | "simd/jccolor-sse2.asm", | 
|  | "simd/jcgray-mmx.asm", | 
|  | "simd/jcgray-sse2.asm", | 
|  | "simd/jchuff-sse2.asm", | 
|  | "simd/jcsample-mmx.asm", | 
|  | "simd/jcsample-sse2.asm", | 
|  | "simd/jdcolor-mmx.asm", | 
|  | "simd/jdcolor-sse2.asm", | 
|  | "simd/jdmerge-mmx.asm", | 
|  | "simd/jdmerge-sse2.asm", | 
|  | "simd/jdsample-mmx.asm", | 
|  | "simd/jdsample-sse2.asm", | 
|  | "simd/jfdctflt-3dn.asm", | 
|  | "simd/jfdctflt-sse.asm", | 
|  | "simd/jfdctfst-mmx.asm", | 
|  | "simd/jfdctfst-sse2.asm", | 
|  | "simd/jfdctint-mmx.asm", | 
|  | "simd/jfdctint-sse2.asm", | 
|  | "simd/jidctflt-3dn.asm", | 
|  | "simd/jidctflt-sse.asm", | 
|  | "simd/jidctflt-sse2.asm", | 
|  | "simd/jidctfst-mmx.asm", | 
|  | "simd/jidctfst-sse2.asm", | 
|  | "simd/jidctint-mmx.asm", | 
|  | "simd/jidctint-sse2.asm", | 
|  | "simd/jidctred-mmx.asm", | 
|  | "simd/jidctred-sse2.asm", | 
|  | "simd/jquant-3dn.asm", | 
|  | "simd/jquant-mmx.asm", | 
|  | "simd/jquant-sse.asm", | 
|  | "simd/jquantf-sse2.asm", | 
|  | "simd/jquanti-sse2.asm", | 
|  | "simd/jsimdcpu.asm", | 
|  | ] | 
|  | defines += [ | 
|  | "__x86__", | 
|  | "PIC", | 
|  | ] | 
|  | } else if (current_cpu == "x64") { | 
|  | sources = [ | 
|  | "simd/jccolor-sse2-64.asm", | 
|  | "simd/jcgray-sse2-64.asm", | 
|  | "simd/jchuff-sse2-64.asm", | 
|  | "simd/jcsample-sse2-64.asm", | 
|  | "simd/jdcolor-sse2-64.asm", | 
|  | "simd/jdmerge-sse2-64.asm", | 
|  | "simd/jdsample-sse2-64.asm", | 
|  | "simd/jfdctflt-sse-64.asm", | 
|  | "simd/jfdctfst-sse2-64.asm", | 
|  | "simd/jfdctint-sse2-64.asm", | 
|  | "simd/jidctflt-sse2-64.asm", | 
|  | "simd/jidctfst-sse2-64.asm", | 
|  | "simd/jidctint-sse2-64.asm", | 
|  | "simd/jidctred-sse2-64.asm", | 
|  | "simd/jquantf-sse2-64.asm", | 
|  | "simd/jquanti-sse2-64.asm", | 
|  | ] | 
|  | defines += [ | 
|  | "__x86_64__", | 
|  | "PIC", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_win) { | 
|  | defines += [ "MSVC" ] | 
|  | if (current_cpu == "x86") { | 
|  | defines += [ "WIN32" ] | 
|  | } else { | 
|  | defines += [ "WIN64" ] | 
|  | } | 
|  | } else if (is_mac || is_ios) { | 
|  | defines += [ "MACHO" ] | 
|  | } else if (is_linux || is_android || is_fuchsia) { | 
|  | defines += [ "ELF" ] | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | static_library("simd") { | 
|  | if (current_cpu == "x86") { | 
|  | deps = [ | 
|  | ":simd_asm", | 
|  | ] | 
|  | sources = [ | 
|  | "simd/jsimd_i386.c", | 
|  | ] | 
|  | } else if (current_cpu == "x64") { | 
|  | deps = [ | 
|  | ":simd_asm", | 
|  | ] | 
|  | sources = [ | 
|  | "simd/jsimd_x86_64.c", | 
|  | ] | 
|  | } else if (current_cpu == "arm" && arm_version >= 7 && | 
|  | (arm_use_neon || arm_optionally_use_neon)) { | 
|  | sources = [ | 
|  | "simd/jsimd_arm.c", | 
|  | "simd/jsimd_arm_neon.S", | 
|  | ] | 
|  | } else if (current_cpu == "arm64") { | 
|  | sources = [ | 
|  | "simd/jsimd_arm64.c", | 
|  | "simd/jsimd_arm64_neon.S", | 
|  | ] | 
|  | } else { | 
|  | sources = [ | 
|  | "jsimd_none.c", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_win) { | 
|  | cflags = [ "/wd4245" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | config("libjpeg_config") { | 
|  | include_dirs = [ "." ] | 
|  | } | 
|  |  | 
|  | static_library("libjpeg") { | 
|  | sources = [ | 
|  | "jcapimin.c", | 
|  | "jcapistd.c", | 
|  | "jccoefct.c", | 
|  | "jccolor.c", | 
|  | "jcdctmgr.c", | 
|  | "jchuff.c", | 
|  | "jchuff.h", | 
|  | "jcinit.c", | 
|  | "jcmainct.c", | 
|  | "jcmarker.c", | 
|  | "jcmaster.c", | 
|  | "jcomapi.c", | 
|  | "jconfig.h", | 
|  | "jcparam.c", | 
|  | "jcphuff.c", | 
|  | "jcprepct.c", | 
|  | "jcsample.c", | 
|  | "jdapimin.c", | 
|  | "jdapistd.c", | 
|  | "jdatadst.c", | 
|  | "jdatasrc.c", | 
|  | "jdcoefct.c", | 
|  | "jdcolor.c", | 
|  | "jdct.h", | 
|  | "jddctmgr.c", | 
|  | "jdhuff.c", | 
|  | "jdhuff.h", | 
|  | "jdinput.c", | 
|  | "jdmainct.c", | 
|  | "jdmarker.c", | 
|  | "jdmaster.c", | 
|  | "jdmerge.c", | 
|  | "jdphuff.c", | 
|  | "jdpostct.c", | 
|  | "jdsample.c", | 
|  | "jerror.c", | 
|  | "jerror.h", | 
|  | "jfdctflt.c", | 
|  | "jfdctfst.c", | 
|  | "jfdctint.c", | 
|  | "jidctflt.c", | 
|  | "jidctfst.c", | 
|  | "jidctint.c", | 
|  | "jidctred.c", | 
|  | "jinclude.h", | 
|  | "jmemmgr.c", | 
|  | "jmemnobs.c", | 
|  | "jmemsys.h", | 
|  | "jmorecfg.h", | 
|  | "jpegint.h", | 
|  | "jpeglib.h", | 
|  | "jpeglibmangler.h", | 
|  | "jquant1.c", | 
|  | "jquant2.c", | 
|  | "jutils.c", | 
|  | "jversion.h", | 
|  | ] | 
|  |  | 
|  | defines = [ | 
|  | "WITH_SIMD", | 
|  | "NO_GETENV", | 
|  | ] | 
|  |  | 
|  | configs += [ ":libjpeg_config" ] | 
|  |  | 
|  | public_configs = [ ":libjpeg_config" ] | 
|  |  | 
|  | # MemorySanitizer doesn't support assembly code, so keep it disabled in | 
|  | # MSan builds for now. | 
|  | if (is_msan) { | 
|  | sources += [ "jsimd_none.c" ] | 
|  | } else { | 
|  | deps = [ | 
|  | ":simd", | 
|  | ] | 
|  | } | 
|  | } |