From 9a8869085cfbae4ffb6b83f5e24a9c877959734d Mon Sep 17 00:00:00 2001 From: Jonathan Ringer Date: Mon, 23 Feb 2026 12:00:07 -0800 Subject: [PATCH 1/3] macOS: avoid -lm on darwin --- tasks/toolchains/gcc.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/toolchains/gcc.rake b/tasks/toolchains/gcc.rake index f370c0abf3..76022740b8 100644 --- a/tasks/toolchains/gcc.rake +++ b/tasks/toolchains/gcc.rake @@ -24,7 +24,7 @@ MRuby::Toolchain.new(:gcc) do |conf, _params| conf.linker do |linker| linker.command = ENV['LD'] || 'gcc' linker.flags = [ENV['LDFLAGS'] || %w()] - linker.libraries = %w(m) + linker.libraries = RUBY_PLATFORM =~ /darwin/ ? %w() : %w(m) linker.library_paths = [] linker.option_library = '-l%s' linker.option_library_path = '-L%s' From ad8eb41e668043b5c8ef56bbd864460714acad70 Mon Sep 17 00:00:00 2001 From: Jonathan Ringer Date: Mon, 23 Feb 2026 12:12:51 -0800 Subject: [PATCH 2/3] Detect clang vs gcc --- build_config.rb | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/build_config.rb b/build_config.rb index 8293092abe..58ee38b57d 100644 --- a/build_config.rb +++ b/build_config.rb @@ -1,12 +1,18 @@ -MRuby::Build.new do |conf| - # load specific toolchain settings - - # Gets set by the VS command prompts. +def detect_toolchain if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] - toolchain :visualcpp + :visualcpp else - toolchain :gcc + cc = ENV['CC'] || 'cc' + if `#{cc} --version 2>&1` =~ /clang/i + :clang + else + :gcc + end end +end + +MRuby::Build.new do |conf| + toolchain detect_toolchain enable_debug @@ -85,14 +91,7 @@ end MRuby::Build.new('host-debug') do |conf| - # load specific toolchain settings - - # Gets set by the VS command prompts. - if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] - toolchain :visualcpp - else - toolchain :gcc - end + toolchain detect_toolchain enable_debug @@ -110,12 +109,7 @@ end MRuby::Build.new('test') do |conf| - # Gets set by the VS command prompts. - if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] - toolchain :visualcpp - else - toolchain :gcc - end + toolchain detect_toolchain enable_debug conf.enable_bintest From 3ef8a6ab571c4fca9c382da29c6e706bc0e23035 Mon Sep 17 00:00:00 2001 From: Jonathan Ringer Date: Thu, 26 Feb 2026 16:40:18 -0800 Subject: [PATCH 3/3] Update keywords for gperf 3.1+ --- mrbgems/mruby-compiler/core/keywords | 4 ++-- mrbgems/mruby-compiler/core/lex.def | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mrbgems/mruby-compiler/core/keywords b/mrbgems/mruby-compiler/core/keywords index 9cb86608ce..1f7e12dc5c 100644 --- a/mrbgems/mruby-compiler/core/keywords +++ b/mrbgems/mruby-compiler/core/keywords @@ -1,7 +1,7 @@ %{ struct kwtable {const char *name; int id[2]; enum mrb_lex_state_enum state;}; -const struct kwtable *mrb_reserved_word(const char *, unsigned int); -static const struct kwtable *reserved_word(const char *, unsigned int); +const struct kwtable *mrb_reserved_word(const char *, size_t); +static const struct kwtable *reserved_word(const char *, size_t); #define mrb_reserved_word(str, len) reserved_word(str, len) %} diff --git a/mrbgems/mruby-compiler/core/lex.def b/mrbgems/mruby-compiler/core/lex.def index 58e3029657..a22fb4ca21 100644 --- a/mrbgems/mruby-compiler/core/lex.def +++ b/mrbgems/mruby-compiler/core/lex.def @@ -31,8 +31,8 @@ #line 1 "/home/matz/work/mruby/mrbgems/mruby-compiler/core/keywords" struct kwtable {const char *name; int id[2]; enum mrb_lex_state_enum state;}; -const struct kwtable *mrb_reserved_word(const char *, unsigned int); -static const struct kwtable *reserved_word(const char *, unsigned int); +const struct kwtable *mrb_reserved_word(const char *, size_t); +static const struct kwtable *reserved_word(const char *, size_t); #define mrb_reserved_word(str, len) reserved_word(str, len) #line 8 "/home/matz/work/mruby/mrbgems/mruby-compiler/core/keywords" struct kwtable; @@ -52,7 +52,7 @@ inline #endif #endif static unsigned int -hash (register const char *str, register unsigned int len) +hash (register const char *str, register size_t len) { static const unsigned char asso_values[] = { @@ -105,7 +105,7 @@ __attribute__ ((__gnu_inline__)) #endif #endif const struct kwtable * -mrb_reserved_word (register const char *str, register unsigned int len) +mrb_reserved_word (register const char *str, register size_t len) { static const struct kwtable wordlist[] = {