| # 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. |
| |
| if (current_cpu == "arm") { |
| import("//build/config/arm.gni") |
| } |
| |
| 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/jccolmmx.asm", |
| "simd/jccolss2.asm", |
| "simd/jcgrammx.asm", |
| "simd/jcgrass2.asm", |
| "simd/jcqnt3dn.asm", |
| "simd/jcqntmmx.asm", |
| "simd/jcqnts2f.asm", |
| "simd/jcqnts2i.asm", |
| "simd/jcqntsse.asm", |
| "simd/jcsammmx.asm", |
| "simd/jcsamss2.asm", |
| "simd/jdcolmmx.asm", |
| "simd/jdcolss2.asm", |
| "simd/jdmermmx.asm", |
| "simd/jdmerss2.asm", |
| "simd/jdsammmx.asm", |
| "simd/jdsamss2.asm", |
| "simd/jf3dnflt.asm", |
| "simd/jfmmxfst.asm", |
| "simd/jfmmxint.asm", |
| "simd/jfss2fst.asm", |
| "simd/jfss2int.asm", |
| "simd/jfsseflt.asm", |
| "simd/ji3dnflt.asm", |
| "simd/jimmxfst.asm", |
| "simd/jimmxint.asm", |
| "simd/jimmxred.asm", |
| "simd/jiss2flt.asm", |
| "simd/jiss2fst.asm", |
| "simd/jiss2int.asm", |
| "simd/jiss2red.asm", |
| "simd/jisseflt.asm", |
| "simd/jsimdcpu.asm", |
| ] |
| defines += [ "__x86__" ] |
| } else if (current_cpu == "x64") { |
| sources = [ |
| "simd/jccolss2-64.asm", |
| "simd/jcgrass2-64.asm", |
| "simd/jcqnts2f-64.asm", |
| "simd/jcqnts2i-64.asm", |
| "simd/jcsamss2-64.asm", |
| "simd/jdcolss2-64.asm", |
| "simd/jdmerss2-64.asm", |
| "simd/jdsamss2-64.asm", |
| "simd/jfss2fst-64.asm", |
| "simd/jfss2int-64.asm", |
| "simd/jfsseflt-64.asm", |
| "simd/jiss2flt-64.asm", |
| "simd/jiss2fst-64.asm", |
| "simd/jiss2int-64.asm", |
| "simd/jiss2red-64.asm", |
| ] |
| defines += [ "__x86_64__" ] |
| } |
| |
| if (is_mac) { |
| defines += [ "MACHO" ] |
| include_dirs = [ "mac" ] |
| } else if (is_linux || is_android) { |
| defines += [ "ELF" ] |
| include_dirs = [ "linux" ] |
| } |
| } |
| } |
| |
| source_set("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 { |
| sources = [ |
| "jsimd_none.c", |
| ] |
| } |
| } |
| |
| config("libjpeg_config") { |
| include_dirs = [ "." ] |
| } |
| |
| source_set("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", |
| "MOTION_JPEG_SUPPORTED", |
| "NO_GETENV", |
| ] |
| |
| configs += [ ":libjpeg_config" ] |
| |
| public_configs = [ ":libjpeg_config" ] |
| |
| # MemorySanitizer doesn't support assembly code, so keep it disabled in |
| # MSan builds for now. |
| # TODO: Enable on Linux when .asm files are recognized. |
| if (is_msan || is_linux) { |
| sources += [ "jsimd_none.c" ] |
| } else { |
| deps = [ |
| ":simd", |
| ] |
| } |
| |
| # TODO(GYP): Compile the .asm files with YASM as GYP does. |
| } |