Bazel support: Sync with current status of BCR and apply fixes for Bazel 9 (#345)

diff --git a/.bazelrc b/.bazelrc
deleted file mode 100644
index 583cbbd..0000000
--- a/.bazelrc
+++ /dev/null
@@ -1 +0,0 @@
-build --symlink_prefix=/ # Out of source build
diff --git a/.gitignore b/.gitignore
index f069f19..8a46641 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,10 @@
 *.pyc
 *.pyo
 
+# Bazel-related files
+bazel-*
+MODULE.bazel.lock
+
 # System files
 .DS_Store
 .DS_Store?
diff --git a/BUILD.bazel b/BUILD.bazel
index 2c6375f..dcfef81 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -2,11 +2,28 @@
 # Licenced under Apache-2.0 License
 
 # cpuinfo, a library to detect information about the host CPU
-package(default_visibility = ["//visibility:public"])
+
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_license//rules:license.bzl", "license")
+
+package(
+    default_applicable_licenses = [":license"],
+    default_visibility = ["//visibility:public"],
+)
 
 licenses(["notice"])
 
-exports_files(["LICENSE"])
+exports_files([
+    "LICENSE",
+])
+
+license(
+    name = "license",
+    license_kinds = ["@rules_license//licenses/spdx:BSD-2-Clause"],
+    license_text = "LICENSE",
+)
+
+# cpuinfo, a library to detect information about the host CPU
 
 C99OPTS = [
     "-std=gnu99",  # gnu99, not c99, because dprintf is used
@@ -229,171 +246,198 @@
 
 config_setting(
     name = "linux_x86_64",
-    values = {"cpu": "k8"},
+    constraint_values = [
+        "@platforms//cpu:x86_64",
+        "@platforms//os:linux",
+    ],
 )
 
 config_setting(
     name = "linux_arm",
-    values = {"cpu": "arm"},
+    constraint_values = [
+        "@platforms//cpu:arm",
+        "@platforms//os:linux",
+    ],
 )
 
-config_setting(
+alias(
     name = "linux_armhf",
-    values = {"cpu": "armhf"},
+    actual = ":linux_arm",
 )
 
 config_setting(
     name = "linux_armv7a",
-    values = {"cpu": "armv7a"},
+    constraint_values = [
+        "@platforms//cpu:armv7",
+        "@platforms//os:linux",
+    ],
 )
 
-config_setting(
+alias(
     name = "linux_armeabi",
-    values = {"cpu": "armeabi"},
+    actual = ":linux_arm",
 )
 
 config_setting(
     name = "linux_aarch64",
-    values = {"cpu": "aarch64"},
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:aarch64",
+    ],
 )
 
 config_setting(
     name = "linux_mips64",
-    values = {"cpu": "mips64"},
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:mips64",
+    ],
 )
 
 config_setting(
     name = "linux_riscv32",
-    values = {"cpu": "riscv32"},
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:riscv32",
+    ],
 )
 
 config_setting(
     name = "linux_riscv64",
-    values = {"cpu": "riscv64"},
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:riscv64",
+    ],
 )
 
 config_setting(
     name = "linux_s390x",
-    values = {"cpu": "s390x"},
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:s390x",
+    ],
 )
 
