blob: d8e76ece8660aa632af88f836199609f3a2cb9a6 [file] [log] [blame]
load("@rules_license//rules:license.bzl", "license")
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
licenses(["notice"]) # BSD/MIT-like license
exports_files(["LICENSE"])
license(
name = "license",
package_name = "blake3",
license_kinds = [
"@rules_license//licenses/spdx:Apache-2.0",
],
license_text = "LICENSE",
package_version = "1.3.3",
)
filegroup(
name = "srcs",
srcs = glob(["**"]),
visibility = ["//third_party:__pkg__"],
)
cc_library(
name = "blake3",
srcs = [
"c/blake3.c",
"c/blake3_dispatch.c",
"c/blake3_portable.c",
] + select({
"@bazel_tools//src/conditions:linux_x86_64": [
"c/blake3_avx2_x86-64_unix.S",
# Disable to appease bazel-ci which uses ubuntu-18 (EOL) and GCC 7
# lacking the headers to compile AVX512.
# "c/blake3_avx512_x86-64_unix.S",
"c/blake3_sse2_x86-64_unix.S",
"c/blake3_sse41_x86-64_unix.S",
],
"@bazel_tools//src/conditions:linux_aarch64": [
"c/blake3_neon.c",
],
"@bazel_tools//src/conditions:windows_x64": [
"c/blake3_avx2_x86-64_windows_msvc.asm",
"c/blake3_avx512_x86-64_windows_msvc.asm",
"c/blake3_sse2_x86-64_windows_msvc.asm",
"c/blake3_sse41_x86-64_windows_msvc.asm",
],
"@bazel_tools//src/conditions:windows_arm64": [
"c/blake3_neon.c",
],
"@bazel_tools//src/conditions:darwin_arm64": [
"c/blake3_neon.c",
],
"//conditions:default": [],
}),
hdrs = [
"c/blake3.h",
"c/blake3_impl.h",
],
copts = select({
"@bazel_tools//src/conditions:linux_x86_64": [
# Disable to appease bazel-ci which uses ubuntu-18 (EOL) and GCC 7
# lacking the headers to compile AVX512.
"-DBLAKE3_NO_AVX512",
],
"@bazel_tools//src/conditions:linux_aarch64": [
"-DBLAKE3_USE_NEON=1",
],
"@bazel_tools//src/conditions:windows_x64": [],
"@bazel_tools//src/conditions:windows_arm64": [
"-DBLAKE3_USE_NEON=1",
],
"@bazel_tools//src/conditions:darwin_arm64": [
"-DBLAKE3_USE_NEON=1",
],
"//conditions:default": [
"-DBLAKE3_NO_AVX2",
"-DBLAKE3_NO_AVX512",
"-DBLAKE3_NO_NEON",
"-DBLAKE3_NO_SSE2",
"-DBLAKE3_NO_SSE41",
],
}),
includes = ["."],
visibility = ["//visibility:public"],
)
cc_binary(
name = "example",
srcs = [
"c/example.c",
],
copts = [
"-w",
"-O3",
],
includes = ["."],
visibility = ["//visibility:public"],
deps = [
":blake3",
],
)