# Copyright 2016 The Fuchsia 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") } import("//build/fuchsia/sdk.gni") if ((current_cpu == "x86" || current_cpu == "x64") && is_fuchsia && !using_fuchsia_sdk) { 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", ] } defines += [ "ELF" ] } } static_library("simd") { if (!is_fuchsia || using_fuchsia_sdk) { sources = [ "jsimd_none.c", ] } else 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", ] } } 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", "jquant1.c", "jquant2.c", "jutils.c", "jversion.h", ] defines = [ "WITH_SIMD", "NO_GETENV", ] configs += [ ":libjpeg_config" ] public_configs = [ ":libjpeg_config" ] deps = [ ":simd", ] }