load("@fbsource//tools/build_defs/dirsync:fb_dirsync_cpp_library.bzl", "fb_dirsync_cpp_library")

oncall("fbcode_entropy_wardens_folly")

fb_dirsync_cpp_library(
    name = "avx512_crc32c_v8s3x4",
    srcs = [
        "avx512_crc32c_v8s3x4.cpp",
    ],
    headers = [
        "avx512_crc32c_v8s3x4.h",
    ],
    compiler_flags = select({
        "DEFAULT": [],
        "ovr_config//cpu:x86_64": [
            "-mavx512f",
            "-mavx512vl",
            "-mpclmul",
        ],
        "ovr_config//os:android-x86_64": ["-mpclmul"],
    }),
    use_raw_headers = True,
    exported_deps = [
        "//folly:portability",
    ],
)

fb_dirsync_cpp_library(
    name = "sse_crc32c_v8s3x3",
    srcs = [
        "sse_crc32c_v8s3x3.cpp",
    ],
    headers = [
        "sse_crc32c_v8s3x3.h",
    ],
    compiler_flags = select({
        "DEFAULT": [],
        "ovr_config//os:android-x86_64": ["-mpclmul"],
    }),
    use_raw_headers = True,
    exported_deps = [
        "//folly:portability",
    ],
)

fb_dirsync_cpp_library(
    name = "neon_crc32c_v3s4x2e_v2",
    srcs = [
        "neon_crc32c_v3s4x2e_v2.cpp",
    ],
    headers = [
        "neon_crc32c_v3s4x2e_v2.h",
    ],
    compiler_flags = select({
        "DEFAULT": [],
        "ovr_config//cpu:arm64": [
            "-march=armv8-a+crypto+crc",
        ],
    }),
    use_raw_headers = True,
    deps = [
        "//folly:portability",
        "//folly/system:aux_vector",
    ],
)

fb_dirsync_cpp_library(
    name = "neon_eor3_crc32c_v8s2x4e_s2x1",
    srcs = [
        "neon_eor3_crc32c_v8s2x4e_s2x1.cpp",
    ],
    headers = [
        "neon_eor3_crc32c_v8s2x4e_s2x1.h",
    ],
    compiler_flags = select({
        "DEFAULT": [],
        "ovr_config//os:android-arm64": ["-march=armv8.2-a+crypto+sha3"],
    }),
    use_raw_headers = True,
    deps = [
        "//folly:portability",
        "//folly/system:aux_vector",
    ],
)

fb_dirsync_cpp_library(
    name = "neon_eor3_crc32_v8s2x4e_s1x2",
    srcs = [
        "neon_eor3_crc32_v8s2x4e_s1x2.cpp",
    ],
    headers = [
        "neon_eor3_crc32_v8s2x4e_s1x2.h",
    ],
    compiler_flags = select({
        "DEFAULT": [],
        "ovr_config//os:android-arm64": ["-march=armv8.2-a+crypto+sha3"],
    }),
    use_raw_headers = True,
    deps = [
        "//folly:portability",
        "//folly/system:aux_vector",
    ],
)