-config_setting(
+alias(
     name = "macos_x86_64_legacy",
-    values = {
-        "apple_platform_type": "macos",
-        "cpu": "darwin",
-    },
+    actual = ":macos_x86_64",
 )
 
 config_setting(
     name = "macos_x86_64",
-    values = {
-        "apple_platform_type": "macos",
-        "cpu": "darwin_x86_64",
-    },
+    constraint_values = [
+        "@platforms//os:macos",
+        "@platforms//cpu:x86_64",
+    ],
 )
 
 config_setting(
     name = "windows_x86_64",
-    values = {"cpu": "x64_windows"},
+    constraint_values = [
+        "@platforms//os:windows",
+        "@platforms//cpu:x86_64",
+    ],
 )
 
 config_setting(
     name = "windows_arm64",
-    values = {"cpu": "arm64_windows"},
+    constraint_values = [
+        "@platforms//os:windows",
+        "@platforms//cpu:arm64",
+    ],
 )
 
 config_setting(
     name = "android_armv7",
-    values = {
-        "crosstool_top": "//external:android/crosstool",
-        "cpu": "armeabi-v7a",
-    },
+    constraint_values = [
+        "@platforms//os:android",
+        "@platforms//cpu:armv7",
+    ],
     visibility = ["//visibility:public"],
 )
 
 config_setting(
     name = "android_arm64",
-    values = {
-        "crosstool_top": "//external:android/crosstool",
-        "cpu": "arm64-v8a",
-    },
+    constraint_values = [
+        "@platforms//os:android",
+        "@platforms//cpu:arm64",
+    ],
     visibility = ["//visibility:public"],
 )
 
 config_setting(
     name = "android_riscv64",
-    values = {
-        "crosstool_top": "//external:android/crosstool",
-        "cpu": "riscv64",
-    },
+    constraint_values = [
+        "@platforms//os:android",
+        "@platforms//cpu:riscv64",
+    ],
     visibility = ["//visibility:public"],
 )
 
 config_setting(
     name = "android_x86",
-    values = {
-        "crosstool_top": "//external:android/crosstool",
-        "cpu": "x86",
-    },
+    constraint_values = [
+        "@platforms//os:android",
+        "@platforms//cpu:x86_32",
+    ],
     visibility = ["//visibility:public"],
 )
 
 config_setting(
     name = "android_x86_64",
-    values = {
-        "crosstool_top": "//external:android/crosstool",
-        "cpu": "x86_64",
-    },
+    constraint_values = [
+        "@platforms//os:android",
+        "@platforms//cpu:x86_64",
+    ],
     visibility = ["//visibility:public"],
 )
 
 config_setting(
     name = "ios_armv7",
-    values = {
-        "apple_platform_type": "ios",
-        "cpu": "ios_armv7",
-    },
+    constraint_values = [
+        "@platforms//cpu:armv7",
+        "@platforms//os:ios",
+    ],
 )
 
 config_setting(
     name = "ios_arm64",
-    values = {
-        "apple_platform_type": "ios",
-        "cpu": "ios_arm64",
-    },
+    constraint_values = [
+        "@platforms//cpu:arm64",
+        "@platforms//os:ios",
+    ],
 )
 
 config_setting(
     name = "ios_arm64e",
-    values = {
-        "apple_platform_type": "ios",
-        "cpu": "ios_arm64e",
-    },
+    constraint_values = [
+        "@platforms//cpu:arm64e",
+        "@platforms//os:ios",
+    ],
 )
 
 config_setting(
     name = "macos_arm64",
-    values = {
-        "apple_platform_type": "macos",
-        "cpu": "darwin_arm64",
-    },
+    constraint_values = [
+        "@platforms//cpu:arm64",
+        "@platforms//os:macos",
+    ],
 )
 
 config_setting(
     name = "ios_x86",
-    values = {
-        "apple_platform_type": "ios",
-        "cpu": "ios_i386",
-    },
+    constraint_values = [
+        "@platforms//cpu:x86_32",
+        "@platforms//os:ios",
+    ],
 )
 
 config_setting(
     name = "ios_x86_64",
-    values = {
-        "apple_platform_type": "ios",
-        "cpu": "ios_x86_64",
-    },
+    constraint_values = [
+        "@platforms//cpu:x86_64",
+        "@platforms//os:ios",
+    ],
 )
 
 config_setting(
@@ -406,65 +450,67 @@
 
 config_setting(
     name = "watchos_armv7k",
-    values = {
-        "apple_platform_type": "watchos",
-        "cpu": "watchos_armv7k",
-    },
+    constraint_values = [
+        "@platforms//os:watchos",
+        "@platforms//cpu:armv7k",
+    ],
 )
 
 config_setting(
     name = "watchos_arm64_32",
-    values = {
-        "apple_platform_type": "watchos",
-        "cpu": "watchos_arm64_32",
-    },
+    constraint_values = [
+        "@platforms//os:watchos",
+        "@platforms//cpu:arm64_32",
+    ],
 )
 
 config_setting(
     name = "watchos_x86",
-    values = {
-        "apple_platform_type": "watchos",
-        "cpu": "watchos_i386",
-    },
+    constraint_values = [
+        "@platforms//os:watchos",
+        "@platforms//cpu:x86_32",
+    ],
 )
 
 config_setting(
     name = "watchos_x86_64",
-    values = {
-        "apple_platform_type": "watchos",
-        "cpu": "watchos_x86_64",
-    },
+    constraint_values = [
+        "@platforms//os:watchos",
+        "@platforms//cpu:x86_64",
+    ],
 )
 
 config_setting(
     name = "tvos_arm64",
-    values = {
-        "apple_platform_type": "tvos",
-        "cpu": "tvos_arm64",
-    },
+    constraint_values = [
+        "@platforms//cpu:arm64",
+        "@platforms//os:tvos",
+    ],
 )
 
 config_setting(
     name = "tvos_x86_64",
-    values = {
-        "apple_platform_type": "tvos",
-        "cpu": "tvos_x86_64",
-    },
+    constraint_values = [
+        "@platforms//cpu:x86_64",
+        "@platforms//os:tvos",
+    ],
 )
 
 config_setting(
     name = "emscripten_wasm",
-    values = {
-        "cpu": "wasm",
-    },
+    constraint_values = [
+        "@platforms//os:emscripten",
+        "@platforms//cpu:wasm32",
+    ],
 )
 
 config_setting(
     name = "emscripten_wasmsimd",
-    values = {
-        "cpu": "wasm",
-        "features": "wasm_simd",
-    },
+    constraint_values = [
+        "@platforms//os:emscripten",
+        "@platforms//cpu:wasm32",
+    ],
+    features = ["simd"],
 )
 
 config_setting(
@@ -476,7 +522,8 @@
 
 config_setting(
     name = "freebsd_x86_64",
-    values = {
-        "cpu": "freebsd",
-    },
+    constraint_values = [
+        "@platforms//cpu:x86_64",
+        "@platforms//os:freebsd",
+    ],
 )
diff --git a/MODULE.bazel b/MODULE.bazel
index 961ad95..8beebb2 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1 +1,7 @@
-module(name = "cpuinfo")
+module(
+    name = "cpuinfo",
+)
+
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/README.md b/README.md
index ec05f53..e574956 100644
--- a/README.md
+++ b/README.md
@@ -155,15 +155,17 @@
 
 This project can be built using [Bazel](https://bazel.build/install). 
 
-You can also use this library as a dependency to your Bazel project. Add to the `WORKSPACE` file:
+You can also use this library as a dependency to your Bazel project. Add to your `MODULE.bazel` file:
 
 ```python
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+# fetch cpuinfo from Bazel Central Registry: https://registry.bazel.build/modules/cpuinfo
+bazel_dep(name = "cpuinfo", version = "0.0.0-20250925-877328f")
 
-git_repository(
-    name = "org_pytorch_cpuinfo",
-    branch = "master",
-    remote = "https://github.com/Vertexwahn/cpuinfo.git",
+# Optional: Override it with some specific commit hash
+git_override(
+    module_name = "cpuinfo",
+    commit = "<replace_with_commit_hash>"
+    remote = "https://github.com/pytorch/cpuinfo.git",
 )
 ```
 
@@ -176,7 +178,7 @@
         # ...
     ],
     deps = [
-        "@org_pytorch_cpuinfo//:cpuinfo",
+        "@cpuinfo",
     ],
 )
 ```
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
deleted file mode 100644
index ea53778..0000000
--- a/WORKSPACE.bazel
+++ /dev/null
@@ -1 +0,0 @@
-workspace(name = "org_pytorch_cpuinfo")
diff --git a/deps/clog/BUILD.bazel b/deps/clog/BUILD.bazel
index 7dc52ea..e31ba2a 100644
--- a/deps/clog/BUILD.bazel
+++ b/deps/clog/BUILD.bazel
@@ -4,7 +4,7 @@
 # Description:
 #   C-style (a-la printf) logging library
 
-package(default_visibility = ["//visibility:public"])
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
 
 licenses(["notice"])
 
@@ -37,22 +37,23 @@
         "//conditions:default": True,
     }),
     strip_include_prefix = "include",
+    visibility = ["//visibility:public"],
 )
 
 config_setting(
     name = "android",
-    values = {"crosstool_top": "//external:android/crosstool"},
+    constraint_values = ["@platforms//os:android"],
 )
 
 config_setting(
     name = "windows",
-    values = {"cpu": "x64_windows"},
+    constraint_values = ["@platforms//os:windows"],
 )
 
 config_setting(
     name = "macos_x86_64",
-    values = {
-        "apple_platform_type": "macos",
-        "cpu": "darwin",
-    },
+    constraint_values = [
+        "@platforms//os:osx",
+        "@platforms//cpu:x86_64",
+    ],
 )