[libc][assert] define __STDC_VERSION_ASSERT_H__ (#87592)

Fixes #87561

GitOrigin-RevId: 11bd19a7a25b291af61b6c06cb249b567c116d0e
diff --git a/include/assert.h.def b/include/assert.h.def
index e006133..15077e5 100644
--- a/include/assert.h.def
+++ b/include/assert.h.def
@@ -7,6 +7,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "__llvm-libc-common.h"
+#include "llvm-libc-macros/assert-macros.h"
 
 // This file may be usefully included multiple times to change assert()'s
 // definition based on NDEBUG.
diff --git a/include/llvm-libc-macros/CMakeLists.txt b/include/llvm-libc-macros/CMakeLists.txt
index 382cb8e..68ba110 100644
--- a/include/llvm-libc-macros/CMakeLists.txt
+++ b/include/llvm-libc-macros/CMakeLists.txt
@@ -32,6 +32,12 @@
 endif()
 
 add_macro_header(
+  assert_macros
+  HDR
+    assert-macros.h
+)
+
+add_macro_header(
   generic_error_number_macros
   HDR
     generic-error-number-macros.h
diff --git a/include/llvm-libc-macros/assert-macros.h b/include/llvm-libc-macros/assert-macros.h
new file mode 100644
index 0000000..44e1454
--- /dev/null
+++ b/include/llvm-libc-macros/assert-macros.h
@@ -0,0 +1,14 @@
+//===-- Definition of macros to be used with assert functions -------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef __LLVM_LIBC_MACROS_ASSERT_MACROS_H
+#define __LLVM_LIBC_MACROS_ASSERT_MACROS_H
+
+#define __STDC_VERSION_ASSERT_H__ 202311L
+
+#endif // __LLVM_LIBC_MACROS_ASSERT_MACROS_H
diff --git a/test/include/CMakeLists.txt b/test/include/CMakeLists.txt
index 8d8dff5..03c3185 100644
--- a/test/include/CMakeLists.txt
+++ b/test/include/CMakeLists.txt
@@ -1,6 +1,16 @@
 add_custom_target(libc_include_tests)
 
 add_libc_test(
+  assert_test
+  SUITE
+    libc_include_tests
+  SRCS
+    assert_test.cpp
+  DEPENDS
+    libc.include.llvm-libc-macros.assert_macros
+)
+
+add_libc_test(
   sys_queue_test
   SUITE
     libc_include_tests
diff --git a/test/include/assert_test.cpp b/test/include/assert_test.cpp
new file mode 100644
index 0000000..78709bb
--- /dev/null
+++ b/test/include/assert_test.cpp
@@ -0,0 +1,15 @@
+//===-- Unittests for assert ----------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDSList-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "include/llvm-libc-macros/assert-macros.h"
+#include "test/UnitTest/Test.h"
+
+TEST(LlvmLibcAssertTest, VersionMacro) {
+  // 7.2p3 an integer constant expression with a value equivalent to 202311L.
+  EXPECT_EQ(__STDC_VERSION_ASSERT_H__, 202311L);
+}