1*dfc6aa5cSAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors. All rights reserved. 2*dfc6aa5cSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*dfc6aa5cSAndroid Build Coastguard Worker# found in the LICENSE file. 4*dfc6aa5cSAndroid Build Coastguard Worker 5*dfc6aa5cSAndroid Build Coastguard Worker# Do not use the targets in this file unless you need a certain libjpeg 6*dfc6aa5cSAndroid Build Coastguard Worker# implementation. Use the meta target //third_party:jpeg instead. 7*dfc6aa5cSAndroid Build Coastguard Worker 8*dfc6aa5cSAndroid Build Coastguard Workerimport("//build/config/features.gni") 9*dfc6aa5cSAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni") 10*dfc6aa5cSAndroid Build Coastguard Workerif (current_cpu == "arm" || current_cpu == "arm64") { 11*dfc6aa5cSAndroid Build Coastguard Worker import("//build/config/arm.gni") 12*dfc6aa5cSAndroid Build Coastguard Worker} 13*dfc6aa5cSAndroid Build Coastguard Worker 14*dfc6aa5cSAndroid Build Coastguard Workerassert( 15*dfc6aa5cSAndroid Build Coastguard Worker use_blink, 16*dfc6aa5cSAndroid Build Coastguard Worker "This is not used if blink is not enabled, don't drag it in unintentionally") 17*dfc6aa5cSAndroid Build Coastguard Worker 18*dfc6aa5cSAndroid Build Coastguard Workersource_set("libjpeg_headers") { 19*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 20*dfc6aa5cSAndroid Build Coastguard Worker "jconfig.h", 21*dfc6aa5cSAndroid Build Coastguard Worker "jdct.h", 22*dfc6aa5cSAndroid Build Coastguard Worker "jinclude.h", 23*dfc6aa5cSAndroid Build Coastguard Worker "jmorecfg.h", 24*dfc6aa5cSAndroid Build Coastguard Worker "jpeglib.h", 25*dfc6aa5cSAndroid Build Coastguard Worker "jpeglibmangler.h", 26*dfc6aa5cSAndroid Build Coastguard Worker ] 27*dfc6aa5cSAndroid Build Coastguard Worker} 28*dfc6aa5cSAndroid Build Coastguard Worker 29*dfc6aa5cSAndroid Build Coastguard Workerif (current_cpu == "x86" || current_cpu == "x64") { 30*dfc6aa5cSAndroid Build Coastguard Worker import("//third_party/nasm/nasm_assemble.gni") 31*dfc6aa5cSAndroid Build Coastguard Worker 32*dfc6aa5cSAndroid Build Coastguard Worker nasm_assemble("simd_asm") { 33*dfc6aa5cSAndroid Build Coastguard Worker defines = [] 34*dfc6aa5cSAndroid Build Coastguard Worker include_dirs = [ "simd/nasm/" ] 35*dfc6aa5cSAndroid Build Coastguard Worker 36*dfc6aa5cSAndroid Build Coastguard Worker inputs = [ 37*dfc6aa5cSAndroid Build Coastguard Worker "simd/nasm/jdct.inc", 38*dfc6aa5cSAndroid Build Coastguard Worker "simd/nasm/jsimdcfg.inc", 39*dfc6aa5cSAndroid Build Coastguard Worker "simd/nasm/jsimdext.inc", 40*dfc6aa5cSAndroid Build Coastguard Worker "simd/nasm/jcolsamp.inc", 41*dfc6aa5cSAndroid Build Coastguard Worker ] 42*dfc6aa5cSAndroid Build Coastguard Worker 43*dfc6aa5cSAndroid Build Coastguard Worker if (current_cpu == "x86") { 44*dfc6aa5cSAndroid Build Coastguard Worker include_dirs += [ "simd/i386/" ] 45*dfc6aa5cSAndroid Build Coastguard Worker inputs += [ 46*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jccolext-avx2.asm", 47*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jccolext-mmx.asm", 48*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jccolext-sse2.asm", 49*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcgryext-avx2.asm", 50*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcgryext-mmx.asm", 51*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcgryext-sse2.asm", 52*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdcolext-avx2.asm", 53*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdcolext-mmx.asm", 54*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdcolext-sse2.asm", 55*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdmrgext-avx2.asm", 56*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdmrgext-mmx.asm", 57*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdmrgext-sse2.asm", 58*dfc6aa5cSAndroid Build Coastguard Worker ] 59*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 60*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jccolor-avx2.asm", 61*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jccolor-mmx.asm", 62*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jccolor-sse2.asm", 63*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcgray-avx2.asm", 64*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcgray-mmx.asm", 65*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcgray-sse2.asm", 66*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jchuff-sse2.asm", 67*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcphuff-sse2.asm", 68*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcsample-avx2.asm", 69*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcsample-mmx.asm", 70*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jcsample-sse2.asm", 71*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdcolor-avx2.asm", 72*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdcolor-mmx.asm", 73*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdcolor-sse2.asm", 74*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdmerge-avx2.asm", 75*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdmerge-mmx.asm", 76*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdmerge-sse2.asm", 77*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdsample-avx2.asm", 78*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdsample-mmx.asm", 79*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jdsample-sse2.asm", 80*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctflt-3dn.asm", 81*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctflt-sse.asm", 82*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctfst-mmx.asm", 83*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctfst-sse2.asm", 84*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctint-avx2.asm", 85*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctint-mmx.asm", 86*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jfdctint-sse2.asm", 87*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctflt-3dn.asm", 88*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctflt-sse.asm", 89*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctflt-sse2.asm", 90*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctfst-mmx.asm", 91*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctfst-sse2.asm", 92*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctint-avx2.asm", 93*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctint-mmx.asm", 94*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctint-sse2.asm", 95*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctred-mmx.asm", 96*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jidctred-sse2.asm", 97*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jquant-3dn.asm", 98*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jquant-mmx.asm", 99*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jquant-sse.asm", 100*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jquantf-sse2.asm", 101*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jquanti-avx2.asm", 102*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jquanti-sse2.asm", 103*dfc6aa5cSAndroid Build Coastguard Worker "simd/i386/jsimdcpu.asm", 104*dfc6aa5cSAndroid Build Coastguard Worker ] 105*dfc6aa5cSAndroid Build Coastguard Worker defines += [ 106*dfc6aa5cSAndroid Build Coastguard Worker "__x86__", 107*dfc6aa5cSAndroid Build Coastguard Worker "PIC", 108*dfc6aa5cSAndroid Build Coastguard Worker ] 109*dfc6aa5cSAndroid Build Coastguard Worker } else if (current_cpu == "x64") { 110*dfc6aa5cSAndroid Build Coastguard Worker include_dirs += [ "simd/x86_64/" ] 111*dfc6aa5cSAndroid Build Coastguard Worker inputs += [ 112*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jccolext-avx2.asm", 113*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jccolext-sse2.asm", 114*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcgryext-avx2.asm", 115*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcgryext-sse2.asm", 116*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdcolext-avx2.asm", 117*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdcolext-sse2.asm", 118*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdmrgext-avx2.asm", 119*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdmrgext-sse2.asm", 120*dfc6aa5cSAndroid Build Coastguard Worker ] 121*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 122*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jccolor-avx2.asm", 123*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jccolor-sse2.asm", 124*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcgray-avx2.asm", 125*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcgray-sse2.asm", 126*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jchuff-sse2.asm", 127*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcphuff-sse2.asm", 128*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcsample-avx2.asm", 129*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jcsample-sse2.asm", 130*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdcolor-avx2.asm", 131*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdcolor-sse2.asm", 132*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdmerge-avx2.asm", 133*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdmerge-sse2.asm", 134*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdsample-avx2.asm", 135*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jdsample-sse2.asm", 136*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jfdctflt-sse.asm", 137*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jfdctfst-sse2.asm", 138*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jfdctint-avx2.asm", 139*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jfdctint-sse2.asm", 140*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jidctflt-sse2.asm", 141*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jidctfst-sse2.asm", 142*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jidctint-avx2.asm", 143*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jidctint-sse2.asm", 144*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jidctred-sse2.asm", 145*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jquantf-sse2.asm", 146*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jquanti-avx2.asm", 147*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jquanti-sse2.asm", 148*dfc6aa5cSAndroid Build Coastguard Worker "simd/x86_64/jsimdcpu.asm", 149*dfc6aa5cSAndroid Build Coastguard Worker ] 150*dfc6aa5cSAndroid Build Coastguard Worker defines += [ 151*dfc6aa5cSAndroid Build Coastguard Worker "__x86_64__", 152*dfc6aa5cSAndroid Build Coastguard Worker "PIC", 153*dfc6aa5cSAndroid Build Coastguard Worker ] 154*dfc6aa5cSAndroid Build Coastguard Worker } 155*dfc6aa5cSAndroid Build Coastguard Worker 156*dfc6aa5cSAndroid Build Coastguard Worker if (is_win) { 157*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "MSVC" ] 158*dfc6aa5cSAndroid Build Coastguard Worker if (current_cpu == "x86") { 159*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "WIN32" ] 160*dfc6aa5cSAndroid Build Coastguard Worker } else { 161*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "WIN64" ] 162*dfc6aa5cSAndroid Build Coastguard Worker } 163*dfc6aa5cSAndroid Build Coastguard Worker } else if (is_mac || is_ios) { 164*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "MACHO" ] 165*dfc6aa5cSAndroid Build Coastguard Worker } else if (is_linux || is_android || is_fuchsia || is_chromeos) { 166*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "ELF" ] 167*dfc6aa5cSAndroid Build Coastguard Worker } 168*dfc6aa5cSAndroid Build Coastguard Worker } 169*dfc6aa5cSAndroid Build Coastguard Worker} 170*dfc6aa5cSAndroid Build Coastguard Worker 171*dfc6aa5cSAndroid Build Coastguard Workerstatic_library("simd") { 172*dfc6aa5cSAndroid Build Coastguard Worker include_dirs = [ "." ] 173*dfc6aa5cSAndroid Build Coastguard Worker deps = [ ":libjpeg_headers" ] 174*dfc6aa5cSAndroid Build Coastguard Worker defines = [ "MANGLE_JPEG_NAMES" ] 175*dfc6aa5cSAndroid Build Coastguard Worker 176*dfc6aa5cSAndroid Build Coastguard Worker if (current_cpu == "x86") { 177*dfc6aa5cSAndroid Build Coastguard Worker deps += [ ":simd_asm" ] 178*dfc6aa5cSAndroid Build Coastguard Worker sources = [ "simd/i386/jsimd.c" ] 179*dfc6aa5cSAndroid Build Coastguard Worker } else if (current_cpu == "x64") { 180*dfc6aa5cSAndroid Build Coastguard Worker deps += [ ":simd_asm" ] 181*dfc6aa5cSAndroid Build Coastguard Worker sources = [ "simd/x86_64/jsimd.c" ] 182*dfc6aa5cSAndroid Build Coastguard Worker } else if ((current_cpu == "arm" || current_cpu == "arm64") && arm_use_neon) { 183*dfc6aa5cSAndroid Build Coastguard Worker include_dirs += [ "simd/arm/" ] 184*dfc6aa5cSAndroid Build Coastguard Worker 185*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 186*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jccolor-neon.c", 187*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jcgray-neon.c", 188*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jcphuff-neon.c", 189*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jcsample-neon.c", 190*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jdcolor-neon.c", 191*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jdmerge-neon.c", 192*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jdsample-neon.c", 193*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jfdctfst-neon.c", 194*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jfdctint-neon.c", 195*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jidctfst-neon.c", 196*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jidctint-neon.c", 197*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jidctred-neon.c", 198*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/jquanti-neon.c", 199*dfc6aa5cSAndroid Build Coastguard Worker ] 200*dfc6aa5cSAndroid Build Coastguard Worker if (current_cpu == "arm") { 201*dfc6aa5cSAndroid Build Coastguard Worker sources += [ 202*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/aarch32/jchuff-neon.c", 203*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/aarch32/jsimd.c", 204*dfc6aa5cSAndroid Build Coastguard Worker ] 205*dfc6aa5cSAndroid Build Coastguard Worker } else if (current_cpu == "arm64") { 206*dfc6aa5cSAndroid Build Coastguard Worker sources += [ 207*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/aarch64/jchuff-neon.c", 208*dfc6aa5cSAndroid Build Coastguard Worker "simd/arm/aarch64/jsimd.c", 209*dfc6aa5cSAndroid Build Coastguard Worker ] 210*dfc6aa5cSAndroid Build Coastguard Worker } 211*dfc6aa5cSAndroid Build Coastguard Worker 212*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "NEON_INTRINSICS" ] 213*dfc6aa5cSAndroid Build Coastguard Worker 214*dfc6aa5cSAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 215*dfc6aa5cSAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_speed" ] 216*dfc6aa5cSAndroid Build Coastguard Worker } else { 217*dfc6aa5cSAndroid Build Coastguard Worker sources = [ "jsimd_none.c" ] 218*dfc6aa5cSAndroid Build Coastguard Worker } 219*dfc6aa5cSAndroid Build Coastguard Worker 220*dfc6aa5cSAndroid Build Coastguard Worker if (is_win) { 221*dfc6aa5cSAndroid Build Coastguard Worker cflags = [ "/wd4245" ] 222*dfc6aa5cSAndroid Build Coastguard Worker } 223*dfc6aa5cSAndroid Build Coastguard Worker} 224*dfc6aa5cSAndroid Build Coastguard Worker 225*dfc6aa5cSAndroid Build Coastguard Workerconfig("libjpeg_config") { 226*dfc6aa5cSAndroid Build Coastguard Worker include_dirs = [ "." ] 227*dfc6aa5cSAndroid Build Coastguard Worker defines = [ "MANGLE_JPEG_NAMES" ] 228*dfc6aa5cSAndroid Build Coastguard Worker} 229*dfc6aa5cSAndroid Build Coastguard Worker 230*dfc6aa5cSAndroid Build Coastguard Workerstatic_library("libjpeg") { 231*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 232*dfc6aa5cSAndroid Build Coastguard Worker "jcapimin.c", 233*dfc6aa5cSAndroid Build Coastguard Worker "jcapistd.c", 234*dfc6aa5cSAndroid Build Coastguard Worker "jccoefct.c", 235*dfc6aa5cSAndroid Build Coastguard Worker "jccolor.c", 236*dfc6aa5cSAndroid Build Coastguard Worker "jcdctmgr.c", 237*dfc6aa5cSAndroid Build Coastguard Worker "jchuff.c", 238*dfc6aa5cSAndroid Build Coastguard Worker "jcicc.c", 239*dfc6aa5cSAndroid Build Coastguard Worker "jcinit.c", 240*dfc6aa5cSAndroid Build Coastguard Worker "jcmainct.c", 241*dfc6aa5cSAndroid Build Coastguard Worker "jcmarker.c", 242*dfc6aa5cSAndroid Build Coastguard Worker "jcmaster.c", 243*dfc6aa5cSAndroid Build Coastguard Worker "jcomapi.c", 244*dfc6aa5cSAndroid Build Coastguard Worker "jcparam.c", 245*dfc6aa5cSAndroid Build Coastguard Worker "jcphuff.c", 246*dfc6aa5cSAndroid Build Coastguard Worker "jcprepct.c", 247*dfc6aa5cSAndroid Build Coastguard Worker "jcsample.c", 248*dfc6aa5cSAndroid Build Coastguard Worker "jctrans.c", 249*dfc6aa5cSAndroid Build Coastguard Worker "jdapimin.c", 250*dfc6aa5cSAndroid Build Coastguard Worker "jdapistd.c", 251*dfc6aa5cSAndroid Build Coastguard Worker "jdatadst.c", 252*dfc6aa5cSAndroid Build Coastguard Worker "jdatasrc.c", 253*dfc6aa5cSAndroid Build Coastguard Worker "jdcoefct.c", 254*dfc6aa5cSAndroid Build Coastguard Worker "jdcolor.c", 255*dfc6aa5cSAndroid Build Coastguard Worker "jddctmgr.c", 256*dfc6aa5cSAndroid Build Coastguard Worker "jdhuff.c", 257*dfc6aa5cSAndroid Build Coastguard Worker "jdicc.c", 258*dfc6aa5cSAndroid Build Coastguard Worker "jdinput.c", 259*dfc6aa5cSAndroid Build Coastguard Worker "jdmainct.c", 260*dfc6aa5cSAndroid Build Coastguard Worker "jdmarker.c", 261*dfc6aa5cSAndroid Build Coastguard Worker "jdmaster.c", 262*dfc6aa5cSAndroid Build Coastguard Worker "jdmerge.c", 263*dfc6aa5cSAndroid Build Coastguard Worker "jdphuff.c", 264*dfc6aa5cSAndroid Build Coastguard Worker "jdpostct.c", 265*dfc6aa5cSAndroid Build Coastguard Worker "jdsample.c", 266*dfc6aa5cSAndroid Build Coastguard Worker "jdtrans.c", 267*dfc6aa5cSAndroid Build Coastguard Worker "jerror.c", 268*dfc6aa5cSAndroid Build Coastguard Worker "jfdctflt.c", 269*dfc6aa5cSAndroid Build Coastguard Worker "jfdctfst.c", 270*dfc6aa5cSAndroid Build Coastguard Worker "jfdctint.c", 271*dfc6aa5cSAndroid Build Coastguard Worker "jidctflt.c", 272*dfc6aa5cSAndroid Build Coastguard Worker "jidctfst.c", 273*dfc6aa5cSAndroid Build Coastguard Worker "jidctint.c", 274*dfc6aa5cSAndroid Build Coastguard Worker "jidctred.c", 275*dfc6aa5cSAndroid Build Coastguard Worker "jmemmgr.c", 276*dfc6aa5cSAndroid Build Coastguard Worker "jmemnobs.c", 277*dfc6aa5cSAndroid Build Coastguard Worker "jpeg_nbits_table.c", 278*dfc6aa5cSAndroid Build Coastguard Worker "jquant1.c", 279*dfc6aa5cSAndroid Build Coastguard Worker "jquant2.c", 280*dfc6aa5cSAndroid Build Coastguard Worker "jutils.c", 281*dfc6aa5cSAndroid Build Coastguard Worker ] 282*dfc6aa5cSAndroid Build Coastguard Worker 283*dfc6aa5cSAndroid Build Coastguard Worker defines = [ 284*dfc6aa5cSAndroid Build Coastguard Worker "WITH_SIMD", 285*dfc6aa5cSAndroid Build Coastguard Worker "NO_GETENV", 286*dfc6aa5cSAndroid Build Coastguard Worker "NO_PUTENV", 287*dfc6aa5cSAndroid Build Coastguard Worker ] 288*dfc6aa5cSAndroid Build Coastguard Worker 289*dfc6aa5cSAndroid Build Coastguard Worker configs += [ ":libjpeg_config" ] 290*dfc6aa5cSAndroid Build Coastguard Worker 291*dfc6aa5cSAndroid Build Coastguard Worker public_configs = [ ":libjpeg_config" ] 292*dfc6aa5cSAndroid Build Coastguard Worker public_deps = [ ":libjpeg_headers" ] 293*dfc6aa5cSAndroid Build Coastguard Worker 294*dfc6aa5cSAndroid Build Coastguard Worker # MemorySanitizer doesn't support assembly code, so keep it disabled in x86 295*dfc6aa5cSAndroid Build Coastguard Worker # and x64 MSan builds for now. 296*dfc6aa5cSAndroid Build Coastguard Worker if (is_msan && (current_cpu == "x86" || current_cpu == "x64")) { 297*dfc6aa5cSAndroid Build Coastguard Worker sources += [ "jsimd_none.c" ] 298*dfc6aa5cSAndroid Build Coastguard Worker } else { 299*dfc6aa5cSAndroid Build Coastguard Worker public_deps += [ ":simd" ] 300*dfc6aa5cSAndroid Build Coastguard Worker 301*dfc6aa5cSAndroid Build Coastguard Worker if ((current_cpu == "arm" || current_cpu == "arm64") && arm_use_neon) { 302*dfc6aa5cSAndroid Build Coastguard Worker defines += [ "NEON_INTRINSICS" ] 303*dfc6aa5cSAndroid Build Coastguard Worker } 304*dfc6aa5cSAndroid Build Coastguard Worker } 305*dfc6aa5cSAndroid Build Coastguard Worker} 306*dfc6aa5cSAndroid Build Coastguard Worker 307*dfc6aa5cSAndroid Build Coastguard Workerstatic_library("turbojpeg") { 308*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 309*dfc6aa5cSAndroid Build Coastguard Worker "jdatadst-tj.c", 310*dfc6aa5cSAndroid Build Coastguard Worker "jdatasrc-tj.c", 311*dfc6aa5cSAndroid Build Coastguard Worker "rdbmp.c", 312*dfc6aa5cSAndroid Build Coastguard Worker "rdppm.c", 313*dfc6aa5cSAndroid Build Coastguard Worker "transupp.c", 314*dfc6aa5cSAndroid Build Coastguard Worker "turbojpeg.c", 315*dfc6aa5cSAndroid Build Coastguard Worker "wrbmp.c", 316*dfc6aa5cSAndroid Build Coastguard Worker "wrppm.c", 317*dfc6aa5cSAndroid Build Coastguard Worker ] 318*dfc6aa5cSAndroid Build Coastguard Worker 319*dfc6aa5cSAndroid Build Coastguard Worker defines = [ 320*dfc6aa5cSAndroid Build Coastguard Worker "WITH_SIMD", 321*dfc6aa5cSAndroid Build Coastguard Worker "BMP_SUPPORTED", 322*dfc6aa5cSAndroid Build Coastguard Worker "PPM_SUPPORTED", 323*dfc6aa5cSAndroid Build Coastguard Worker ] 324*dfc6aa5cSAndroid Build Coastguard Worker 325*dfc6aa5cSAndroid Build Coastguard Worker configs += [ ":libjpeg_config" ] 326*dfc6aa5cSAndroid Build Coastguard Worker 327*dfc6aa5cSAndroid Build Coastguard Worker public_configs = [ ":libjpeg_config" ] 328*dfc6aa5cSAndroid Build Coastguard Worker public_deps = [ ":libjpeg" ] 329*dfc6aa5cSAndroid Build Coastguard Worker} 330*dfc6aa5cSAndroid Build Coastguard Worker 331*dfc6aa5cSAndroid Build Coastguard Workerif (build_with_chromium) { 332*dfc6aa5cSAndroid Build Coastguard Worker import("//testing/test.gni") 333*dfc6aa5cSAndroid Build Coastguard Worker 334*dfc6aa5cSAndroid Build Coastguard Worker test("libjpeg_turbo_unittests") { 335*dfc6aa5cSAndroid Build Coastguard Worker testonly = true 336*dfc6aa5cSAndroid Build Coastguard Worker 337*dfc6aa5cSAndroid Build Coastguard Worker sources = [ 338*dfc6aa5cSAndroid Build Coastguard Worker "cdjpeg.c", 339*dfc6aa5cSAndroid Build Coastguard Worker "cjpeg.c", 340*dfc6aa5cSAndroid Build Coastguard Worker "djpeg.c", 341*dfc6aa5cSAndroid Build Coastguard Worker "gtest/cjpeg-gtest-wrapper.cpp", 342*dfc6aa5cSAndroid Build Coastguard Worker "gtest/djpeg-gtest-wrapper.cpp", 343*dfc6aa5cSAndroid Build Coastguard Worker "gtest/gtest-utils.cpp", 344*dfc6aa5cSAndroid Build Coastguard Worker "gtest/jpegtran-gtest-wrapper.cpp", 345*dfc6aa5cSAndroid Build Coastguard Worker "gtest/tjbench-gtest-wrapper.cpp", 346*dfc6aa5cSAndroid Build Coastguard Worker "gtest/tjunittest-gtest-wrapper.cpp", 347*dfc6aa5cSAndroid Build Coastguard Worker "jpegtran.c", 348*dfc6aa5cSAndroid Build Coastguard Worker "md5/md5.c", 349*dfc6aa5cSAndroid Build Coastguard Worker "md5/md5hl.c", 350*dfc6aa5cSAndroid Build Coastguard Worker "rdcolmap.c", 351*dfc6aa5cSAndroid Build Coastguard Worker "rdgif.c", 352*dfc6aa5cSAndroid Build Coastguard Worker "rdswitch.c", 353*dfc6aa5cSAndroid Build Coastguard Worker "tjbench.c", 354*dfc6aa5cSAndroid Build Coastguard Worker "tjunittest.c", 355*dfc6aa5cSAndroid Build Coastguard Worker "tjutil.c", 356*dfc6aa5cSAndroid Build Coastguard Worker ] 357*dfc6aa5cSAndroid Build Coastguard Worker 358*dfc6aa5cSAndroid Build Coastguard Worker deps = [ 359*dfc6aa5cSAndroid Build Coastguard Worker ":turbojpeg", 360*dfc6aa5cSAndroid Build Coastguard Worker "//base", 361*dfc6aa5cSAndroid Build Coastguard Worker "//testing/gtest", 362*dfc6aa5cSAndroid Build Coastguard Worker "//testing/gtest:gtest_main", 363*dfc6aa5cSAndroid Build Coastguard Worker ] 364*dfc6aa5cSAndroid Build Coastguard Worker 365*dfc6aa5cSAndroid Build Coastguard Worker data = [ "testimages/" ] 366*dfc6aa5cSAndroid Build Coastguard Worker 367*dfc6aa5cSAndroid Build Coastguard Worker defines = [ 368*dfc6aa5cSAndroid Build Coastguard Worker "GTEST", 369*dfc6aa5cSAndroid Build Coastguard Worker "WITH_SIMD", 370*dfc6aa5cSAndroid Build Coastguard Worker "BMP_SUPPORTED", 371*dfc6aa5cSAndroid Build Coastguard Worker "PPM_SUPPORTED", 372*dfc6aa5cSAndroid Build Coastguard Worker ] 373*dfc6aa5cSAndroid Build Coastguard Worker 374*dfc6aa5cSAndroid Build Coastguard Worker include_dirs = [ 375*dfc6aa5cSAndroid Build Coastguard Worker "//third_party/googletest/src/googletest/include/gtest", 376*dfc6aa5cSAndroid Build Coastguard Worker ".", 377*dfc6aa5cSAndroid Build Coastguard Worker ] 378*dfc6aa5cSAndroid Build Coastguard Worker 379*dfc6aa5cSAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 380*dfc6aa5cSAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 381*dfc6aa5cSAndroid Build Coastguard Worker 382*dfc6aa5cSAndroid Build Coastguard Worker if (is_win) { 383*dfc6aa5cSAndroid Build Coastguard Worker cflags = [ "-U_CRT_SECURE_NO_DEPRECATE" ] 384*dfc6aa5cSAndroid Build Coastguard Worker } 385*dfc6aa5cSAndroid Build Coastguard Worker } 386*dfc6aa5cSAndroid Build Coastguard Worker} 387