diff --git a/ext/io/console/depend b/ext/io/console/depend index 73638fe7..e7555961 100644 --- a/ext/io/console/depend +++ b/ext/io/console/depend @@ -1,15 +1,3 @@ -win32_vk.inc: win32_vk.list $(srcdir)/extract-vk.rb - -.list.inc: - ( \ - $(RUBY) $(srcdir)/extract-vk.rb $< && \ - gperf --ignore-case -L ANSI-C -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k* $< \ - | sed -f $(top_srcdir)/tool/gperf.sed \ - ) > $(@F) - -.SUFFIXES: .chksum .list .inc - -.list.chksum: - @$(RUBY) -I$(top_srcdir)/tool -rchecksum \ - -e "Checksum.update(ARGV) {|k|k.copy(k.target) rescue k.make(k.target)}" \ - -- --make=$(MAKE) -I$(srcdir) $( 60 code.last << " x(#{n})z" end puts ["#define EACH_VK(x,z)", code].join(" \\\n "), "" +IO.popen(["gperf", *ARGV], "r+") do |f| + w = Thread.start { + f.puts source + f.close_write + } + puts f.read.sub(/^\w*hash .*\{(?m:.*?)\n\}/) { + $&.sub!(" hval = ", " hval = (unsigned int)") + } + w.join +end diff --git a/ext/io/console/win32_vk.mk b/ext/io/console/win32_vk.mk new file mode 100644 index 00000000..97757a05 --- /dev/null +++ b/ext/io/console/win32_vk.mk @@ -0,0 +1,13 @@ +win32_vk.inc: win32_vk.list $(srcdir)/extract-vk.rb + +.list.inc: + $(Q)$(RUBY) $(srcdir)/extract-vk.rb $< \ + --ignore-case -L ANSI-C -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k* \ + > $(@F) + +.SUFFIXES: .chksum .list .inc + +.list.chksum: + @$(RUBY) -I$(top_srcdir)/tool -rchecksum \ + -e "Checksum.update(ARGV) {|k|k.copy(k.target) rescue k.make(k.target)}" \ + -- --make=$(MAKE) -I$(srcdir) $(