fmt@12.0.0 (#6014)

diff --git a/modules/fmt/12.0.0/MODULE.bazel b/modules/fmt/12.0.0/MODULE.bazel
new file mode 100644
index 0000000..cd8db9e
--- /dev/null
+++ b/modules/fmt/12.0.0/MODULE.bazel
@@ -0,0 +1,9 @@
+module(
+    name = "fmt",
+    version = "12.0.0",
+    bazel_compatibility = [">=7.2.1"],
+    compatibility_level = 10,
+)
+
+bazel_dep(name = "rules_cc", version = "0.2.8")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/modules/fmt/12.0.0/overlay/BUILD.bazel b/modules/fmt/12.0.0/overlay/BUILD.bazel
new file mode 100644
index 0000000..a15b41f
--- /dev/null
+++ b/modules/fmt/12.0.0/overlay/BUILD.bazel
@@ -0,0 +1,35 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_license//rules:license.bzl", "license")
+
+package(
+    default_applicable_licenses = [":license"],
+)
+
+exports_files([
+    "LICENSE",
+])
+
+license(
+    name = "license",
+    license_kinds = ["@rules_license//licenses/spdx:MIT"],
+    license_text = "LICENSE",
+)
+
+cc_library(
+    name = "fmt",
+    srcs = [
+        #"src/fmt.cc", # No C++ module support, yet in Bazel (https://github.com/bazelbuild/bazel/pull/19940)
+        "src/format.cc",
+        "src/os.cc",
+    ],
+    hdrs = glob([
+        "include/fmt/*.h",
+    ]),
+    copts = select({
+        "@rules_cc//cc/compiler:msvc-cl": ["-utf-8"],
+        "//conditions:default": [],
+    }),
+    includes = ["include"],
+    strip_include_prefix = "include",  # workaround: only needed on some macOS systems (see https://github.com/bazelbuild/bazel-central-registry/issues/1537)
+    visibility = ["//visibility:public"],
+)
diff --git a/modules/fmt/12.0.0/overlay/MODULE.bazel b/modules/fmt/12.0.0/overlay/MODULE.bazel
new file mode 120000
index 0000000..9b599e3
--- /dev/null
+++ b/modules/fmt/12.0.0/overlay/MODULE.bazel
@@ -0,0 +1 @@
+../MODULE.bazel
\ No newline at end of file
diff --git a/modules/fmt/12.0.0/presubmit.yml b/modules/fmt/12.0.0/presubmit.yml
new file mode 100644
index 0000000..9bdc856
--- /dev/null
+++ b/modules/fmt/12.0.0/presubmit.yml
@@ -0,0 +1,28 @@
+matrix:
+  unix_platform:
+    - debian10
+    - debian11
+    - macos
+    - macos_arm64
+    - ubuntu2004
+    - ubuntu2004_arm64
+    - ubuntu2204
+    - ubuntu2404
+  windows_test:
+    - windows
+  bazel: [7.x, 8.x, rolling]
+tasks:
+  unix_test:
+    name: Verify build targets
+    platform: ${{ unix_platform }}
+    bazel: ${{ bazel }}
+    build_targets:
+      - '@fmt//:fmt'
+  windows_test:
+    name: Verify build targets
+    platform: ${{ windows_test }}
+    bazel: ${{ bazel }}
+    build_flags:
+      - --cxxopt=/utf-8
+    build_targets:
+      - '@fmt//:fmt'
diff --git a/modules/fmt/12.0.0/source.json b/modules/fmt/12.0.0/source.json
new file mode 100644
index 0000000..25173ba
--- /dev/null
+++ b/modules/fmt/12.0.0/source.json
@@ -0,0 +1,10 @@
+{
+    "url": "https://github.com/fmtlib/fmt/releases/download/12.0.0/fmt-12.0.0.zip",
+    "integrity": "sha256-HDIpMgNEl5K/jpTH9mmcZDiH6Cby1mqAhptPJ5+wfSU=",
+    "strip_prefix": "fmt-12.0.0",
+    "overlay": {
+        "BUILD.bazel": "sha256-+MjDLu/yMtLIecd3q7G4ccJVO3QOiNAMWpQJucAHd8o=",
+        "MODULE.bazel": "sha256-Uwi0QgD5ffFyF8BTNnU3xtRp/kamGrDfwQOMBM6x1zU="
+    },
+    "patch_strip": 1
+}
diff --git a/modules/fmt/metadata.json b/modules/fmt/metadata.json
index b736120..8e14e6c 100644
--- a/modules/fmt/metadata.json
+++ b/modules/fmt/metadata.json
@@ -34,7 +34,8 @@
         "11.1.3",
         "11.1.4",
         "11.2.0",
-        "11.2.0.bcr.1"
+        "11.2.0.bcr.1",
+        "12.0.0"
     ],
     "yanked_versions": {}
 }