sleepy_penguin.git  about / heads / tags
Linux I/O events for Ruby
blob f11f9c1ea7b66dcf979e44ccd003a11a39365105 1230 bytes (raw)
$ git show HEAD: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
32
33
34
35
36
37
38
 
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')
have_header('sys/sendfile.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('copy_file_range')
have_func('epoll_create1', %w(sys/epoll.h))
have_func('inotify_init1', %w(sys/inotify.h))
have_func('splice', %w(fcntl.h))
have_func('tee', %w(fcntl.h))
have_macro('F_GETPIPE_SZ', %w(fcntl.h))
have_macro('F_SETPIPE_SZ', %w(fcntl.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')
have_func('rb_struct_size')
create_makefile('sleepy_penguin_ext')

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