summaryrefslogtreecommitdiff
path: root/ext/json/generator/extconf.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ext/json/generator/extconf.rb')
-rw-r--r--ext/json/generator/extconf.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/json/generator/extconf.rb b/ext/json/generator/extconf.rb
new file mode 100644
index 0000000000..33af03ea30
--- /dev/null
+++ b/ext/json/generator/extconf.rb
@@ -0,0 +1,19 @@
+require 'mkmf'
+
+if RUBY_ENGINE == 'truffleruby'
+ # The pure-Ruby generator is faster on TruffleRuby, so skip compiling the generator extension
+ File.write('Makefile', dummy_makefile("").join)
+else
+ append_cflags("-std=c99")
+ have_const("RUBY_TYPED_EMBEDDABLE", "ruby.h") # RUBY_VERSION >= 3.3
+ have_func("ruby_xfree_sized", "ruby.h") # RUBY_VERSION >= 4.1
+
+ $defs << "-DJSON_GENERATOR"
+ $defs << "-DJSON_DEBUG" if ENV.fetch("JSON_DEBUG", "0") != "0"
+
+ if enable_config('generator-use-simd', default=!ENV["JSON_DISABLE_SIMD"])
+ load __dir__ + "/../simd/conf.rb"
+ end
+
+ create_makefile 'json/ext/generator'
+end