From 5e22f873ed26092522f9bfc617d729bac88b284f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Wed, 4 Dec 2019 17:16:30 +0900 Subject: decouple internal.h headers Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies). --- internal.h | 102 +++++++++++++++++++++++++++---------------------------------- 1 file changed, 45 insertions(+), 57 deletions(-) (limited to 'internal.h') diff --git a/internal.h b/internal.h index fa6f78b52f..7479c73563 100644 --- a/internal.h +++ b/internal.h @@ -18,17 +18,9 @@ # error not for C++ #endif -#include "ruby/encoding.h" -#include "ruby/io.h" -#include "internal/stdbool.h" -#include "internal/bits.h" - #define LIKELY(x) RB_LIKELY(x) #define UNLIKELY(x) RB_UNLIKELY(x) -#include "internal/compilers.h" -#include "internal/sanitizers.h" - #define numberof(array) ((int)(sizeof(array) / sizeof((array)[0]))) #define roomof(x, y) (((x) + (y) - 1) / (y)) #define type_roomof(x, y) roomof(sizeof(x), sizeof(y)) @@ -36,54 +28,50 @@ /* Prevent compiler from reordering access */ #define ACCESS_ONCE(type,x) (*((volatile type *)&(x))) -#include "internal/serial.h" -#include "internal/static_assert.h" -#include "internal/time.h" -#include "internal/fixnum.h" -#include "internal/bignum.h" -#include "internal/rational.h" -#include "internal/numeric.h" -#include "internal/complex.h" -#include "internal/hash.h" -#include "internal/missing.h" -#include "internal/struct.h" -#include "internal/class.h" -#include "internal/imemo.h" -#include "internal/compar.h" -#include "internal/variable.h" -#include "internal/array.h" -#include "internal/debug.h" -#include "internal/compile.h" -#include "internal/cont.h" -#include "internal/dir.h" -#include "internal/encoding.h" -#include "internal/enum.h" -#include "internal/eval.h" -#include "internal/error.h" -#include "internal/file.h" -#include "internal/gc.h" -#include "internal/io.h" -#include "internal/load.h" -#include "internal/loadpath.h" -#include "internal/math.h" -#include "internal/mjit.h" -#include "internal/object.h" -#include "internal/parse.h" -#include "internal/proc.h" -#include "internal/process.h" -#include "internal/range.h" -#include "internal/re.h" -#include "internal/signal.h" -#include "internal/string.h" -#include "internal/symbol.h" -#include "internal/thread.h" -#include "internal/transcode.h" -#include "internal/enc.h" -#include "internal/util.h" -#include "internal/vm.h" -#include "internal/enumerator.h" -#include "internal/random.h" -#include "internal/inits.h" -#include "internal/warnings.h" +#include "ruby/ruby.h" + +/* Folowing macros were formerlly defined in this header but moved to somewhere + * else. In order to detect them we undef here. */ + +/* internal/error.h */ +#undef Check_Type + +/* internal/class.h */ +#undef RClass +#undef RCLASS_SUPER + +/* internal/gc.h */ +#undef NEWOBJ_OF +#undef RB_NEWOBJ_OF +#undef RB_OBJ_WRITE + +/* internal/hash.h */ +#undef RHASH_IFNONE +#undef RHASH_SIZE + +/* internal/struct.h */ +#undef RSTRUCT_LEN +#undef RSTRUCT_PTR +#undef RSTRUCT_SET +#undef RSTRUCT_GET + +/* Also, we keep the following macros here. They are expected to be + * overridden in each headers. */ + +/* internal/array.h */ +#define rb_ary_new_from_args(...) rb_nonexistent_symbol(__VA_ARGS__) + +/* internal/io.h */ +#define rb_io_fptr_finalize(...) rb_nonexistent_symbol(__VA_ARGS__) + +/* internal/string.h */ +#define rb_fstring_cstr(...) rb_nonexistent_symbol(__VA_ARGS__) + +/* internal/symbol.h */ +#define rb_sym_intern_ascii_cstr(...) rb_nonexistent_symbol(__VA_ARGS__) + +/* internal/vm.h */ +#define rb_funcallv(...) rb_nonexistent_symbol(__VA_ARGS__) +#define rb_method_basic_definition_p(...) rb_nonexistent_symbol(__VA_ARGS__) #endif /* RUBY_INTERNAL_H */ -- cgit v1.2.1