sleepy_penguin.git  about / heads / tags
Linux I/O events for Ruby
blob eda7fcddb85f3cf47ce20af09dd310479c85e179 1000 bytes (raw)
$ git show v3.4.1:ext/sleepy_penguin/extconf.rb	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
require 'mkmf'
have_header('sys/epoll.h')
dir_config('kqueue')
if have_header('sys/event.h')
  have_library('kqueue')
end
have_header('sys/mount.h')
have_header('sys/eventfd.h')

# it's impossible to use signalfd reliably with Ruby since Ruby currently
# manages # (and overrides) all signal handling
# have_header('sys/signalfd.h')

have_header('sys/timerfd.h')
have_header('sys/inotify.h')
have_header('ruby/io.h') and have_struct_member('rb_io_t', 'fd', 'ruby/io.h')
unless have_macro('CLOCK_MONOTONIC', 'time.h')
  have_func('CLOCK_MONOTONIC', 'time.h')
end
have_type('clockid_t', 'time.h')
have_func('clock_gettime', 'time.h')
have_func('epoll_create1', %w(sys/epoll.h))
have_func('inotify_init1', %w(sys/inotify.h))
have_func('rb_thread_call_without_gvl')
have_func('rb_thread_blocking_region')
have_func('rb_thread_io_blocking_region')
have_func('rb_thread_fd_close')
have_func('rb_update_max_fd')
have_func('rb_fd_fix_cloexec')
have_func('rb_io_get_io')
create_makefile('sleepy_penguin_ext')

git clone https://yhbt.net/sleepy_penguin.git