This commit is contained in:
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Released under the MIT License.
|
||||
# Copyright, 2021-2025, by Samuel Williams.
|
||||
# Copyright, 2023, by Math Ieu.
|
||||
|
||||
return if RUBY_DESCRIPTION =~ /jruby/
|
||||
|
||||
require "mkmf"
|
||||
|
||||
gem_name = File.basename(__dir__)
|
||||
extension_name = "IO_Event"
|
||||
|
||||
# dir_config(extension_name)
|
||||
|
||||
$CFLAGS << " -Wall -Wno-unknown-pragmas -std=c99"
|
||||
|
||||
if ENV.key?("RUBY_DEBUG")
|
||||
$stderr.puts "Enabling debug mode..."
|
||||
|
||||
$CFLAGS << " -DRUBY_DEBUG -O0"
|
||||
end
|
||||
|
||||
$srcs = ["io/event/event.c", "io/event/time.c", "io/event/fiber.c", "io/event/profiler.c", "io/event/selector/selector.c"]
|
||||
$VPATH << "$(srcdir)/io/event"
|
||||
$VPATH << "$(srcdir)/io/event/selector"
|
||||
|
||||
have_func("rb_ext_ractor_safe")
|
||||
have_func("&rb_fiber_transfer")
|
||||
|
||||
if have_library("uring") and have_header("liburing.h")
|
||||
# We might want to consider using this in the future:
|
||||
# have_func("io_uring_submit_and_wait_timeout", "liburing.h")
|
||||
|
||||
$srcs << "io/event/selector/uring.c"
|
||||
end
|
||||
|
||||
if have_header("sys/epoll.h")
|
||||
$srcs << "io/event/selector/epoll.c"
|
||||
end
|
||||
|
||||
if have_header("sys/event.h")
|
||||
$srcs << "io/event/selector/kqueue.c"
|
||||
end
|
||||
|
||||
have_header("sys/wait.h")
|
||||
|
||||
have_header("sys/eventfd.h")
|
||||
$srcs << "io/event/interrupt.c"
|
||||
|
||||
have_func("rb_io_descriptor")
|
||||
have_func("&rb_process_status_wait")
|
||||
have_func("rb_fiber_current")
|
||||
have_func("&rb_fiber_raise")
|
||||
have_func("epoll_pwait2")
|
||||
|
||||
have_header("ruby/io/buffer.h")
|
||||
|
||||
if ENV.key?("RUBY_SANITIZE")
|
||||
$stderr.puts "Enabling sanitizers..."
|
||||
|
||||
# Add address and undefined behaviour sanitizers:
|
||||
$CFLAGS << " -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
$LDFLAGS << " -fsanitize=address -fsanitize=undefined"
|
||||
end
|
||||
|
||||
create_header
|
||||
|
||||
# Generate the makefile to compile the native binary into `lib`:
|
||||
create_makefile(extension_name)
|
||||
Reference in New Issue
Block a user