summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.mk18
-rw-r--r--include/ruby/3/anyargs.h1
-rw-r--r--include/ruby/3/arithmetic/int.h1
-rw-r--r--include/ruby/3/assume.h1
-rw-r--r--include/ruby/3/attr/alloc_size.h1
-rw-r--r--include/ruby/3/attr/artificial.h1
-rw-r--r--include/ruby/3/attr/cold.h1
-rw-r--r--include/ruby/3/attr/const.h2
-rw-r--r--include/ruby/3/attr/constexpr.h1
-rw-r--r--include/ruby/3/attr/deprecated.h2
-rw-r--r--include/ruby/3/attr/diagnose_if.h2
-rw-r--r--include/ruby/3/attr/enum_extensibility.h1
-rw-r--r--include/ruby/3/attr/error.h1
-rw-r--r--include/ruby/3/attr/flag_enum.h1
-rw-r--r--include/ruby/3/attr/forceinline.h2
-rw-r--r--include/ruby/3/attr/format.h1
-rw-r--r--include/ruby/3/attr/maybe_unused.h1
-rw-r--r--include/ruby/3/attr/nodiscard.h1
-rw-r--r--include/ruby/3/attr/noexcept.h1
-rw-r--r--include/ruby/3/attr/noinline.h1
-rw-r--r--include/ruby/3/attr/nonnull.h1
-rw-r--r--include/ruby/3/attr/noreturn.h2
-rw-r--r--include/ruby/3/attr/pure.h2
-rw-r--r--include/ruby/3/attr/restrict.h3
-rw-r--r--include/ruby/3/attr/returns_nonnull.h1
-rw-r--r--include/ruby/3/attr/warning.h1
-rw-r--r--include/ruby/3/attr/weakref.h1
-rw-r--r--include/ruby/3/cast.h3
-rw-r--r--include/ruby/3/config.h4
-rw-r--r--include/ruby/3/core/rdata.h1
-rw-r--r--include/ruby/3/has/attribute.h2
-rw-r--r--include/ruby/3/has/builtin.h2
-rw-r--r--include/ruby/3/has/cpp_attribute.h2
-rw-r--r--include/ruby/3/has/declspec_attribute.h2
-rw-r--r--include/ruby/3/static_assert.h1
-rw-r--r--include/ruby/3/stdalign.h2
-rw-r--r--include/ruby/3/token_paste.h3
-rw-r--r--include/ruby/3/warning_push.h1
-rw-r--r--include/ruby/backward/2/gcc_version_since.h1
-rw-r--r--include/ruby/backward/2/long_long.h2
40 files changed, 57 insertions, 21 deletions
diff --git a/common.mk b/common.mk
index 4b9e029a5a..edfe11062c 100644
--- a/common.mk
+++ b/common.mk
@@ -3878,6 +3878,7 @@ dir.$(OBJEXT): {$(VPATH)}3/variable.h
dir.$(OBJEXT): {$(VPATH)}3/warning_push.h
dir.$(OBJEXT): {$(VPATH)}3/xmalloc.h
dir.$(OBJEXT): {$(VPATH)}assert.h
+dir.$(OBJEXT): {$(VPATH)}builtin.h
dir.$(OBJEXT): {$(VPATH)}backward/2/assume.h
dir.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
dir.$(OBJEXT): {$(VPATH)}backward/2/bool.h
@@ -3890,7 +3891,6 @@ dir.$(OBJEXT): {$(VPATH)}backward/2/r_cast.h
dir.$(OBJEXT): {$(VPATH)}backward/2/rmodule.h
dir.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
dir.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-dir.$(OBJEXT): {$(VPATH)}builtin.h
dir.$(OBJEXT): {$(VPATH)}config.h
dir.$(OBJEXT): {$(VPATH)}defines.h
dir.$(OBJEXT): {$(VPATH)}dir.c
@@ -5416,10 +5416,6 @@ explicit_bzero.$(OBJEXT): {$(VPATH)}3/compiler_is/sunpro.h
explicit_bzero.$(OBJEXT): {$(VPATH)}3/compiler_since.h
explicit_bzero.$(OBJEXT): {$(VPATH)}3/config.h
explicit_bzero.$(OBJEXT): {$(VPATH)}3/dllexport.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}3/has/attribute.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}3/has/warning.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}3/token_paste.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}3/warning_push.h
explicit_bzero.$(OBJEXT): {$(VPATH)}config.h
explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c
explicit_bzero.$(OBJEXT): {$(VPATH)}missing.h
@@ -11782,10 +11778,6 @@ ruby-runner.$(OBJEXT): {$(VPATH)}3/compiler_is/msvc.h
ruby-runner.$(OBJEXT): {$(VPATH)}3/compiler_is/sunpro.h
ruby-runner.$(OBJEXT): {$(VPATH)}3/compiler_since.h
ruby-runner.$(OBJEXT): {$(VPATH)}3/config.h
-ruby-runner.$(OBJEXT): {$(VPATH)}3/has/attribute.h
-ruby-runner.$(OBJEXT): {$(VPATH)}3/has/warning.h
-ruby-runner.$(OBJEXT): {$(VPATH)}3/token_paste.h
-ruby-runner.$(OBJEXT): {$(VPATH)}3/warning_push.h
ruby-runner.$(OBJEXT): {$(VPATH)}config.h
ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.c
ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.h
@@ -13089,10 +13081,6 @@ strlcat.$(OBJEXT): {$(VPATH)}3/compiler_is/sunpro.h
strlcat.$(OBJEXT): {$(VPATH)}3/compiler_since.h
strlcat.$(OBJEXT): {$(VPATH)}3/config.h
strlcat.$(OBJEXT): {$(VPATH)}3/dllexport.h
-strlcat.$(OBJEXT): {$(VPATH)}3/has/attribute.h
-strlcat.$(OBJEXT): {$(VPATH)}3/has/warning.h
-strlcat.$(OBJEXT): {$(VPATH)}3/token_paste.h
-strlcat.$(OBJEXT): {$(VPATH)}3/warning_push.h
strlcat.$(OBJEXT): {$(VPATH)}config.h
strlcat.$(OBJEXT): {$(VPATH)}missing.h
strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
@@ -13106,10 +13094,6 @@ strlcpy.$(OBJEXT): {$(VPATH)}3/compiler_is/sunpro.h
strlcpy.$(OBJEXT): {$(VPATH)}3/compiler_since.h
strlcpy.$(OBJEXT): {$(VPATH)}3/config.h
strlcpy.$(OBJEXT): {$(VPATH)}3/dllexport.h
-strlcpy.$(OBJEXT): {$(VPATH)}3/has/attribute.h
-strlcpy.$(OBJEXT): {$(VPATH)}3/has/warning.h
-strlcpy.$(OBJEXT): {$(VPATH)}3/token_paste.h
-strlcpy.$(OBJEXT): {$(VPATH)}3/warning_push.h
strlcpy.$(OBJEXT): {$(VPATH)}config.h
strlcpy.$(OBJEXT): {$(VPATH)}missing.h
strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
diff --git a/include/ruby/3/anyargs.h b/include/ruby/3/anyargs.h
index 7eff1b2cc9..d85a49b8a1 100644
--- a/include/ruby/3/anyargs.h
+++ b/include/ruby/3/anyargs.h
@@ -72,6 +72,7 @@
#include "ruby/3/attr/weakref.h"
#include "ruby/3/cast.h"
#include "ruby/3/config.h"
+#include "ruby/3/has/attribute.h"
#include "ruby/3/intern/class.h"
#include "ruby/3/intern/vm.h"
#include "ruby/3/method.h"
diff --git a/include/ruby/3/arithmetic/int.h b/include/ruby/3/arithmetic/int.h
index 8c2e9f2bd8..2ebf8081f9 100644
--- a/include/ruby/3/arithmetic/int.h
+++ b/include/ruby/3/arithmetic/int.h
@@ -31,6 +31,7 @@
#include "ruby/3/dllexport.h"
#include "ruby/3/special_consts.h"
#include "ruby/3/value.h"
+#include "ruby/3/warning_push.h"
#include "ruby/assert.h"
#define RB_INT2NUM rb_int2num_inline
diff --git a/include/ruby/3/assume.h b/include/ruby/3/assume.h
index 13928db934..9664f5606c 100644
--- a/include/ruby/3/assume.h
+++ b/include/ruby/3/assume.h
@@ -27,6 +27,7 @@
*/
#include "ruby/3/config.h"
#include "ruby/3/cast.h"
+#include "ruby/3/compiler_since.h"
#include "ruby/3/has/builtin.h"
#include "ruby/3/warning_push.h"
diff --git a/include/ruby/3/attr/alloc_size.h b/include/ruby/3/attr/alloc_size.h
index 251a19f7f3..5d4ece08a1 100644
--- a/include/ruby/3/attr/alloc_size.h
+++ b/include/ruby/3/attr/alloc_size.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_ALLOC_SIZE.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((alloc_size))` */
#if RUBY3_HAS_ATTRIBUTE(alloc_size)
diff --git a/include/ruby/3/attr/artificial.h b/include/ruby/3/attr/artificial.h
index a9f305daab..f5450e3467 100644
--- a/include/ruby/3/attr/artificial.h
+++ b/include/ruby/3/attr/artificial.h
@@ -34,6 +34,7 @@
* case it gets vital to know where the inlining happened in the callee.
* See also https://stackoverflow.com/a/21936099
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((artificial))` */
#if RUBY3_HAS_ATTRIBUTE(artificial)
diff --git a/include/ruby/3/attr/cold.h b/include/ruby/3/attr/cold.h
index 5b5263feb0..3822f0a975 100644
--- a/include/ruby/3/attr/cold.h
+++ b/include/ruby/3/attr/cold.h
@@ -21,6 +21,7 @@
* @brief Defines #RUBY3_ATTR_COLD.
*/
#include "ruby/3/compiler_is.h"
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((cold))` */
#if RUBY3_COMPILER_IS(SunPro)
diff --git a/include/ruby/3/attr/const.h b/include/ruby/3/attr/const.h
index d97495c647..6c36e9aab2 100644
--- a/include/ruby/3/attr/const.h
+++ b/include/ruby/3/attr/const.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_CONST.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/declspec_attribute.h"
/** Wraps (or simulates) `__attribute__((const))` */
diff --git a/include/ruby/3/attr/constexpr.h b/include/ruby/3/attr/constexpr.h
index 582d9fd000..576ec7fb8f 100644
--- a/include/ruby/3/attr/constexpr.h
+++ b/include/ruby/3/attr/constexpr.h
@@ -22,6 +22,7 @@
*/
#include "ruby/3/has/feature.h"
#include "ruby/3/compiler_is.h"
+#include "ruby/3/token_paste.h"
/** @cond INTERNAL_MACRO */
#if ! defined(__cplusplus)
diff --git a/include/ruby/3/attr/deprecated.h b/include/ruby/3/attr/deprecated.h
index 9f939a5e8c..5c3f508ffc 100644
--- a/include/ruby/3/attr/deprecated.h
+++ b/include/ruby/3/attr/deprecated.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_DEPRECATED.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/c_attribute.h"
#include "ruby/3/has/cpp_attribute.h"
#include "ruby/3/has/declspec_attribute.h"
diff --git a/include/ruby/3/attr/diagnose_if.h b/include/ruby/3/attr/diagnose_if.h
index 488c3ec7ad..2f09abc94d 100644
--- a/include/ruby/3/attr/diagnose_if.h
+++ b/include/ruby/3/attr/diagnose_if.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_DIAGNOSE_IF.
*/
+#include "ruby/3/has/attribute.h"
+#include "ruby/3/warning_push.h"
/** Wraps (or simulates) `__attribute__((diagnose_if))` */
#if RUBY3_COMPILER_BEFORE(Clang, 5, 0, 0)
diff --git a/include/ruby/3/attr/enum_extensibility.h b/include/ruby/3/attr/enum_extensibility.h
index a56d1a54b8..15a5b063f2 100644
--- a/include/ruby/3/attr/enum_extensibility.h
+++ b/include/ruby/3/attr/enum_extensibility.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief #RUBY3_ATTR_ENUM_EXTENSIBILITY.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((enum_extensibility))` */
#if RUBY3_HAS_ATTRIBUTE(enum_extensibility)
diff --git a/include/ruby/3/attr/error.h b/include/ruby/3/attr/error.h
index ee5e3290ae..53628259a0 100644
--- a/include/ruby/3/attr/error.h
+++ b/include/ruby/3/attr/error.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_ERROR.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((error))` */
#if RUBY3_HAS_ATTRIBUTE(error)
diff --git a/include/ruby/3/attr/flag_enum.h b/include/ruby/3/attr/flag_enum.h
index 7165347bd7..2081c9c3ed 100644
--- a/include/ruby/3/attr/flag_enum.h
+++ b/include/ruby/3/attr/flag_enum.h
@@ -21,6 +21,7 @@
* @brief Defines #RUBY3_ATTR_FLAG_ENUM.
* @see https://clang.llvm.org/docs/AttributeReference.html#flag_enum
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((flag_enum)` */
#if RUBY3_HAS_ATTRIBUTE(flag_enum)
diff --git a/include/ruby/3/attr/forceinline.h b/include/ruby/3/attr/forceinline.h
index 3c865e9c4b..bd622eddce 100644
--- a/include/ruby/3/attr/forceinline.h
+++ b/include/ruby/3/attr/forceinline.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_FORCEINLINE.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/attribute.h"
/**
* Wraps (or simulates) `__forceinline`. MSVC complains on declarations like
diff --git a/include/ruby/3/attr/format.h b/include/ruby/3/attr/format.h
index c234034afe..2624179bda 100644
--- a/include/ruby/3/attr/format.h
+++ b/include/ruby/3/attr/format.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_FORMAT.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((format))` */
#if RUBY3_HAS_ATTRIBUTE(format)
diff --git a/include/ruby/3/attr/maybe_unused.h b/include/ruby/3/attr/maybe_unused.h
index f814804e9f..71904dffa4 100644
--- a/include/ruby/3/attr/maybe_unused.h
+++ b/include/ruby/3/attr/maybe_unused.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_MAYBE_UNUSED.
*/
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/c_attribute.h"
#include "ruby/3/has/cpp_attribute.h"
diff --git a/include/ruby/3/attr/nodiscard.h b/include/ruby/3/attr/nodiscard.h
index 0142d22bd4..6168bb9002 100644
--- a/include/ruby/3/attr/nodiscard.h
+++ b/include/ruby/3/attr/nodiscard.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_NODISCARD.
*/
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/c_attribute.h"
#include "ruby/3/has/cpp_attribute.h"
diff --git a/include/ruby/3/attr/noexcept.h b/include/ruby/3/attr/noexcept.h
index a99ca0b35c..aff3b2cb1b 100644
--- a/include/ruby/3/attr/noexcept.h
+++ b/include/ruby/3/attr/noexcept.h
@@ -61,6 +61,7 @@
* Itanium C++ ABI has zero-cost exception handling), but does impact on
* generated binary size. This is bad.
*/
+#include "ruby/3/compiler_since.h"
#include "ruby/3/has/feature.h"
/** Wraps (or simulates) C++11 `noexcept` */
diff --git a/include/ruby/3/attr/noinline.h b/include/ruby/3/attr/noinline.h
index e5eca8eaef..4437f8a32f 100644
--- a/include/ruby/3/attr/noinline.h
+++ b/include/ruby/3/attr/noinline.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_NOINLINE.
*/
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/declspec_attribute.h"
/** Wraps (or simulates) `__declspec(noinline)` */
diff --git a/include/ruby/3/attr/nonnull.h b/include/ruby/3/attr/nonnull.h
index 4c2f3f1ca0..01b5820c1b 100644
--- a/include/ruby/3/attr/nonnull.h
+++ b/include/ruby/3/attr/nonnull.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_NONNULL.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((nonnull))` */
#if RUBY3_HAS_ATTRIBUTE(nonnull)
diff --git a/include/ruby/3/attr/noreturn.h b/include/ruby/3/attr/noreturn.h
index 2b7051428d..999a76b8e5 100644
--- a/include/ruby/3/attr/noreturn.h
+++ b/include/ruby/3/attr/noreturn.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_NORETURN.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/cpp_attribute.h"
#include "ruby/3/has/declspec_attribute.h"
diff --git a/include/ruby/3/attr/pure.h b/include/ruby/3/attr/pure.h
index 038fd2abdb..b9ab3622ca 100644
--- a/include/ruby/3/attr/pure.h
+++ b/include/ruby/3/attr/pure.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_PURE.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/attribute.h"
#include "ruby/assert.h"
/** Wraps (or simulates) `__attribute__((pure))` */
diff --git a/include/ruby/3/attr/restrict.h b/include/ruby/3/attr/restrict.h
index f6d7936b3a..95c85f45ce 100644
--- a/include/ruby/3/attr/restrict.h
+++ b/include/ruby/3/attr/restrict.h
@@ -20,6 +20,9 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_RESTRICT.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/attribute.h"
+#include "ruby/3/token_paste.h"
/* :FIXME: config.h includes conflicting `#define restrict`. MSVC can be
* detected using `RUBY3_COMPILER_SINCE()`, but Clang & family cannot use
diff --git a/include/ruby/3/attr/returns_nonnull.h b/include/ruby/3/attr/returns_nonnull.h
index eb8db1d045..786e7e72ee 100644
--- a/include/ruby/3/attr/returns_nonnull.h
+++ b/include/ruby/3/attr/returns_nonnull.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_RETURNS_NONNULL.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((returns_nonnull))` */
#if defined(_Ret_nonnull_)
diff --git a/include/ruby/3/attr/warning.h b/include/ruby/3/attr/warning.h
index 0c64e6a834..a83537e209 100644
--- a/include/ruby/3/attr/warning.h
+++ b/include/ruby/3/attr/warning.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_WARNING.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((warning))` */
#if RUBY3_HAS_ATTRIBUTE(warning)
diff --git a/include/ruby/3/attr/weakref.h b/include/ruby/3/attr/weakref.h
index a540266219..e9c38f92e7 100644
--- a/include/ruby/3/attr/weakref.h
+++ b/include/ruby/3/attr/weakref.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_ATTR_WEAKREF.
*/
+#include "ruby/3/has/attribute.h"
/** Wraps (or simulates) `__attribute__((weakref))` */
#if RUBY3_HAS_ATTRIBUTE(weakref)
diff --git a/include/ruby/3/cast.h b/include/ruby/3/cast.h
index 7f0dce9010..254e10fee3 100644
--- a/include/ruby/3/cast.h
+++ b/include/ruby/3/cast.h
@@ -25,6 +25,9 @@
* public headers. They could be used from C++, and C-style casts could issue
* warnings. Ruby internals are pure C so they should not bother.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/warning.h"
+#include "ruby/3/warning_push.h"
#if ! defined(__cplusplus)
# define RUBY3_CAST(expr) (expr)
diff --git a/include/ruby/3/config.h b/include/ruby/3/config.h
index 158e8635cb..32d50bf0d6 100644
--- a/include/ruby/3/config.h
+++ b/include/ruby/3/config.h
@@ -27,10 +27,6 @@
#endif
#include "ruby/3/compiler_since.h"
-#include "ruby/3/has/warning.h"
-#include "ruby/3/has/attribute.h"
-#include "ruby/3/warning_push.h"
-#include "ruby/3/token_paste.h"
#if defined(__cplusplus)
#/* __builtin_choose_expr and __builtin_types_compatible aren't available
diff --git a/include/ruby/3/core/rdata.h b/include/ruby/3/core/rdata.h
index 6df6ea9e6d..383785af4c 100644
--- a/include/ruby/3/core/rdata.h
+++ b/include/ruby/3/core/rdata.h
@@ -32,6 +32,7 @@
#include "ruby/3/core/rbasic.h"
#include "ruby/3/dllexport.h"
#include "ruby/3/fl_type.h"
+#include "ruby/3/token_paste.h"
#include "ruby/3/value.h"
#include "ruby/3/value_type.h"
#include "ruby/defines.h"
diff --git a/include/ruby/3/has/attribute.h b/include/ruby/3/has/attribute.h
index c8ad7da9cf..14c4ff5596 100644
--- a/include/ruby/3/has/attribute.h
+++ b/include/ruby/3/has/attribute.h
@@ -21,6 +21,8 @@
* @brief Defines #RUBY3_HAS_ATTRIBUTE.
*/
#include "ruby/3/config.h"
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/token_paste.h"
/** Wraps (or simulates) `__has_attribute`. */
#if defined(__has_attribute)
diff --git a/include/ruby/3/has/builtin.h b/include/ruby/3/has/builtin.h
index f1524061ae..92a528d022 100644
--- a/include/ruby/3/has/builtin.h
+++ b/include/ruby/3/has/builtin.h
@@ -21,6 +21,8 @@
* @brief Defines #RUBY3_HAS_BUILTIN.
*/
#include "ruby/3/config.h"
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/token_paste.h"
/** Wraps (or simulates) `__has_builtin`. */
#if defined(__has_builtin) && ! RUBY3_COMPILER_IS(Intel)
diff --git a/include/ruby/3/has/cpp_attribute.h b/include/ruby/3/has/cpp_attribute.h
index 42209c0955..941f7ddca3 100644
--- a/include/ruby/3/has/cpp_attribute.h
+++ b/include/ruby/3/has/cpp_attribute.h
@@ -21,6 +21,8 @@
* @brief Defines #RUBY3_HAS_CPP_ATTRIBUTE.
*/
#include "ruby/3/compiler_is.h"
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/token_paste.h"
/** @cond INTERNAL_MACRO */
#if defined(__has_cpp_attribute)
diff --git a/include/ruby/3/has/declspec_attribute.h b/include/ruby/3/has/declspec_attribute.h
index 4774eb88f2..33bd3cb6ee 100644
--- a/include/ruby/3/has/declspec_attribute.h
+++ b/include/ruby/3/has/declspec_attribute.h
@@ -20,6 +20,8 @@
* extension libraries. They could be written in C++98.
* @brief Defines #RUBY3_HAS_DECLSPEC_ATTRIBUTE.
*/
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/token_paste.h"
/** Wraps (or simulates) `__has_declspec_attribute`. */
#if defined(__has_declspec_attribute)
diff --git a/include/ruby/3/static_assert.h b/include/ruby/3/static_assert.h
index b9c842f3b6..5d0e84c439 100644
--- a/include/ruby/3/static_assert.h
+++ b/include/ruby/3/static_assert.h
@@ -22,6 +22,7 @@
*/
#include <assert.h>
#include "ruby/3/has/extension.h"
+#include "ruby/3/compiler_since.h"
/** @cond INTERNAL_MACRO */
#if defined(__cplusplus) && defined(__cpp_static_assert)
diff --git a/include/ruby/3/stdalign.h b/include/ruby/3/stdalign.h
index ccc68b66df..dab020b735 100644
--- a/include/ruby/3/stdalign.h
+++ b/include/ruby/3/stdalign.h
@@ -27,8 +27,10 @@
#endif
#include "ruby/3/compiler_is.h"
+#include "ruby/3/compiler_since.h"
#include "ruby/3/has/feature.h"
#include "ruby/3/has/extension.h"
+#include "ruby/3/has/attribute.h"
#include "ruby/3/has/declspec_attribute.h"
/**
diff --git a/include/ruby/3/token_paste.h b/include/ruby/3/token_paste.h
index 4e6dbb4834..8c765ef706 100644
--- a/include/ruby/3/token_paste.h
+++ b/include/ruby/3/token_paste.h
@@ -21,6 +21,9 @@
* @brief Defines #RUBY3_TOKEN_PASTE.
*/
#include "ruby/3/config.h"
+#include "ruby/3/compiler_since.h"
+#include "ruby/3/has/warning.h"
+#include "ruby/3/warning_push.h"
/* :TODO: add your compiler here. There are many compilers that can suppress
* warnings via pragmas, but not all of them accept such things inside of `#if`
diff --git a/include/ruby/3/warning_push.h b/include/ruby/3/warning_push.h
index c3384f2d75..2affb3abb1 100644
--- a/include/ruby/3/warning_push.h
+++ b/include/ruby/3/warning_push.h
@@ -44,6 +44,7 @@
* ```
*/
#include "ruby/3/compiler_is.h"
+#include "ruby/3/compiler_since.h"
#if RUBY3_COMPILER_SINCE(MSVC, 12, 0, 0)
# /* Not sure exactly when but it seems VC++ 6.0 is a version with it.*/
diff --git a/include/ruby/backward/2/gcc_version_since.h b/include/ruby/backward/2/gcc_version_since.h
index 553b982147..03f767aedb 100644
--- a/include/ruby/backward/2/gcc_version_since.h
+++ b/include/ruby/backward/2/gcc_version_since.h
@@ -20,6 +20,7 @@
* extension libraries. They could be written in C++98.
* @brief Defines old #GCC_VERSION_SINCE
*/
+#include "ruby/3/compiler_since.h"
#ifndef GCC_VERSION_SINCE
#define GCC_VERSION_SINCE(x, y, z) RUBY3_COMPILER_SINCE(GCC, (x), (y), (z))
diff --git a/include/ruby/backward/2/long_long.h b/include/ruby/backward/2/long_long.h
index 2a9b9e7f40..3b2261b71f 100644
--- a/include/ruby/backward/2/long_long.h
+++ b/include/ruby/backward/2/long_long.h
@@ -26,6 +26,8 @@
* compatibility only.
*/
#include "ruby/3/config.h"
+#include "ruby/3/has/warning.h"
+#include "ruby/3/warning_push.h"
#if RUBY3_HAS_WARNING("-Wc++11-long-long")
# define HAVE_TRUE_LONG_LONG 1