# This file will be copied into //third_party/externals/libjpeg-turbo via the new_local_repository
# rule in WORKSPACE.bazel, so all files should be relative to that path.
load("@bazel_skylib//lib:selects.bzl", "selects")

config_setting(
    name = "mac_arm64",
    constraint_values = [
        "@platforms//cpu:arm64",
        "@platforms//os:macos",
    ],
)

selects.config_setting_group(
    name = "arm_or_arm64",
    match_any = [
        "@platforms//cpu:arm",
        "@platforms//cpu:arm64",
    ],
)

JPEGTURBO_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",
    "jconfigint.h",
    "jcparam.c",
    "jcphuff.c",
    "jcprepct.c",
    "jcsample.c",
    "jdapimin.c",
    "jdapistd.c",
    "jdarith.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",
    "jdmerge.h",
    "jdphuff.c",
    "jdpostct.c",
    "jdsample.c",
    "jdsample.h",
    "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.c",
    "jpeg_nbits_table.h",
    "jpegcomp.h",
    "jpegint.h",
    "jquant1.c",
    "jquant2.c",
    "jsimd.h",
    "jsimddct.h",
    "jutils.c",
    "jversion.h",
] + select({
    ":arm_or_arm64": [
        "simd/arm/jccolor-neon.c",
        "simd/arm/jcgray-neon.c",
        "simd/arm/jchuff.h",
        "simd/arm/jcphuff-neon.c",
        "simd/arm/jcsample-neon.c",
        "simd/arm/jdcolor-neon.c",
        "simd/arm/jdmerge-neon.c",
        "simd/arm/jdsample-neon.c",
        "simd/arm/jfdctfst-neon.c",
        "simd/arm/jfdctint-neon.c",
        "simd/arm/jidctfst-neon.c",
        "simd/arm/jidctint-neon.c",
        "simd/arm/jidctred-neon.c",
        "simd/arm/jquanti-neon.c",
        "simd/arm/neon-compat.h",
        "simd/jsimd.h",
    ],
    "//conditions:default": ["jsimd_none.c"],
}) + select({
    "@platforms//cpu:arm": [
        "simd/arm/aarch32/jchuff-neon.c",
        "simd/arm/aarch32/jsimd.c",
    ],
    "@platforms//cpu:arm64": [
        "simd/arm/aarch64/jchuff-neon.c",
        "simd/arm/aarch64/jsimd.c",
        "simd/arm/align.h",
    ],
    "//conditions:default": [],
})

JPEGTURBO_TEXT_HDRS = [
    "jccolext.c",
    "jdmrgext.c",
    "jdcolext.c",
    "jdcol565.c",
    "jdmrg565.c",
    "jstdhuff.c",
] + select({
    ":arm_or_arm64": [
        "simd/arm/jdmrgext-neon.c",
        "simd/arm/jcgryext-neon.c",
        "simd/arm/jdcolext-neon.c",
    ],
    "//conditions:default": [],
}) + select({
    "@platforms//cpu:arm": [
        "simd/arm/aarch32/jccolext-neon.c",
    ],
    "@platforms//cpu:arm64": [
        "simd/arm/aarch64/jccolext-neon.c",
    ],
    "//conditions:default": [],
})

JPEGTURBO_DEFINES = [
    # Add support for arithmetic encoding (C_) and decoding (D_).
    # This matches Android. Note that such JPEGs are likely rare, given lack of
    # support by major browsers.
    "C_ARITH_CODING_SUPPORTED=1",
    "D_ARITH_CODING_SUPPORTED=1",
] + select({
    ":arm_or_arm64": ["NEON_INTRINSICS"],
    "//conditions:default": [],
}) + select({
    # Cuts a 64K table.
    "//conditions:default": ["USE_CLZ_INTRINSIC"],
    ":mac_arm64": [],  # disabled on M1 macs already
    "@platforms//os:windows": [],
})

cc_library(
    name = "libjpeg_turbo",
    srcs = JPEGTURBO_SRCS,
    hdrs = [
        "jconfig.h",
        "jerror.h",
        "jmorecfg.h",
        "jpeglib.h",
        "jpeglibmangler.h",
    ],
    copts = [
        # There are some #include "neon-compat.h" etc that need this search path
        "-Iexternal/libjpeg_turbo/simd/arm/",
    ],
    local_defines = JPEGTURBO_DEFINES,
    textual_hdrs = JPEGTURBO_TEXT_HDRS,
    visibility = ["//visibility:public"],
)
