aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/jpeg/BUILD.bazel
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/jpeg/BUILD.bazel')
-rw-r--r--third_party/jpeg/BUILD.bazel752
1 files changed, 752 insertions, 0 deletions
diff --git a/third_party/jpeg/BUILD.bazel b/third_party/jpeg/BUILD.bazel
new file mode 100644
index 0000000000..5243e995a3
--- /dev/null
+++ b/third_party/jpeg/BUILD.bazel
@@ -0,0 +1,752 @@
+# Description:
+# libjpeg-turbo is a drop in replacement for jpeglib optimized with SIMD.
+
+licenses(["notice"]) # custom notice-style license, see LICENSE.md
+
+exports_files(["LICENSE.md"])
+
+load("@org_tensorflow//third_party:common.bzl", "template_rule")
+
+libjpegturbo_nocopts = "-[W]error"
+
+WIN_COPTS = [
+ "/Ox",
+ "-DWITH_SIMD",
+ "-wd4996",
+]
+
+libjpegturbo_copts = select({
+ ":android": [
+ "-O2",
+ "-fPIE",
+ "-w",
+ ],
+ ":windows": WIN_COPTS,
+ "//conditions:default": [
+ "-O3",
+ "-w",
+ ],
+}) + select({
+ ":armeabi-v7a": [
+ "-D__ARM_NEON__",
+ "-march=armv7-a",
+ "-mfloat-abi=softfp",
+ "-fprefetch-loop-arrays",
+ ],
+ ":linux_ppc64le": [
+ "-mcpu=power8",
+ "-mtune=power8",
+ ],
+ "//conditions:default": [],
+})
+
+cc_library(
+ name = "jpeg",
+ srcs = [
+ "jaricom.c",
+ "jcapimin.c",
+ "jcapistd.c",
+ "jcarith.c",
+ "jccoefct.c",
+ "jccolor.c",
+ "jcdctmgr.c",
+ "jchuff.c",
+ "jchuff.h",
+ "jcinit.c",
+ "jcmainct.c",
+ "jcmarker.c",
+ "jcmaster.c",
+ "jcomapi.c",
+ "jconfig.h",
+ "jconfigint.h",
+ "jcparam.c",
+ "jcphuff.c",
+ "jcprepct.c",
+ "jcsample.c",
+ "jctrans.c",
+ "jdapimin.c",
+ "jdapistd.c",
+ "jdarith.c",
+ "jdatadst.c",
+ "jdatasrc.c",
+ "jdcoefct.c",
+ "jdcoefct.h",
+ "jdcolor.c",
+ "jdct.h",
+ "jddctmgr.c",
+ "jdhuff.c",
+ "jdhuff.h",
+ "jdinput.c",
+ "jdmainct.c",
+ "jdmainct.h",
+ "jdmarker.c",
+ "jdmaster.c",
+ "jdmaster.h",
+ "jdmerge.c",
+ "jdphuff.c",
+ "jdpostct.c",
+ "jdsample.c",
+ "jdsample.h",
+ "jdtrans.c",
+ "jerror.c",
+ "jfdctflt.c",
+ "jfdctfst.c",
+ "jfdctint.c",
+ "jidctflt.c",
+ "jidctfst.c",
+ "jidctint.c",
+ "jidctred.c",
+ "jinclude.h",
+ "jmemmgr.c",
+ "jmemnobs.c",
+ "jmemsys.h",
+ "jpeg_nbits_table.h",
+ "jpegcomp.h",
+ "jquant1.c",
+ "jquant2.c",
+ "jutils.c",
+ "jversion.h",
+ ],
+ hdrs = [
+ "jccolext.c", # should have been named .inc
+ "jdcol565.c", # should have been named .inc
+ "jdcolext.c", # should have been named .inc
+ "jdmrg565.c", # should have been named .inc
+ "jdmrgext.c", # should have been named .inc
+ "jerror.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jstdhuff.c", # should have been named .inc
+ ],
+ copts = libjpegturbo_copts,
+ nocopts = libjpegturbo_nocopts,
+ visibility = ["//visibility:public"],
+ deps = select({
+ ":k8": [":simd_x86_64"],
+ ":armeabi-v7a": [":simd_armv7a"],
+ ":arm64-v8a": [":simd_armv8a"],
+ ":linux_ppc64le": [":simd_altivec"],
+ ":windows": [":simd_win_x86_64"],
+ "//conditions:default": [":simd_none"],
+ }),
+)
+
+cc_library(
+ name = "simd_altivec",
+ srcs = [
+ "jchuff.h",
+ "jconfig.h",
+ "jdct.h",
+ "jerror.h",
+ "jinclude.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jsimd.h",
+ "jsimddct.h",
+ "simd/jsimd.h",
+ "simd/powerpc/jccolor-altivec.c",
+ "simd/powerpc/jcgray-altivec.c",
+ "simd/powerpc/jcsample-altivec.c",
+ "simd/powerpc/jdcolor-altivec.c",
+ "simd/powerpc/jdmerge-altivec.c",
+ "simd/powerpc/jdsample-altivec.c",
+ "simd/powerpc/jfdctfst-altivec.c",
+ "simd/powerpc/jfdctint-altivec.c",
+ "simd/powerpc/jidctfst-altivec.c",
+ "simd/powerpc/jidctint-altivec.c",
+ "simd/powerpc/jquanti-altivec.c",
+ "simd/powerpc/jsimd.c",
+ ],
+ hdrs = [
+ "simd/powerpc/jccolext-altivec.c",
+ "simd/powerpc/jcgryext-altivec.c",
+ "simd/powerpc/jcsample.h",
+ "simd/powerpc/jdcolext-altivec.c",
+ "simd/powerpc/jdmrgext-altivec.c",
+ "simd/powerpc/jsimd_altivec.h",
+ ],
+ copts = libjpegturbo_copts,
+ nocopts = libjpegturbo_nocopts,
+)
+
+cc_library(
+ name = "simd_x86_64",
+ srcs = [
+ "jchuff.h",
+ "jconfig.h",
+ "jconfigint.h",
+ "jdct.h",
+ "jerror.h",
+ "jinclude.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jsimd.h",
+ "jsimddct.h",
+ "simd/jsimd.h",
+ "simd/x86_64/jccolor-avx2.o",
+ "simd/x86_64/jccolor-sse2.o",
+ "simd/x86_64/jcgray-avx2.o",
+ "simd/x86_64/jcgray-sse2.o",
+ "simd/x86_64/jchuff-sse2.o",
+ "simd/x86_64/jcphuff-sse2.o",
+ "simd/x86_64/jcsample-avx2.o",
+ "simd/x86_64/jcsample-sse2.o",
+ "simd/x86_64/jdcolor-avx2.o",
+ "simd/x86_64/jdcolor-sse2.o",
+ "simd/x86_64/jdmerge-avx2.o",
+ "simd/x86_64/jdmerge-sse2.o",
+ "simd/x86_64/jdsample-avx2.o",
+ "simd/x86_64/jdsample-sse2.o",
+ "simd/x86_64/jfdctflt-sse.o",
+ "simd/x86_64/jfdctfst-sse2.o",
+ "simd/x86_64/jfdctint-avx2.o",
+ "simd/x86_64/jfdctint-sse2.o",
+ "simd/x86_64/jidctflt-sse2.o",
+ "simd/x86_64/jidctfst-sse2.o",
+ "simd/x86_64/jidctint-avx2.o",
+ "simd/x86_64/jidctint-sse2.o",
+ "simd/x86_64/jidctred-sse2.o",
+ "simd/x86_64/jquantf-sse2.o",
+ "simd/x86_64/jquanti-avx2.o",
+ "simd/x86_64/jquanti-sse2.o",
+ "simd/x86_64/jsimd.c",
+ "simd/x86_64/jsimdcpu.o",
+ ],
+ copts = libjpegturbo_copts,
+ linkstatic = 1,
+ nocopts = libjpegturbo_nocopts,
+)
+
+genrule(
+ name = "simd_x86_64_assemblage23",
+ srcs = [
+ "jconfig.h",
+ "jconfigint.h",
+ "simd/x86_64/jccolext-avx2.asm",
+ "simd/x86_64/jccolext-sse2.asm",
+ "simd/x86_64/jccolor-avx2.asm",
+ "simd/x86_64/jccolor-sse2.asm",
+ "simd/x86_64/jcgray-avx2.asm",
+ "simd/x86_64/jcgray-sse2.asm",
+ "simd/x86_64/jcgryext-avx2.asm",
+ "simd/x86_64/jcgryext-sse2.asm",
+ "simd/x86_64/jchuff-sse2.asm",
+ "simd/x86_64/jcphuff-sse2.asm",
+ "simd/x86_64/jcsample-avx2.asm",
+ "simd/x86_64/jcsample-sse2.asm",
+ "simd/x86_64/jdcolext-avx2.asm",
+ "simd/x86_64/jdcolext-sse2.asm",
+ "simd/x86_64/jdcolor-avx2.asm",
+ "simd/x86_64/jdcolor-sse2.asm",
+ "simd/x86_64/jdmerge-avx2.asm",
+ "simd/x86_64/jdmerge-sse2.asm",
+ "simd/x86_64/jdmrgext-avx2.asm",
+ "simd/x86_64/jdmrgext-sse2.asm",
+ "simd/x86_64/jdsample-avx2.asm",
+ "simd/x86_64/jdsample-sse2.asm",
+ "simd/x86_64/jfdctflt-sse.asm",
+ "simd/x86_64/jfdctfst-sse2.asm",
+ "simd/x86_64/jfdctint-avx2.asm",
+ "simd/x86_64/jfdctint-sse2.asm",
+ "simd/x86_64/jidctflt-sse2.asm",
+ "simd/x86_64/jidctfst-sse2.asm",
+ "simd/x86_64/jidctint-avx2.asm",
+ "simd/x86_64/jidctint-sse2.asm",
+ "simd/x86_64/jidctred-sse2.asm",
+ "simd/x86_64/jquantf-sse2.asm",
+ "simd/x86_64/jquanti-avx2.asm",
+ "simd/x86_64/jquanti-sse2.asm",
+ "simd/x86_64/jsimdcpu.asm",
+ "simd/nasm/jcolsamp.inc",
+ "simd/nasm/jdct.inc",
+ "simd/nasm/jpeg_nbits_table.inc",
+ "simd/nasm/jsimdcfg.inc",
+ "simd/nasm/jsimdcfg.inc.h",
+ "simd/nasm/jsimdext.inc",
+ ],
+ outs = [
+ "simd/x86_64/jccolor-avx2.o",
+ "simd/x86_64/jccolor-sse2.o",
+ "simd/x86_64/jcgray-avx2.o",
+ "simd/x86_64/jcgray-sse2.o",
+ "simd/x86_64/jchuff-sse2.o",
+ "simd/x86_64/jcphuff-sse2.o",
+ "simd/x86_64/jcsample-avx2.o",
+ "simd/x86_64/jcsample-sse2.o",
+ "simd/x86_64/jdcolor-avx2.o",
+ "simd/x86_64/jdcolor-sse2.o",
+ "simd/x86_64/jdmerge-avx2.o",
+ "simd/x86_64/jdmerge-sse2.o",
+ "simd/x86_64/jdsample-avx2.o",
+ "simd/x86_64/jdsample-sse2.o",
+ "simd/x86_64/jfdctflt-sse.o",
+ "simd/x86_64/jfdctfst-sse2.o",
+ "simd/x86_64/jfdctint-avx2.o",
+ "simd/x86_64/jfdctint-sse2.o",
+ "simd/x86_64/jidctflt-sse2.o",
+ "simd/x86_64/jidctfst-sse2.o",
+ "simd/x86_64/jidctint-avx2.o",
+ "simd/x86_64/jidctint-sse2.o",
+ "simd/x86_64/jidctred-sse2.o",
+ "simd/x86_64/jquantf-sse2.o",
+ "simd/x86_64/jquanti-avx2.o",
+ "simd/x86_64/jquanti-sse2.o",
+ "simd/x86_64/jsimdcpu.o",
+ ],
+ cmd = "for out in $(OUTS); do\n" +
+ " $(location @nasm//:nasm) -f elf64" +
+ " -DELF -DPIC -D__x86_64__" +
+ " -I $$(dirname $(location jconfig.h))/" +
+ " -I $$(dirname $(location jconfigint.h))/" +
+ " -I $$(dirname $(location simd/nasm/jsimdcfg.inc.h))/" +
+ " -I $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/" +
+ " -o $$out" +
+ " $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/$$(basename $${out%.o}.asm)\n" +
+ "done",
+ tools = ["@nasm"],
+)
+
+cc_library(
+ name = "simd_armv7a",
+ srcs = [
+ "jchuff.h",
+ "jconfig.h",
+ "jdct.h",
+ "jerror.h",
+ "jinclude.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jsimd.h",
+ "jsimddct.h",
+ "simd/arm/jsimd.c",
+ "simd/arm/jsimd_neon.S",
+ "simd/jsimd.h",
+ ],
+ copts = libjpegturbo_copts,
+ nocopts = libjpegturbo_nocopts,
+)
+
+cc_library(
+ name = "simd_armv8a",
+ srcs = [
+ "jchuff.h",
+ "jconfig.h",
+ "jdct.h",
+ "jerror.h",
+ "jinclude.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jsimd.h",
+ "jsimddct.h",
+ "simd/arm64/jsimd.c",
+ "simd/arm64/jsimd_neon.S",
+ "simd/jsimd.h",
+ ],
+ copts = libjpegturbo_copts,
+ nocopts = libjpegturbo_nocopts,
+)
+
+cc_library(
+ name = "simd_win_x86_64",
+ srcs = [
+ "jchuff.h",
+ "jconfig.h",
+ "jconfigint.h",
+ "jdct.h",
+ "jerror.h",
+ "jinclude.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jsimd.h",
+ "jsimddct.h",
+ "simd/jsimd.h",
+ "simd/x86_64/jccolor-avx2.obj",
+ "simd/x86_64/jccolor-sse2.obj",
+ "simd/x86_64/jcgray-avx2.obj",
+ "simd/x86_64/jcgray-sse2.obj",
+ "simd/x86_64/jchuff-sse2.obj",
+ "simd/x86_64/jcphuff-sse2.obj",
+ "simd/x86_64/jcsample-avx2.obj",
+ "simd/x86_64/jcsample-sse2.obj",
+ "simd/x86_64/jdcolor-avx2.obj",
+ "simd/x86_64/jdcolor-sse2.obj",
+ "simd/x86_64/jdmerge-avx2.obj",
+ "simd/x86_64/jdmerge-sse2.obj",
+ "simd/x86_64/jdsample-avx2.obj",
+ "simd/x86_64/jdsample-sse2.obj",
+ "simd/x86_64/jfdctflt-sse.obj",
+ "simd/x86_64/jfdctfst-sse2.obj",
+ "simd/x86_64/jfdctint-avx2.obj",
+ "simd/x86_64/jfdctint-sse2.obj",
+ "simd/x86_64/jidctflt-sse2.obj",
+ "simd/x86_64/jidctfst-sse2.obj",
+ "simd/x86_64/jidctint-avx2.obj",
+ "simd/x86_64/jidctint-sse2.obj",
+ "simd/x86_64/jidctred-sse2.obj",
+ "simd/x86_64/jquantf-sse2.obj",
+ "simd/x86_64/jquanti-avx2.obj",
+ "simd/x86_64/jquanti-sse2.obj",
+ "simd/x86_64/jsimd.c",
+ "simd/x86_64/jsimdcpu.obj",
+ ],
+ copts = libjpegturbo_copts,
+)
+
+genrule(
+ name = "simd_win_x86_64_assemble",
+ srcs = [
+ "jconfig.h",
+ "jconfigint.h",
+ "simd/x86_64/jccolext-avx2.asm",
+ "simd/x86_64/jccolext-sse2.asm",
+ "simd/x86_64/jccolor-avx2.asm",
+ "simd/x86_64/jccolor-sse2.asm",
+ "simd/x86_64/jcgray-avx2.asm",
+ "simd/x86_64/jcgray-sse2.asm",
+ "simd/x86_64/jcgryext-avx2.asm",
+ "simd/x86_64/jcgryext-sse2.asm",
+ "simd/x86_64/jchuff-sse2.asm",
+ "simd/x86_64/jcphuff-sse2.asm",
+ "simd/x86_64/jcsample-avx2.asm",
+ "simd/x86_64/jcsample-sse2.asm",
+ "simd/x86_64/jdcolext-avx2.asm",
+ "simd/x86_64/jdcolext-sse2.asm",
+ "simd/x86_64/jdcolor-avx2.asm",
+ "simd/x86_64/jdcolor-sse2.asm",
+ "simd/x86_64/jdmerge-avx2.asm",
+ "simd/x86_64/jdmerge-sse2.asm",
+ "simd/x86_64/jdmrgext-avx2.asm",
+ "simd/x86_64/jdmrgext-sse2.asm",
+ "simd/x86_64/jdsample-avx2.asm",
+ "simd/x86_64/jdsample-sse2.asm",
+ "simd/x86_64/jfdctflt-sse.asm",
+ "simd/x86_64/jfdctfst-sse2.asm",
+ "simd/x86_64/jfdctint-avx2.asm",
+ "simd/x86_64/jfdctint-sse2.asm",
+ "simd/x86_64/jidctflt-sse2.asm",
+ "simd/x86_64/jidctfst-sse2.asm",
+ "simd/x86_64/jidctint-avx2.asm",
+ "simd/x86_64/jidctint-sse2.asm",
+ "simd/x86_64/jidctred-sse2.asm",
+ "simd/x86_64/jquantf-sse2.asm",
+ "simd/x86_64/jquanti-avx2.asm",
+ "simd/x86_64/jquanti-sse2.asm",
+ "simd/x86_64/jsimdcpu.asm",
+ "simd/nasm/jcolsamp.inc",
+ "simd/nasm/jdct.inc",
+ "simd/nasm/jpeg_nbits_table.inc",
+ "simd/nasm/jsimdcfg.inc",
+ "simd/nasm/jsimdcfg.inc.h",
+ "simd/nasm/jsimdext.inc",
+ ],
+ outs = [
+ "simd/x86_64/jccolor-avx2.obj",
+ "simd/x86_64/jccolor-sse2.obj",
+ "simd/x86_64/jcgray-avx2.obj",
+ "simd/x86_64/jcgray-sse2.obj",
+ "simd/x86_64/jchuff-sse2.obj",
+ "simd/x86_64/jcphuff-sse2.obj",
+ "simd/x86_64/jcsample-avx2.obj",
+ "simd/x86_64/jcsample-sse2.obj",
+ "simd/x86_64/jdcolor-avx2.obj",
+ "simd/x86_64/jdcolor-sse2.obj",
+ "simd/x86_64/jdmerge-avx2.obj",
+ "simd/x86_64/jdmerge-sse2.obj",
+ "simd/x86_64/jdsample-avx2.obj",
+ "simd/x86_64/jdsample-sse2.obj",
+ "simd/x86_64/jfdctflt-sse.obj",
+ "simd/x86_64/jfdctfst-sse2.obj",
+ "simd/x86_64/jfdctint-avx2.obj",
+ "simd/x86_64/jfdctint-sse2.obj",
+ "simd/x86_64/jidctflt-sse2.obj",
+ "simd/x86_64/jidctfst-sse2.obj",
+ "simd/x86_64/jidctint-avx2.obj",
+ "simd/x86_64/jidctint-sse2.obj",
+ "simd/x86_64/jidctred-sse2.obj",
+ "simd/x86_64/jquantf-sse2.obj",
+ "simd/x86_64/jquanti-avx2.obj",
+ "simd/x86_64/jquanti-sse2.obj",
+ "simd/x86_64/jsimdcpu.obj",
+ ],
+ cmd = "for out in $(OUTS); do\n" +
+ " $(location @nasm//:nasm) -fwin64 -DWIN64 -D__x86_64__" +
+ " -I $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/" +
+ " -I $$(dirname $(location simd/nasm/jdct.inc))/" +
+ " -I $$(dirname $(location simd/nasm/jdct.inc))/../../win/" +
+ " -o $$out" +
+ " $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/$$(basename $${out%.obj}.asm)\n" +
+ "done",
+ tools = ["@nasm"],
+)
+
+cc_library(
+ name = "simd_none",
+ srcs = [
+ "jchuff.h",
+ "jconfig.h",
+ "jdct.h",
+ "jerror.h",
+ "jinclude.h",
+ "jmorecfg.h",
+ "jpegint.h",
+ "jpeglib.h",
+ "jsimd.h",
+ "jsimd_none.c",
+ "jsimddct.h",
+ ],
+ copts = libjpegturbo_copts,
+ nocopts = libjpegturbo_nocopts,
+)
+
+template_rule(
+ name = "jconfig_win",
+ src = "win/jconfig.h.in",
+ out = "jconfig_win.h",
+ substitutions = {
+ "@JPEG_LIB_VERSION@": "62",
+ "@VERSION@": "2.0.0",
+ "@LIBJPEG_TURBO_VERSION_NUMBER@": "2000000",
+ "@BITS_IN_JSAMPLE@": "8",
+ "#cmakedefine C_ARITH_CODING_SUPPORTED": "#define C_ARITH_CODING_SUPPORTED",
+ "#cmakedefine D_ARITH_CODING_SUPPORTED": "#define D_ARITH_CODING_SUPPORTED",
+ "#cmakedefine MEM_SRCDST_SUPPORTED": "#define MEM_SRCDST_SUPPORTED",
+ "#cmakedefine WITH_SIMD": "",
+ },
+)
+
+JCONFIG_NOWIN_COMMON_SUBSTITUTIONS = {
+ "@JPEG_LIB_VERSION@": "62",
+ "@VERSION@": "2.0.0",
+ "@LIBJPEG_TURBO_VERSION_NUMBER@": "2000000",
+ "#cmakedefine C_ARITH_CODING_SUPPORTED": "#define C_ARITH_CODING_SUPPORTED",
+ "#cmakedefine D_ARITH_CODING_SUPPORTED": "#define D_ARITH_CODING_SUPPORTED",
+ "#cmakedefine MEM_SRCDST_SUPPORTED": "#define MEM_SRCDST_SUPPORTED",
+ "@BITS_IN_JSAMPLE@": "8",
+ "#cmakedefine HAVE_LOCALE_H": "#define HAVE_LOCALE_H 1",
+ "#cmakedefine HAVE_STDDEF_H": "#define HAVE_STDDEF_H 1",
+ "#cmakedefine HAVE_STDLIB_H": "#define HAVE_STDLIB_H 1",
+ "#cmakedefine NEED_SYS_TYPES_H": "#define NEED_SYS_TYPES_H",
+ "#cmakedefine NEED_BSD_STRINGS": "",
+ "#cmakedefine HAVE_UNSIGNED_CHAR": "#define HAVE_UNSIGNED_CHAR 1",
+ "#cmakedefine HAVE_UNSIGNED_SHORT": "#define HAVE_UNSIGNED_SHORT 1",
+ "#cmakedefine INCOMPLETE_TYPES_BROKEN": "",
+ "#cmakedefine RIGHT_SHIFT_IS_UNSIGNED": "",
+ "#cmakedefine __CHAR_UNSIGNED__": "",
+ "#undef const": "",
+ "#undef size_t": "",
+}
+
+JCONFIG_NOWIN_SIMD_SUBSTITUTIONS = {
+ "#cmakedefine WITH_SIMD": "#define WITH_SIMD",
+}
+
+JCONFIG_NOWIN_NOSIMD_SUBSTITUTIONS = {
+ "#cmakedefine WITH_SIMD": "",
+}
+
+JCONFIG_NOWIN_SIMD_SUBSTITUTIONS.update(JCONFIG_NOWIN_COMMON_SUBSTITUTIONS)
+
+JCONFIG_NOWIN_NOSIMD_SUBSTITUTIONS.update(JCONFIG_NOWIN_COMMON_SUBSTITUTIONS)
+
+template_rule(
+ name = "jconfig_nowin_nosimd",
+ src = "jconfig.h.in",
+ out = "jconfig_nowin_nosimd.h",
+ substitutions = JCONFIG_NOWIN_NOSIMD_SUBSTITUTIONS,
+)
+
+template_rule(
+ name = "jconfig_nowin_simd",
+ src = "jconfig.h.in",
+ out = "jconfig_nowin_simd.h",
+ substitutions = JCONFIG_NOWIN_SIMD_SUBSTITUTIONS,
+)
+
+JCONFIGINT_COMMON_SUBSTITUTIONS = {
+ "@BUILD@": "20180831",
+ "@VERSION@": "2.0.0",
+ "@CMAKE_PROJECT_NAME@": "libjpeg-turbo",
+ "#undef inline": "",
+ "#cmakedefine HAVE_INTRIN_H": "",
+}
+
+JCONFIGINT_NOWIN_SUBSTITUTIONS = {
+ "#cmakedefine HAVE_BUILTIN_CTZL": "#define HAVE_BUILTIN_CTZL",
+ "@INLINE@": "inline __attribute__((always_inline))",
+ "#define SIZEOF_SIZE_T @SIZE_T@": "#if (__WORDSIZE==64 && !defined(__native_client__))\n" +
+ "#define SIZEOF_SIZE_T 8\n" +
+ "#else\n" +
+ "#define SIZEOF_SIZE_T 4\n" +
+ "#endif\n",
+}
+
+JCONFIGINT_WIN_SUBSTITUTIONS = {
+ "#cmakedefine HAVE_BUILTIN_CTZL": "",
+ "#define INLINE @INLINE@": "#if defined(__GNUC__)\n" +
+ "#define INLINE inline __attribute__((always_inline))\n" +
+ "#elif defined(_MSC_VER)\n" +
+ "#define INLINE __forceinline\n" +
+ "#else\n" +
+ "#define INLINE\n" +
+ "#endif\n",
+ "#define SIZEOF_SIZE_T @SIZE_T@": "#if (__WORDSIZE==64)\n" +
+ "#define SIZEOF_SIZE_T 8\n" +
+ "#else\n" +
+ "#define SIZEOF_SIZE_T 4\n" +
+ "#endif\n",
+}
+
+JCONFIGINT_NOWIN_SUBSTITUTIONS.update(JCONFIGINT_COMMON_SUBSTITUTIONS)
+
+JCONFIGINT_WIN_SUBSTITUTIONS.update(JCONFIGINT_COMMON_SUBSTITUTIONS)
+
+template_rule(
+ name = "jconfigint_nowin",
+ src = "jconfigint.h.in",
+ out = "jconfigint_nowin.h",
+ substitutions = JCONFIGINT_NOWIN_SUBSTITUTIONS,
+)
+
+template_rule(
+ name = "jconfigint_win",
+ src = "jconfigint.h.in",
+ out = "jconfigint_win.h",
+ substitutions = JCONFIGINT_WIN_SUBSTITUTIONS,
+)
+
+genrule(
+ name = "configure",
+ srcs = [
+ "jconfig_win.h",
+ "jconfig_nowin_nosimd.h",
+ "jconfig_nowin_simd.h",
+ ],
+ outs = ["jconfig.h"],
+ cmd = select({
+ ":windows": "cp $(location jconfig_win.h) $@",
+ ":k8": "cp $(location jconfig_nowin_simd.h) $@",
+ ":armeabi-v7a": "cp $(location jconfig_nowin_simd.h) $@",
+ ":arm64-v8a": "cp $(location jconfig_nowin_simd.h) $@",
+ ":linux_ppc64le": "cp $(location jconfig_nowin_simd.h) $@",
+ "//conditions:default": "cp $(location jconfig_nowin_nosimd.h) $@",
+ }),
+)
+
+genrule(
+ name = "configure_internal",
+ srcs = [
+ "jconfigint_win.h",
+ "jconfigint_nowin.h",
+ ],
+ outs = ["jconfigint.h"],
+ cmd = select({
+ ":windows": "cp $(location jconfigint_win.h) $@",
+ "//conditions:default": "cp $(location jconfigint_nowin.h) $@",
+ }),
+)
+
+# jiminy cricket the way this file is generated is completely outrageous
+genrule(
+ name = "configure_simd",
+ outs = ["simd/jsimdcfg.inc"],
+ cmd = "cat <<'EOF' >$@\n" +
+ "%define DCTSIZE 8\n" +
+ "%define DCTSIZE2 64\n" +
+ "%define RGB_RED 0\n" +
+ "%define RGB_GREEN 1\n" +
+ "%define RGB_BLUE 2\n" +
+ "%define RGB_PIXELSIZE 3\n" +
+ "%define EXT_RGB_RED 0\n" +
+ "%define EXT_RGB_GREEN 1\n" +
+ "%define EXT_RGB_BLUE 2\n" +
+ "%define EXT_RGB_PIXELSIZE 3\n" +
+ "%define EXT_RGBX_RED 0\n" +
+ "%define EXT_RGBX_GREEN 1\n" +
+ "%define EXT_RGBX_BLUE 2\n" +
+ "%define EXT_RGBX_PIXELSIZE 4\n" +
+ "%define EXT_BGR_RED 2\n" +
+ "%define EXT_BGR_GREEN 1\n" +
+ "%define EXT_BGR_BLUE 0\n" +
+ "%define EXT_BGR_PIXELSIZE 3\n" +
+ "%define EXT_BGRX_RED 2\n" +
+ "%define EXT_BGRX_GREEN 1\n" +
+ "%define EXT_BGRX_BLUE 0\n" +
+ "%define EXT_BGRX_PIXELSIZE 4\n" +
+ "%define EXT_XBGR_RED 3\n" +
+ "%define EXT_XBGR_GREEN 2\n" +
+ "%define EXT_XBGR_BLUE 1\n" +
+ "%define EXT_XBGR_PIXELSIZE 4\n" +
+ "%define EXT_XRGB_RED 1\n" +
+ "%define EXT_XRGB_GREEN 2\n" +
+ "%define EXT_XRGB_BLUE 3\n" +
+ "%define EXT_XRGB_PIXELSIZE 4\n" +
+ "%define RGBX_FILLER_0XFF 1\n" +
+ "%define JSAMPLE byte ; unsigned char\n" +
+ "%define SIZEOF_JSAMPLE SIZEOF_BYTE ; sizeof(JSAMPLE)\n" +
+ "%define CENTERJSAMPLE 128\n" +
+ "%define JCOEF word ; short\n" +
+ "%define SIZEOF_JCOEF SIZEOF_WORD ; sizeof(JCOEF)\n" +
+ "%define JDIMENSION dword ; unsigned int\n" +
+ "%define SIZEOF_JDIMENSION SIZEOF_DWORD ; sizeof(JDIMENSION)\n" +
+ "%define JSAMPROW POINTER ; JSAMPLE * (jpeglib.h)\n" +
+ "%define JSAMPARRAY POINTER ; JSAMPROW * (jpeglib.h)\n" +
+ "%define JSAMPIMAGE POINTER ; JSAMPARRAY * (jpeglib.h)\n" +
+ "%define JCOEFPTR POINTER ; JCOEF * (jpeglib.h)\n" +
+ "%define SIZEOF_JSAMPROW SIZEOF_POINTER ; sizeof(JSAMPROW)\n" +
+ "%define SIZEOF_JSAMPARRAY SIZEOF_POINTER ; sizeof(JSAMPARRAY)\n" +
+ "%define SIZEOF_JSAMPIMAGE SIZEOF_POINTER ; sizeof(JSAMPIMAGE)\n" +
+ "%define SIZEOF_JCOEFPTR SIZEOF_POINTER ; sizeof(JCOEFPTR)\n" +
+ "%define DCTELEM word ; short\n" +
+ "%define SIZEOF_DCTELEM SIZEOF_WORD ; sizeof(DCTELEM)\n" +
+ "%define float FP32 ; float\n" +
+ "%define SIZEOF_FAST_FLOAT SIZEOF_FP32 ; sizeof(float)\n" +
+ "%define ISLOW_MULT_TYPE word ; must be short\n" +
+ "%define SIZEOF_ISLOW_MULT_TYPE SIZEOF_WORD ; sizeof(ISLOW_MULT_TYPE)\n" +
+ "%define IFAST_MULT_TYPE word ; must be short\n" +
+ "%define SIZEOF_IFAST_MULT_TYPE SIZEOF_WORD ; sizeof(IFAST_MULT_TYPE)\n" +
+ "%define IFAST_SCALE_BITS 2 ; fractional bits in scale factors\n" +
+ "%define FLOAT_MULT_TYPE FP32 ; must be float\n" +
+ "%define SIZEOF_FLOAT_MULT_TYPE SIZEOF_FP32 ; sizeof(FLOAT_MULT_TYPE)\n" +
+ "%define JSIMD_NONE 0x00\n" +
+ "%define JSIMD_MMX 0x01\n" +
+ "%define JSIMD_3DNOW 0x02\n" +
+ "%define JSIMD_SSE 0x04\n" +
+ "%define JSIMD_SSE2 0x08\n" +
+ "EOF",
+)
+
+config_setting(
+ name = "k8",
+ values = {"cpu": "k8"},
+)
+
+config_setting(
+ name = "android",
+ values = {"crosstool_top": "//external:android/crosstool"},
+)
+
+config_setting(
+ name = "armeabi-v7a",
+ values = {"cpu": "armeabi-v7a"},
+)
+
+config_setting(
+ name = "arm64-v8a",
+ values = {"cpu": "arm64-v8a"},
+)
+
+config_setting(
+ name = "windows",
+ values = {"cpu": "x64_windows"},
+)
+
+config_setting(
+ name = "linux_ppc64le",
+ values = {"cpu": "ppc"},
+)