Load cc_library from rules_cc

In Bazel 9+ all rulesets have to be explicitly loaded from external
modules.

See
https://blog.bazel.build/2026/01/20/bazel-9.html#:~:text=In%208.0%2C%20we,flag%20in%2010.0.

Change-Id: Ib55d32ea9e935cc5ed0c304a1eed972b3b12b833
diff --git a/BUILD b/BUILD
index 386fc58..7811d93 100644
--- a/BUILD
+++ b/BUILD
@@ -31,6 +31,7 @@
 # These are Bazel rules to build Ceres. It's currently in Alpha state, and does
 # not support parameterization around threading choice or sparse backends.
 load("//:bazel/ceres.bzl", "ceres_library")
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
 
 ceres_library(
     name = "ceres",
diff --git a/MODULE.bazel b/MODULE.bazel
index d0060e6..97ba31e 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -6,3 +6,4 @@
 bazel_dep(name = "googletest", version = "1.16.0")
 bazel_dep(name = "eigen", version = "3.4.0")
 bazel_dep(name = "google_benchmark", version = "1.8.4")
+bazel_dep(name = "rules_cc", version = "0.2.22")
diff --git a/bazel/ceres.bzl b/bazel/ceres.bzl
index aba3c9d..609ba92 100644
--- a/bazel/ceres.bzl
+++ b/bazel/ceres.bzl
@@ -28,6 +28,8 @@
 #
 # Support for building Ceres Solver with a specific configuration.
 
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
 CERES_SRCS = ["internal/ceres/" + filename for filename in [
     "accelerate_sparse.cc",
     "array_utils.cc",
@@ -160,7 +162,7 @@
     else:
         schur_sources = native.glob(["internal/ceres/generated/*.cc"])
 
-    native.cc_library(
+    cc_library(
         name = name,
 
         # Internal sources, options, and dependencies.