| 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", |
| ], |
| ) |