diff --color -urN a/BUILD.bazel b/BUILD.bazel
--- a/BUILD.bazel	1969-12-31 18:00:00.000000000 -0600
+++ b/BUILD.bazel	2025-09-17 10:29:51.159884226 -0500
@@ -0,0 +1,128 @@
+load("@prysm//tools/go:def.bzl", "go_library")
+load("@io_bazel_rules_go//go:def.bzl", "go_test")
+
+config_setting(
+    name = "blst_modern",
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:x86_64",
+    ],
+    values = {
+        "define": "blst_modern=true",
+    },
+)
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "bindings/go/blst.go",
+        "bindings/go/cgo_server.c",
+    ],
+    cgo = True,
+    copts = [
+        "-D__BLST_CGO__",
+        "-Ibindings",
+        "-Isrc",
+        "-O2",
+    ] + select({
+        "@io_bazel_rules_go//go/platform:amd64": [
+            "-mno-avx",
+            "-D__ADX__",
+        ],
+        "//conditions:default": [],
+    }) + select({
+        "//conditions:default": [
+            "-D__BLST_PORTABLE__",
+        ],
+        ":blst_modern": [],
+    }),
+    cdeps = [":blst"],
+    importpath = "github.com/supranational/blst/bindings/go",
+    visibility = ["//visibility:public"],
+)
+
+go_test(
+    name = "go_default_test",
+    srcs = [
+        "bindings/go/blst_htoc_test.go",
+        "bindings/go/blst_minpk_test.go",
+        "bindings/go/blst_minsig_test.go",
+    ],
+    embed = [":go_default_library"],
+    data = glob([
+        "bindings/go/hash_to_curve/*.json",
+    ]),
+)
+
+cc_library(
+    name = "blst",
+    srcs = [
+        "bindings/blst.h",
+        "bindings/blst_aux.h",
+    ],
+    hdrs = [
+        "bindings/blst.h",
+        "bindings/blst_aux.h",
+    ],
+    deps = [
+        ":src",
+        ":asm",
+    ],
+    strip_include_prefix = "bindings",
+    visibility = ["//visibility:public"],
+)
+
+cc_library(
+    name = "asm_hdrs",
+    hdrs = glob([
+        "build/**/*.s",
+        "build/**/*.S",
+    ], exclude = ["build/assembly.s"]),
+)
+
+cc_library(
+    name = "asm",
+    srcs = [
+        "build/assembly.S",
+    ],
+    copts = [
+            "-O2",
+    ] + select({
+        "@io_bazel_rules_go//go/platform:amd64": [
+            "-mno-avx",
+            "-D__ADX__",
+        ],
+        "//conditions:default": [],
+    }) + select({
+        "//conditions:default": [
+            "-D__BLST_PORTABLE__",
+        ],
+        ":blst_modern": [],
+    }),
+    deps = [":asm_hdrs"],
+    linkstatic = True,
+)
+
+cc_library(
+    name = "hdrs",
+    hdrs = glob(
+        [
+            "src/*.c",
+            "src/*.h",
+        ],
+        exclude = [
+            "src/client_*.c",
+        ],
+    ),
+    strip_include_prefix = "src",
+)
+
+cc_library(
+    name = "src",
+    srcs = [
+        "src/server.c",
+    ],
+    deps = [
+        ":hdrs",
+    ],
+)
