2015-12-16 00:31:54 -05:00
|
|
|
# frozen_string_literal: false
|
2010-05-08 00:05:39 -04:00
|
|
|
require 'mkmf'
|
|
|
|
|
2021-02-05 07:03:39 -05:00
|
|
|
ok = true if RUBY_ENGINE == "ruby" || RUBY_ENGINE == "truffleruby"
|
2010-05-08 00:05:39 -04:00
|
|
|
hdr = nil
|
|
|
|
case
|
|
|
|
when macro_defined?("_WIN32", "")
|
2014-12-17 21:44:56 -05:00
|
|
|
# rb_w32_map_errno: 1.8.7
|
2015-12-23 10:26:08 -05:00
|
|
|
vk_header = File.exist?("#$srcdir/win32_vk.list") ? "chksum" : "inc"
|
|
|
|
vk_header = "#{'{$(srcdir)}' if $nmake == ?m}win32_vk.#{vk_header}"
|
2010-05-08 00:05:39 -04:00
|
|
|
when hdr = %w"termios.h termio.h".find {|h| have_header(h)}
|
|
|
|
have_func("cfmakeraw", hdr)
|
|
|
|
when have_header(hdr = "sgtty.h")
|
|
|
|
%w"stty gtty".each {|f| have_func(f, hdr)}
|
|
|
|
else
|
|
|
|
ok = false
|
2020-02-17 01:24:57 -05:00
|
|
|
end if ok
|
|
|
|
case ok
|
|
|
|
when true
|
2015-07-26 22:21:13 -04:00
|
|
|
have_header("sys/ioctl.h") if hdr
|
2014-12-17 21:44:56 -05:00
|
|
|
# rb_check_hash_type: 1.9.3
|
|
|
|
# rb_io_get_write_io: 1.9.1
|
|
|
|
# rb_cloexec_open: 2.0.0
|
2018-03-02 02:53:27 -05:00
|
|
|
# rb_funcallv: 2.1.0
|
2018-03-02 06:24:29 -05:00
|
|
|
# RARRAY_CONST_PTR: 2.1.0
|
|
|
|
# rb_sym2str: 2.2.0
|
2021-02-09 03:38:52 -05:00
|
|
|
if have_macro("HAVE_RUBY_FIBER_SCHEDULER_H")
|
|
|
|
$defs << "-D""HAVE_RB_IO_WAIT=1"
|
|
|
|
elsif have_func("rb_scheduler_timeout") # 3.0
|
2020-10-10 02:15:21 -04:00
|
|
|
have_func("rb_io_wait")
|
|
|
|
end
|
2015-12-08 08:26:56 -05:00
|
|
|
$defs << "-D""ENABLE_IO_GETPASS=1"
|
2015-05-03 14:13:10 -04:00
|
|
|
create_makefile("io/console") {|conf|
|
2015-05-05 06:54:37 -04:00
|
|
|
conf << "\n""VK_HEADER = #{vk_header}\n"
|
2015-05-03 14:13:10 -04:00
|
|
|
}
|
2020-02-17 01:24:57 -05:00
|
|
|
when nil
|
|
|
|
File.write("Makefile", dummy_makefile($srcdir).join(""))
|
2010-05-08 00:05:39 -04:00
|
|
|
end
|