diff options
Diffstat (limited to 'ext/unicorn_http/extconf.rb')
-rw-r--r-- | ext/unicorn_http/extconf.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ext/unicorn_http/extconf.rb b/ext/unicorn_http/extconf.rb index 2fc60fe..d5f81fb 100644 --- a/ext/unicorn_http/extconf.rb +++ b/ext/unicorn_http/extconf.rb @@ -8,4 +8,34 @@ have_func("rb_str_set_len", "ruby.h") or abort 'Ruby 1.9.3+ required' have_func("rb_hash_clear", "ruby.h") # Ruby 2.0+ have_func("gmtime_r", "time.h") +message('checking if String#-@ (str_uminus) dedupes... ') +begin + a = -(%w(t e s t).join) + b = -(%w(t e s t).join) + if a.equal?(b) + $CPPFLAGS += ' -DSTR_UMINUS_DEDUPE=1 ' + message("yes\n") + else + $CPPFLAGS += ' -DSTR_UMINUS_DEDUPE=0 ' + message("no, needs Ruby 2.5+\n") + end +rescue NoMethodError + $CPPFLAGS += ' -DSTR_UMINUS_DEDUPE=0 ' + message("no, String#-@ not available\n") +end + +message('checking if Hash#[]= (rb_hash_aset) dedupes... ') +h = {} +x = {} +r = rand.to_s +h[%W(#{r}).join('')] = :foo +x[%W(#{r}).join('')] = :foo +if x.keys[0].equal?(h.keys[0]) + $CPPFLAGS += ' -DHASH_ASET_DEDUPE=1 ' + message("yes\n") +else + $CPPFLAGS += ' -DHASH_ASET_DEDUPE=0 ' + message("no, needs Ruby 2.6+\n") +end + create_makefile("unicorn_http") |