--- WORKSPACE.orig	2026-06-18 18:08:19 UTC
+++ WORKSPACE
@@ -2,31 +2,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "
 
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
-# Hedron's Compile Commands Extractor for Bazel
-# https://github.com/hedronvision/bazel-compile-commands-extractor
-http_archive(
-    name = "hedron_compile_commands",
-    sha256 = "e875b18876190b172ab59eaf193c2eec16fff8c46306c5eb0577ef7d1f8a65f7",
-    strip_prefix = "bazel-compile-commands-extractor-9f69112e3f61b9df76a8275085dabad36ef37c96",
-    url = "https://github.com/kralicky/bazel-compile-commands-extractor/archive/9f69112e3f61b9df76a8275085dabad36ef37c96.tar.gz",
-)
 
-load("@hedron_compile_commands//:workspace_setup.bzl", "hedron_compile_commands_setup")
-
-hedron_compile_commands_setup()
-
-load("@hedron_compile_commands//:workspace_setup_transitive.bzl", "hedron_compile_commands_setup_transitive")
-
-hedron_compile_commands_setup_transitive()
-
-load("@hedron_compile_commands//:workspace_setup_transitive_transitive.bzl", "hedron_compile_commands_setup_transitive_transitive")
-
-hedron_compile_commands_setup_transitive_transitive()
-
-load("@hedron_compile_commands//:workspace_setup_transitive_transitive_transitive.bzl", "hedron_compile_commands_setup_transitive_transitive_transitive")
-
-hedron_compile_commands_setup_transitive_transitive_transitive()
-
 envoy_version = "f387231af8dd7274e37c5ae2cc797cb09a948818"
 
 openssh_version = "V_10_3_P1"
@@ -35,8 +11,6 @@ readerwriterqueue_version = "1.0.7"
 
 readerwriterqueue_version = "1.0.7"
 
-rules_oci_version = "2.3.1"
-
 local_repository(
     name = "envoy_build_config",
     path = "bazel/envoy_build_config",
@@ -106,6 +80,8 @@ external_http_archive(
         "@envoy_toolshed//:patches/toolchains_llvm.patch",
         # linux->darwin cross-compile support
         "//patches/toolchains_llvm:0002-darwin.patch",
+        # FreeBSD OS support in toolchains_llvm
+        "//patches/toolchains_llvm:freebsd.patch",
     ],
 )
 
@@ -116,6 +92,8 @@ external_http_archive(
     patches = [
         "//patches/luajit:0001-libunwind-fde-offset.patch",
         "//patches/luajit:fix-luajit-asan.patch",
+        "//patches/luajit:freebsd.patch",
+        "//patches/luajit:getentropy_freebsd.patch",
     ],
 )
 
@@ -125,21 +103,6 @@ patch_antlr4_runtimes()
 
 patch_antlr4_runtimes()
 
-http_archive(
-    name = "rules_oci",
-    sha256 = "6d47e0bb9d3c269695cbb35abb603d1db08434376a1210867da8f6f4a9c630ba",
-    strip_prefix = "rules_oci-" + rules_oci_version,
-    url = "https://github.com/bazel-contrib/rules_oci/releases/download/v" + rules_oci_version + "/rules_oci-v" + rules_oci_version + ".tar.gz",
-)
-
-load("@rules_oci//oci:dependencies.bzl", "rules_oci_dependencies")
-
-rules_oci_dependencies()
-
-load("@rules_oci//oci:repositories.bzl", "oci_register_toolchains")
-
-oci_register_toolchains(name = "oci")
-
 load("@envoy//bazel:bazel_deps.bzl", "envoy_bazel_dependencies")
 
 envoy_bazel_dependencies()
@@ -152,33 +115,39 @@ envoy_python_dependencies()
 
 envoy_python_dependencies()
 
+# FreeBSD: Pre-register rules_proto 7.1.0 before envoy_dependency_imports() runs.
+# rules_proto_grpc_toolchains() (called inside envoy_dependency_imports) would otherwise
+# register rules_proto 5.3.0-21.7 first; external_http_archive then skips the 7.1.0
+# registration from api/bazel/repositories.bzl because existing_rules() already contains
+# "rules_proto".  rules_proto 5.3.0-21.7 lacks proto/proto_common.bzl which is required
+# by io_bazel_rules_go/proto/compiler.bzl at BUILD loading time.
+http_archive(
+    name = "rules_proto",
+    sha256 = "14a225870ab4e91869652cfd69ef2028277fc1dc4910d65d353b62d6e0ae21f4",
+    strip_prefix = "rules_proto-7.1.0",
+    url = "https://github.com/bazelbuild/rules_proto/archive/refs/tags/7.1.0.tar.gz",
+)
+
 load("@envoy//bazel:dependency_imports.bzl", "envoy_dependency_imports")
 
 envoy_dependency_imports()
 
-load("@envoy//bazel:repo.bzl", "envoy_repo")
+# FreeBSD: Register @local_jdk compile toolchains before DEFAULT.WORKSPACE.SUFFIX
+# adds the remote JDK toolchains. The @local_jdk toolchains have
+# exec_compatible_with = HOST_CONSTRAINTS (FreeBSD) and use local_jdk as runtime
+# (not remotejdk_21), avoiding toolchain resolution failures on FreeBSD.
+# The @local_jdk repo is set up by jdk.WORKSPACE in DEFAULT.WORKSPACE.SUFFIX;
+# register_toolchains here is lazy and resolves during build analysis.
+register_toolchains("@local_jdk//:all")
 
-envoy_repo()
+# FreeBSD: Register the system C++ compiler toolchain.  The pomerium-envoy-custom
+# WORKSPACE normally downloads a custom LLVM toolchain and registers it via
+# llvm_register_toolchains(); on FreeBSD we use the base system Clang instead.
+register_toolchains("@local_config_cc//:all")
 
-load("//bazel:toolchains.bzl", "pomerium_envoy_toolchains")
+load("@envoy//bazel:repo.bzl", "envoy_repo")
 
-pomerium_envoy_toolchains()
-
-load("//bazel/sysroots:load_sysroots.bzl", "load_sysroots")
-
-load_sysroots()
-
-load("//bazel/cxx_libs:load_cxx_cross_libs.bzl", "load_cxx_cross_libs")
-
-load_cxx_cross_libs()
-
-load("//bazel/llvm_extras:load_llvm_extras.bzl", "load_llvm_extras")
-
-load_llvm_extras()
-
-load("@llvm_toolchain//:toolchains.bzl", "llvm_register_toolchains")
-
-llvm_register_toolchains()
+envoy_repo()
 
 envoy_http_archive(
     name = "openssh_portable",
