exerb 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/ChangeLog.ja.rd +305 -0
- data/README.en.txt +12 -0
- data/README.ja.html +143 -0
- data/README.ja.txt +6 -0
- data/README.md +50 -0
- data/Rakefile +205 -0
- data/bin/exerb +185 -0
- data/bin/mkexy +47 -0
- data/doc/LGPL +513 -0
- data/doc/class.ja.html +92 -0
- data/doc/command.ja.html +109 -0
- data/doc/core.ja.html +72 -0
- data/doc/example.ja.html +89 -0
- data/doc/faq.ja.html +59 -0
- data/doc/inside.ja.rd +404 -0
- data/doc/license.ja.html +62 -0
- data/doc/logo.gif +0 -0
- data/doc/misc.ja.html +72 -0
- data/doc/navi.gif +0 -0
- data/doc/recipe.ja.html +317 -0
- data/doc/style.css +187 -0
- data/doc/tutorial.ja.html +182 -0
- data/example/Makefile +54 -0
- data/example/cat_n.rb +14 -0
- data/example/exception.rb +9 -0
- data/example/ext/Win32API.so +0 -0
- data/example/ext/swin.so +0 -0
- data/example/msgbox.rb +14 -0
- data/example/rubytk.rb +22 -0
- data/example/runtime.ico +0 -0
- data/example/runtime.rb +19 -0
- data/example/vr/clipboard.rb +106 -0
- data/example/vr/compat/rubycompat.rb +18 -0
- data/example/vr/compat/vrcomctl.rb +12 -0
- data/example/vr/compat/vrcontrol.rb +50 -0
- data/example/vr/compat/vrmmedia.rb +24 -0
- data/example/vr/contrib/inifile.rb +116 -0
- data/example/vr/contrib/msgboxconst.rb +55 -0
- data/example/vr/contrib/toolbar.rb +371 -0
- data/example/vr/contrib/vrctlcolor.rb +110 -0
- data/example/vr/contrib/vrhotkey.rb +35 -0
- data/example/vr/contrib/vrlistviewex.rb +71 -0
- data/example/vr/contrib/vrstdscrollbar.rb +414 -0
- data/example/vr/contrib/vrwincomponent.rb +54 -0
- data/example/vr/dragdropformat.rb +209 -0
- data/example/vr/rscutil.rb +168 -0
- data/example/vr/sysmod.rb +249 -0
- data/example/vr/vractivex.rb +56 -0
- data/example/vr/vrclipboard.rb +53 -0
- data/example/vr/vrcomctl.rb +1819 -0
- data/example/vr/vrcontrol.rb +1374 -0
- data/example/vr/vrdde.rb +623 -0
- data/example/vr/vrddrop.rb +190 -0
- data/example/vr/vrdialog.rb +406 -0
- data/example/vr/vrhandler.rb +195 -0
- data/example/vr/vrlayout.old.rb +209 -0
- data/example/vr/vrlayout.rb +173 -0
- data/example/vr/vrlayout2.rb +340 -0
- data/example/vr/vrmargin.rb +141 -0
- data/example/vr/vrmgdlayout.rb +381 -0
- data/example/vr/vrmmedia.rb +287 -0
- data/example/vr/vrolednd.rb +192 -0
- data/example/vr/vrowndraw.rb +108 -0
- data/example/vr/vrrichedit.rb +366 -0
- data/example/vr/vrtimer.rb +148 -0
- data/example/vr/vrtooltip.rb +273 -0
- data/example/vr/vrtray.rb +143 -0
- data/example/vr/vrtvitem.rb +118 -0
- data/example/vr/vrtwopane.rb +223 -0
- data/example/vr/vruby.rb +1051 -0
- data/example/vr/winconst.rb +158 -0
- data/example/vruby.rb +38 -0
- data/exerb.gemspec +26 -0
- data/extconf.rb +7 -0
- data/lib/exerb/archive.rb +143 -0
- data/lib/exerb/config.rb +51 -0
- data/lib/exerb/error.rb +15 -0
- data/lib/exerb/executable.rb +68 -0
- data/lib/exerb/file_table.rb +189 -0
- data/lib/exerb/mkexy.rb +81 -0
- data/lib/exerb/name_table.rb +120 -0
- data/lib/exerb/recipe.rb +465 -0
- data/lib/exerb/resource.rb +190 -0
- data/lib/exerb/resource/base.rb +29 -0
- data/lib/exerb/resource/binary.rb +31 -0
- data/lib/exerb/resource/dialog.rb +30 -0
- data/lib/exerb/resource/group_icon.rb +85 -0
- data/lib/exerb/resource/icon.rb +52 -0
- data/lib/exerb/resource/version_info.rb +155 -0
- data/lib/exerb/resource_library.rb +120 -0
- data/lib/exerb/utility.rb +95 -0
- data/lib/exerb/utility2.rb +122 -0
- data/lib/exerb/version.rb +13 -0
- data/lib/exerb/win32/const/resource.rb +51 -0
- data/lib/exerb/win32/icon_file.rb +78 -0
- data/lib/exerb/win32/pe_file.rb +59 -0
- data/lib/exerb/win32/resource_directory.rb +105 -0
- data/lib/exerb/win32/resource_directory_root.rb +67 -0
- data/lib/exerb/win32/resource_entry.rb +98 -0
- data/lib/exerb/win32/struct/base.rb +43 -0
- data/lib/exerb/win32/struct/icon_dir_entry.rb +83 -0
- data/lib/exerb/win32/struct/icon_header.rb +43 -0
- data/lib/exerb/win32/struct/icon_res_entry.rb +48 -0
- data/lib/exerb/win32/struct/image_dos_header.rb +73 -0
- data/lib/exerb/win32/struct/image_file_header.rb +47 -0
- data/lib/exerb/win32/struct/image_nt_headers32.rb +53 -0
- data/lib/exerb/win32/struct/image_optional_header32.rb +107 -0
- data/lib/exerb/win32/struct/image_resource_data_entry.rb +45 -0
- data/lib/exerb/win32/struct/image_resource_directory.rb +47 -0
- data/lib/exerb/win32/struct/image_resource_directory_entry.rb +72 -0
- data/lib/exerb/win32/struct/image_section_header.rb +53 -0
- data/lib/exerb/win32/struct/version_info_block.rb +75 -0
- data/lib/exerb/win32/struct/vs_fixed_file_info.rb +62 -0
- data/src/exerb/cui.c +48 -0
- data/src/exerb/default.rb +1 -0
- data/src/exerb/exerb.c +877 -0
- data/src/exerb/exerb.h +92 -0
- data/src/exerb/gui.c +176 -0
- data/src/exerb/module.c +138 -0
- data/src/exerb/module.h +7 -0
- data/src/exerb/patch.c +27 -0
- data/src/exerb/resource.h +22 -0
- data/src/exerb/resource.rc +121 -0
- data/src/exerb/ruby.ico +0 -0
- data/src/exerb/utility.c +263 -0
- data/src/exerb/utility.h +33 -0
- data/test/alltests.rb +16 -0
- data/test/test-argv.rb +26 -0
- data/test/test-argv/test-argv.rb +9 -0
- data/test/test-argv/test-argv.ret +1 -0
- data/test/test-dollarzero.rb +26 -0
- data/test/test-dollarzero/test-dollarzero.rb +10 -0
- data/test/test-dollarzero/test-dollarzero.ret +2 -0
- data/test/test-dot.rb +26 -0
- data/test/test-dot/dot.dot.dot.rb +9 -0
- data/test/test-dot/dot.dot.rb +9 -0
- data/test/test-dot/test-dot.rb +13 -0
- data/test/test-dot/test-dot.ret +5 -0
- data/test/test-exitcode.rb +28 -0
- data/test/test-exitcode/test-exitcode.rb +9 -0
- data/test/test-kcode.rb +43 -0
- data/test/test-kcode/euc.rb +10 -0
- data/test/test-kcode/euc.ret +2 -0
- data/test/test-kcode/none.rb +10 -0
- data/test/test-kcode/none.ret +2 -0
- data/test/test-kcode/sjis.rb +10 -0
- data/test/test-kcode/sjis.ret +2 -0
- data/test/test-kcode/utf8.rb +10 -0
- data/test/test-kcode/utf8.ret +2 -0
- data/test/test-loadpath.rb +24 -0
- data/test/test-loadpath/test-loadpath.rb +9 -0
- data/test/test-nest.rb +18 -0
- data/test/test-nest/foo.rb +1 -0
- data/test/test-nest/foo/bar.rb +2 -0
- data/test/test-nest/foo/foo.rb +1 -0
- data/test/test-nest/test-nest.rb +1 -0
- data/test/test-nest/test-nest.ret +1 -0
- data/test/test-preload.rb +24 -0
- data/test/test-preload/test-preload.rb +9 -0
- data/test/test-regexp.rb +26 -0
- data/test/test-regexp/test-regexp.rb +23 -0
- data/test/test-regexp/test-regexp.ret +13 -0
- data/test/test-require1.rb +26 -0
- data/test/test-require1/require1.rb +9 -0
- data/test/test-require1/require2.rb +9 -0
- data/test/test-require1/require3.rb +9 -0
- data/test/test-require1/require4.rb +9 -0
- data/test/test-require1/require5.rb +9 -0
- data/test/test-require1/require6.rb +9 -0
- data/test/test-require1/test-require1.rb +41 -0
- data/test/test-require1/test-require1.ret +27 -0
- data/test/test-socket.rb +26 -0
- data/test/test-socket/test-socket.rb +7 -0
- data/test/test-socket/test-socket.ret +1 -0
- data/test/testcase.rb +66 -0
- data/vendor/mkexports.rb +167 -0
- metadata +352 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: test-require1.rb,v 1.2 2005/04/15 09:42:52 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
require 'testcase'
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
|
10
|
+
class Require1TestCase < Minitest::Test
|
11
|
+
include ExerbTestCase
|
12
|
+
|
13
|
+
def name2
|
14
|
+
return 'test-require1'
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_require
|
18
|
+
ret1 = read_result(@name)
|
19
|
+
ret2 = execute_exe(@name)
|
20
|
+
assert_equal(ret1, ret2)
|
21
|
+
end
|
22
|
+
|
23
|
+
end # Require1TestCase
|
24
|
+
|
25
|
+
#==============================================================================#
|
26
|
+
#==============================================================================#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: require1.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
#==============================================================================#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: require2.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
#==============================================================================#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: require3.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
#==============================================================================#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: require4.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
#==============================================================================#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: require5.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
#==============================================================================#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: require6.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
#==============================================================================#
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: test-require1.rb,v 1.1 2003/12/04 14:06:59 yuya Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
p([File.basename(__FILE__), $"])
|
7
|
+
|
8
|
+
p(require('require1'))
|
9
|
+
p(require('require1.rb'))
|
10
|
+
|
11
|
+
p([File.basename(__FILE__), $"])
|
12
|
+
|
13
|
+
p(require('require2.rb'))
|
14
|
+
p(require('require2'))
|
15
|
+
|
16
|
+
p([File.basename(__FILE__), $"])
|
17
|
+
|
18
|
+
p(require('require3.rb'))
|
19
|
+
p(require('require3.rb'))
|
20
|
+
|
21
|
+
p([File.basename(__FILE__), $"])
|
22
|
+
|
23
|
+
p(require('require4'))
|
24
|
+
p(require('require4'))
|
25
|
+
|
26
|
+
p([File.basename(__FILE__), $"])
|
27
|
+
|
28
|
+
p(require('require5.rb'))
|
29
|
+
p(require('require5.rb'))
|
30
|
+
p(require('require5'))
|
31
|
+
|
32
|
+
p([File.basename(__FILE__), $"])
|
33
|
+
|
34
|
+
p(require('require6'))
|
35
|
+
p(require('require6'))
|
36
|
+
p(require('require6.rb'))
|
37
|
+
|
38
|
+
p([File.basename(__FILE__), $"])
|
39
|
+
|
40
|
+
#==============================================================================#
|
41
|
+
#==============================================================================#
|
@@ -0,0 +1,27 @@
|
|
1
|
+
["test-require1.rb", ["enumerator.so"]]
|
2
|
+
["require1.rb", ["enumerator.so"]]
|
3
|
+
true
|
4
|
+
false
|
5
|
+
["test-require1.rb", ["enumerator.so", "require1.rb"]]
|
6
|
+
["require2.rb", ["enumerator.so", "require1.rb"]]
|
7
|
+
true
|
8
|
+
false
|
9
|
+
["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb"]]
|
10
|
+
["require3.rb", ["enumerator.so", "require1.rb", "require2.rb"]]
|
11
|
+
true
|
12
|
+
false
|
13
|
+
["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb"]]
|
14
|
+
["require4.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb"]]
|
15
|
+
true
|
16
|
+
false
|
17
|
+
["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb"]]
|
18
|
+
["require5.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb"]]
|
19
|
+
true
|
20
|
+
false
|
21
|
+
false
|
22
|
+
["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb", "require5.rb"]]
|
23
|
+
["require6.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb", "require5.rb"]]
|
24
|
+
true
|
25
|
+
false
|
26
|
+
false
|
27
|
+
["test-require1.rb", ["enumerator.so", "require1.rb", "require2.rb", "require3.rb", "require4.rb", "require5.rb", "require6.rb"]]
|
data/test/test-socket.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: test-socket.rb,v 1.1 2006/12/29 08:46:25 arton Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
|
6
|
+
require 'testcase'
|
7
|
+
|
8
|
+
#==============================================================================#
|
9
|
+
|
10
|
+
class SocketTestCase < Minitest::Test
|
11
|
+
include ExerbTestCase
|
12
|
+
|
13
|
+
def name2
|
14
|
+
return 'test-socket'
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_socket
|
18
|
+
ret1 = read_result(@name)
|
19
|
+
ret2 = execute_exe(@name)
|
20
|
+
assert_equal(ret1, ret2)
|
21
|
+
end
|
22
|
+
|
23
|
+
end # ArgvTestCase
|
24
|
+
|
25
|
+
#==============================================================================#
|
26
|
+
#==============================================================================#
|
@@ -0,0 +1,7 @@
|
|
1
|
+
#==============================================================================#
|
2
|
+
# $Id: test-socket.rb,v 1.1 2006/12/29 08:55:54 arton Exp $
|
3
|
+
#==============================================================================#
|
4
|
+
require 'socket'
|
5
|
+
#==============================================================================#
|
6
|
+
|
7
|
+
p(Socket::SOCK_STREAM)
|
@@ -0,0 +1 @@
|
|
1
|
+
1
|
data/test/testcase.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
|
2
|
+
#==============================================================================#
|
3
|
+
# $Id: testcase.rb,v 1.23 2008/06/13 23:53:34 arton Exp $
|
4
|
+
#==============================================================================#
|
5
|
+
gem 'minitest'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
|
8
|
+
libpath = File.expand_path('../../lib', __FILE__)
|
9
|
+
unless $:.include?(libpath)
|
10
|
+
$:.unshift(libpath)
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'exerb/recipe'
|
14
|
+
require 'exerb/executable'
|
15
|
+
|
16
|
+
#==============================================================================#
|
17
|
+
|
18
|
+
module ExerbTestCase
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@name = self.name2
|
22
|
+
self.setup_exe
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup_exe
|
26
|
+
create_exe(@name)
|
27
|
+
end
|
28
|
+
|
29
|
+
def name2
|
30
|
+
raise(NotImplementedError)
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_exe(name, exename = name)
|
34
|
+
Dir.chdir(name) {
|
35
|
+
ver = RUBY_VERSION.gsub('.','')
|
36
|
+
corefile = File.expand_path("../../data/exerb/ruby#{ver}c.exc", __FILE__)
|
37
|
+
mkexy = File.expand_path('../../bin/mkexy', __FILE__)
|
38
|
+
`#{Gem.ruby} #{mkexy} --old "old_#{exename}.exy" -- -I. "#{exename}.rb"`
|
39
|
+
recipe = Exerb::Recipe.load("#{exename}.exy")
|
40
|
+
archive = recipe.create_archive()
|
41
|
+
executable = Exerb::Executable.read(corefile)
|
42
|
+
executable.rsrc.add_archive(archive)
|
43
|
+
executable.write("#{exename}.exe")
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
def execute_cmd(cmd)
|
48
|
+
return `#{cmd}`.gsub(/\r\n/, "\n")
|
49
|
+
end
|
50
|
+
|
51
|
+
def execute_exe(name, argv = '')
|
52
|
+
return execute_cmd("#{name}/#{name}.exe #{argv}")
|
53
|
+
end
|
54
|
+
|
55
|
+
def read_file(filepath)
|
56
|
+
return File.open(filepath) { |file| file.read }.gsub(/\r\n/) {"\n"}
|
57
|
+
end
|
58
|
+
|
59
|
+
def read_result(name)
|
60
|
+
return read_file("#{name}/#{name}.ret")
|
61
|
+
end
|
62
|
+
|
63
|
+
end # ExerbTestCase
|
64
|
+
|
65
|
+
#==============================================================================#
|
66
|
+
#==============================================================================#
|
data/vendor/mkexports.rb
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
$name = $library = $description = nil
|
2
|
+
|
3
|
+
class Exports
|
4
|
+
@@subclass = []
|
5
|
+
def self.inherited(klass)
|
6
|
+
@@subclass << [/#{klass.name.sub(/.*::/, '').downcase}/i, klass]
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.create(*args, &block)
|
10
|
+
platform = RUBY_PLATFORM
|
11
|
+
pat, klass = @@subclass.find {|p, k| p =~ platform}
|
12
|
+
unless klass
|
13
|
+
raise ArgumentError, "unsupported platform: #{platform}"
|
14
|
+
end
|
15
|
+
klass.new(*args, &block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.extract(objs, *rest)
|
19
|
+
create(objs).exports(*rest)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.output(output = $output, &block)
|
23
|
+
if output
|
24
|
+
open(output, 'wb', &block)
|
25
|
+
else
|
26
|
+
yield STDOUT
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize(objs)
|
31
|
+
syms = {}
|
32
|
+
winapis = {}
|
33
|
+
syms["ruby_sysinit_real"] = "ruby_sysinit"
|
34
|
+
each_export(objs) do |internal, export|
|
35
|
+
syms[internal] = export
|
36
|
+
winapis[$1] = internal if /^_?(rb_w32_\w+)(?:@\d+)?$/ =~ internal
|
37
|
+
end
|
38
|
+
# patch to use RbConfig information (rubyhdrdir)
|
39
|
+
incdir = File.join(RbConfig::CONFIG["rubyhdrdir"], "ruby")
|
40
|
+
read_substitution(incdir+"/win32.h", syms, winapis)
|
41
|
+
read_substitution(incdir+"/subst.h", syms, winapis)
|
42
|
+
syms["rb_w32_vsnprintf"] ||= "ruby_vsnprintf"
|
43
|
+
syms["rb_w32_snprintf"] ||= "ruby_snprintf"
|
44
|
+
@syms = syms
|
45
|
+
end
|
46
|
+
|
47
|
+
def read_substitution(header, syms, winapis)
|
48
|
+
IO.foreach(header) do |line|
|
49
|
+
if /^#define (\w+)\((.*?)\)\s+(?:\(void\))?(rb_w32_\w+)\((.*?)\)\s*$/ =~ line and
|
50
|
+
$2.delete(" ") == $4.delete(" ")
|
51
|
+
export, internal = $1, $3
|
52
|
+
if syms[internal] or internal = winapis[internal]
|
53
|
+
syms[forwarding(internal, export)] = internal
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def exports(name = $name, library = $library, description = $description)
|
60
|
+
exports = []
|
61
|
+
if name
|
62
|
+
exports << "Name " + name
|
63
|
+
elsif library
|
64
|
+
exports << "Library " + library
|
65
|
+
end
|
66
|
+
exports << "Description " + description.dump if description
|
67
|
+
exports << "VERSION #{RbConfig::CONFIG['MAJOR']}.#{RbConfig::CONFIG['MINOR']}"
|
68
|
+
exports << "EXPORTS" << symbols()
|
69
|
+
exports
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
def forwarding(internal, export)
|
74
|
+
internal.sub(/^[^@]+/, "\\1#{export}")
|
75
|
+
end
|
76
|
+
|
77
|
+
def each_export(objs)
|
78
|
+
end
|
79
|
+
|
80
|
+
def objdump(objs, &block)
|
81
|
+
if objs.empty?
|
82
|
+
$stdin.each_line(&block)
|
83
|
+
else
|
84
|
+
each_line(objs, &block)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def symbols()
|
89
|
+
@syms.sort.collect {|k, v| v ? v == true ? "#{k} DATA" : "#{k}=#{v}" : k}
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
class Exports::Mswin < Exports
|
94
|
+
def each_line(objs, &block)
|
95
|
+
IO.popen(%w"dumpbin -symbols -exports" + objs) do |f|
|
96
|
+
f.each(&block)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def each_export(objs)
|
101
|
+
noprefix = ($arch ||= nil and /^(sh|i\d86)/ !~ $arch)
|
102
|
+
objs = objs.collect {|s| s.tr('/', '\\')}
|
103
|
+
filetype = nil
|
104
|
+
objdump(objs) do |l|
|
105
|
+
if (filetype = l[/^File Type: (.+)/, 1])..(/^\f/ =~ l)
|
106
|
+
case filetype
|
107
|
+
when /OBJECT/, /LIBRARY/
|
108
|
+
next if /^[[:xdigit:]]+ 0+ UNDEF / =~ l
|
109
|
+
next unless /External/ =~ l
|
110
|
+
next unless l.sub!(/.*?\s(\(\)\s+)?External\s+\|\s+/, '')
|
111
|
+
is_data = !$1
|
112
|
+
if noprefix or /^[@_]/ =~ l
|
113
|
+
next if /(?!^)@.*@/ =~ l || /@[[:xdigit:]]{8,16}$/ =~ l ||
|
114
|
+
/^_?(?:Init_|.*_threadptr_|DllMain\b)/ =~ l
|
115
|
+
l.sub!(/^[@_]/, '') if /@\d+$/ !~ l
|
116
|
+
elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1')
|
117
|
+
next
|
118
|
+
end
|
119
|
+
when /DLL/
|
120
|
+
next unless l.sub!(/^\s*\d+\s+[[:xdigit:]]+\s+[[:xdigit:]]+\s+/, '')
|
121
|
+
else
|
122
|
+
next
|
123
|
+
end
|
124
|
+
yield l.strip, is_data
|
125
|
+
end
|
126
|
+
end
|
127
|
+
yield "strcasecmp", "msvcrt.stricmp"
|
128
|
+
yield "strncasecmp", "msvcrt.strnicmp"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
class Exports::Cygwin < Exports
|
133
|
+
def self.nm
|
134
|
+
@@nm ||= RbConfig::CONFIG["NM"]
|
135
|
+
end
|
136
|
+
|
137
|
+
def exports(*)
|
138
|
+
super()
|
139
|
+
end
|
140
|
+
|
141
|
+
def each_line(objs, &block)
|
142
|
+
IO.foreach("|#{self.class.nm} --extern --defined #{objs.join(' ')}", &block)
|
143
|
+
end
|
144
|
+
|
145
|
+
def each_export(objs)
|
146
|
+
symprefix = RbConfig::CONFIG["SYMBOL_PREFIX"]
|
147
|
+
symprefix.strip! if symprefix
|
148
|
+
re = /\s(?:(T)|[[:upper:]])\s#{symprefix}((?!Init_|.*_threadptr_|DllMain\b).*)$/
|
149
|
+
objdump(objs) do |l|
|
150
|
+
next if /@.*@/ =~ l
|
151
|
+
yield $2, !$1 if re =~ l
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
class Exports::Mingw < Exports::Cygwin
|
157
|
+
def each_export(objs)
|
158
|
+
super
|
159
|
+
yield "strcasecmp", "_stricmp"
|
160
|
+
yield "strncasecmp", "_strnicmp"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
# END {
|
165
|
+
# exports = Exports.extract(ARGV)
|
166
|
+
# Exports.output {|f| f.puts(*exports)}
|
167
|
+
# }
|
metadata
ADDED
@@ -0,0 +1,352 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: exerb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 6.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- windwiny
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-01-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake-compiler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
55
|
+
description: Exerb support for mingw/rubyinstaller. Packaged ruby source files and
|
56
|
+
ruby extensions files into a single PE executable file.
|
57
|
+
email:
|
58
|
+
- windwiny.ubt@gmail.com
|
59
|
+
executables:
|
60
|
+
- exerb
|
61
|
+
- mkexy
|
62
|
+
extensions:
|
63
|
+
- extconf.rb
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- ".gitignore"
|
67
|
+
- ChangeLog.ja.rd
|
68
|
+
- README.en.txt
|
69
|
+
- README.ja.html
|
70
|
+
- README.ja.txt
|
71
|
+
- README.md
|
72
|
+
- Rakefile
|
73
|
+
- bin/exerb
|
74
|
+
- bin/mkexy
|
75
|
+
- doc/LGPL
|
76
|
+
- doc/class.ja.html
|
77
|
+
- doc/command.ja.html
|
78
|
+
- doc/core.ja.html
|
79
|
+
- doc/example.ja.html
|
80
|
+
- doc/faq.ja.html
|
81
|
+
- doc/inside.ja.rd
|
82
|
+
- doc/license.ja.html
|
83
|
+
- doc/logo.gif
|
84
|
+
- doc/misc.ja.html
|
85
|
+
- doc/navi.gif
|
86
|
+
- doc/recipe.ja.html
|
87
|
+
- doc/style.css
|
88
|
+
- doc/tutorial.ja.html
|
89
|
+
- example/Makefile
|
90
|
+
- example/cat_n.rb
|
91
|
+
- example/exception.rb
|
92
|
+
- example/ext/Win32API.so
|
93
|
+
- example/ext/swin.so
|
94
|
+
- example/msgbox.rb
|
95
|
+
- example/old_cat_n.exy
|
96
|
+
- example/old_exception.exy
|
97
|
+
- example/old_msgbox.exy
|
98
|
+
- example/old_rubytk.exy
|
99
|
+
- example/old_runtime.exy
|
100
|
+
- example/old_vruby.exy
|
101
|
+
- example/rubytk.rb
|
102
|
+
- example/runtime.ico
|
103
|
+
- example/runtime.rb
|
104
|
+
- example/vr/clipboard.rb
|
105
|
+
- example/vr/compat/rubycompat.rb
|
106
|
+
- example/vr/compat/vrcomctl.rb
|
107
|
+
- example/vr/compat/vrcontrol.rb
|
108
|
+
- example/vr/compat/vrmmedia.rb
|
109
|
+
- example/vr/contrib/inifile.rb
|
110
|
+
- example/vr/contrib/msgboxconst.rb
|
111
|
+
- example/vr/contrib/toolbar.rb
|
112
|
+
- example/vr/contrib/vrctlcolor.rb
|
113
|
+
- example/vr/contrib/vrhotkey.rb
|
114
|
+
- example/vr/contrib/vrlistviewex.rb
|
115
|
+
- example/vr/contrib/vrstdscrollbar.rb
|
116
|
+
- example/vr/contrib/vrwincomponent.rb
|
117
|
+
- example/vr/dragdropformat.rb
|
118
|
+
- example/vr/rscutil.rb
|
119
|
+
- example/vr/sysmod.rb
|
120
|
+
- example/vr/vractivex.rb
|
121
|
+
- example/vr/vrclipboard.rb
|
122
|
+
- example/vr/vrcomctl.rb
|
123
|
+
- example/vr/vrcontrol.rb
|
124
|
+
- example/vr/vrdde.rb
|
125
|
+
- example/vr/vrddrop.rb
|
126
|
+
- example/vr/vrdialog.rb
|
127
|
+
- example/vr/vrhandler.rb
|
128
|
+
- example/vr/vrlayout.old.rb
|
129
|
+
- example/vr/vrlayout.rb
|
130
|
+
- example/vr/vrlayout2.rb
|
131
|
+
- example/vr/vrmargin.rb
|
132
|
+
- example/vr/vrmgdlayout.rb
|
133
|
+
- example/vr/vrmmedia.rb
|
134
|
+
- example/vr/vrolednd.rb
|
135
|
+
- example/vr/vrowndraw.rb
|
136
|
+
- example/vr/vrrichedit.rb
|
137
|
+
- example/vr/vrtimer.rb
|
138
|
+
- example/vr/vrtooltip.rb
|
139
|
+
- example/vr/vrtray.rb
|
140
|
+
- example/vr/vrtvitem.rb
|
141
|
+
- example/vr/vrtwopane.rb
|
142
|
+
- example/vr/vruby.rb
|
143
|
+
- example/vr/winconst.rb
|
144
|
+
- example/vruby.rb
|
145
|
+
- exerb.gemspec
|
146
|
+
- extconf.rb
|
147
|
+
- lib/exerb/archive.rb
|
148
|
+
- lib/exerb/config.rb
|
149
|
+
- lib/exerb/error.rb
|
150
|
+
- lib/exerb/executable.rb
|
151
|
+
- lib/exerb/file_table.rb
|
152
|
+
- lib/exerb/mkexy.rb
|
153
|
+
- lib/exerb/name_table.rb
|
154
|
+
- lib/exerb/recipe.rb
|
155
|
+
- lib/exerb/resource.rb
|
156
|
+
- lib/exerb/resource/base.rb
|
157
|
+
- lib/exerb/resource/binary.rb
|
158
|
+
- lib/exerb/resource/dialog.rb
|
159
|
+
- lib/exerb/resource/group_icon.rb
|
160
|
+
- lib/exerb/resource/icon.rb
|
161
|
+
- lib/exerb/resource/version_info.rb
|
162
|
+
- lib/exerb/resource_library.rb
|
163
|
+
- lib/exerb/utility.rb
|
164
|
+
- lib/exerb/utility2.rb
|
165
|
+
- lib/exerb/version.rb
|
166
|
+
- lib/exerb/win32/const/resource.rb
|
167
|
+
- lib/exerb/win32/icon_file.rb
|
168
|
+
- lib/exerb/win32/pe_file.rb
|
169
|
+
- lib/exerb/win32/resource_directory.rb
|
170
|
+
- lib/exerb/win32/resource_directory_root.rb
|
171
|
+
- lib/exerb/win32/resource_entry.rb
|
172
|
+
- lib/exerb/win32/struct/base.rb
|
173
|
+
- lib/exerb/win32/struct/icon_dir_entry.rb
|
174
|
+
- lib/exerb/win32/struct/icon_header.rb
|
175
|
+
- lib/exerb/win32/struct/icon_res_entry.rb
|
176
|
+
- lib/exerb/win32/struct/image_dos_header.rb
|
177
|
+
- lib/exerb/win32/struct/image_file_header.rb
|
178
|
+
- lib/exerb/win32/struct/image_nt_headers32.rb
|
179
|
+
- lib/exerb/win32/struct/image_optional_header32.rb
|
180
|
+
- lib/exerb/win32/struct/image_resource_data_entry.rb
|
181
|
+
- lib/exerb/win32/struct/image_resource_directory.rb
|
182
|
+
- lib/exerb/win32/struct/image_resource_directory_entry.rb
|
183
|
+
- lib/exerb/win32/struct/image_section_header.rb
|
184
|
+
- lib/exerb/win32/struct/version_info_block.rb
|
185
|
+
- lib/exerb/win32/struct/vs_fixed_file_info.rb
|
186
|
+
- src/exerb/cui.c
|
187
|
+
- src/exerb/default.exa
|
188
|
+
- src/exerb/default.exy
|
189
|
+
- src/exerb/default.rb
|
190
|
+
- src/exerb/exerb.c
|
191
|
+
- src/exerb/exerb.h
|
192
|
+
- src/exerb/gui.c
|
193
|
+
- src/exerb/module.c
|
194
|
+
- src/exerb/module.h
|
195
|
+
- src/exerb/patch.c
|
196
|
+
- src/exerb/resource.h
|
197
|
+
- src/exerb/resource.rc
|
198
|
+
- src/exerb/ruby.ico
|
199
|
+
- src/exerb/utility.c
|
200
|
+
- src/exerb/utility.h
|
201
|
+
- test/alltests.rb
|
202
|
+
- test/test-argv.rb
|
203
|
+
- test/test-argv/old_test-argv.exy
|
204
|
+
- test/test-argv/test-argv.rb
|
205
|
+
- test/test-argv/test-argv.ret
|
206
|
+
- test/test-dollarzero.rb
|
207
|
+
- test/test-dollarzero/old_test-dollarzero.exy
|
208
|
+
- test/test-dollarzero/test-dollarzero.rb
|
209
|
+
- test/test-dollarzero/test-dollarzero.ret
|
210
|
+
- test/test-dot.rb
|
211
|
+
- test/test-dot/dot.dot.dot.rb
|
212
|
+
- test/test-dot/dot.dot.rb
|
213
|
+
- test/test-dot/old_test-dot.exy
|
214
|
+
- test/test-dot/test-dot.rb
|
215
|
+
- test/test-dot/test-dot.ret
|
216
|
+
- test/test-exitcode.rb
|
217
|
+
- test/test-exitcode/old_test-exitcode.exy
|
218
|
+
- test/test-exitcode/test-exitcode.rb
|
219
|
+
- test/test-kcode.rb
|
220
|
+
- test/test-kcode/euc.rb
|
221
|
+
- test/test-kcode/euc.ret
|
222
|
+
- test/test-kcode/none.rb
|
223
|
+
- test/test-kcode/none.ret
|
224
|
+
- test/test-kcode/old_euc.exy
|
225
|
+
- test/test-kcode/old_none.exy
|
226
|
+
- test/test-kcode/old_sjis.exy
|
227
|
+
- test/test-kcode/old_utf8.exy
|
228
|
+
- test/test-kcode/sjis.rb
|
229
|
+
- test/test-kcode/sjis.ret
|
230
|
+
- test/test-kcode/utf8.rb
|
231
|
+
- test/test-kcode/utf8.ret
|
232
|
+
- test/test-loadpath.rb
|
233
|
+
- test/test-loadpath/old_test-loadpath.exy
|
234
|
+
- test/test-loadpath/test-loadpath.rb
|
235
|
+
- test/test-nest.rb
|
236
|
+
- test/test-nest/foo.rb
|
237
|
+
- test/test-nest/foo/bar.rb
|
238
|
+
- test/test-nest/foo/foo.rb
|
239
|
+
- test/test-nest/old_test-nest.exy
|
240
|
+
- test/test-nest/test-nest.rb
|
241
|
+
- test/test-nest/test-nest.ret
|
242
|
+
- test/test-preload.rb
|
243
|
+
- test/test-preload/old_test-preload.exy
|
244
|
+
- test/test-preload/test-preload.rb
|
245
|
+
- test/test-regexp.rb
|
246
|
+
- test/test-regexp/old_test-regexp.exy
|
247
|
+
- test/test-regexp/test-regexp.rb
|
248
|
+
- test/test-regexp/test-regexp.ret
|
249
|
+
- test/test-require1.rb
|
250
|
+
- test/test-require1/old_test-require1.exy
|
251
|
+
- test/test-require1/require1.rb
|
252
|
+
- test/test-require1/require2.rb
|
253
|
+
- test/test-require1/require3.rb
|
254
|
+
- test/test-require1/require4.rb
|
255
|
+
- test/test-require1/require5.rb
|
256
|
+
- test/test-require1/require6.rb
|
257
|
+
- test/test-require1/test-require1.rb
|
258
|
+
- test/test-require1/test-require1.ret
|
259
|
+
- test/test-socket.rb
|
260
|
+
- test/test-socket/old_test-socket.exy
|
261
|
+
- test/test-socket/test-socket.rb
|
262
|
+
- test/test-socket/test-socket.ret
|
263
|
+
- test/testcase.rb
|
264
|
+
- vendor/mkexports.rb
|
265
|
+
homepage: https://github.com/windwiny/exerb-mingw
|
266
|
+
licenses:
|
267
|
+
- MIT
|
268
|
+
metadata: {}
|
269
|
+
post_install_message:
|
270
|
+
rdoc_options: []
|
271
|
+
require_paths:
|
272
|
+
- lib
|
273
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
274
|
+
requirements:
|
275
|
+
- - ">="
|
276
|
+
- !ruby/object:Gem::Version
|
277
|
+
version: '0'
|
278
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
|
+
requirements:
|
280
|
+
- - ">="
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: '0'
|
283
|
+
requirements: []
|
284
|
+
rubyforge_project:
|
285
|
+
rubygems_version: 2.6.8
|
286
|
+
signing_key:
|
287
|
+
specification_version: 4
|
288
|
+
summary: Packaged *.rb *.so *.dll into alone.exe file.
|
289
|
+
test_files:
|
290
|
+
- test/alltests.rb
|
291
|
+
- test/test-argv.rb
|
292
|
+
- test/test-argv/old_test-argv.exy
|
293
|
+
- test/test-argv/test-argv.rb
|
294
|
+
- test/test-argv/test-argv.ret
|
295
|
+
- test/test-dollarzero.rb
|
296
|
+
- test/test-dollarzero/old_test-dollarzero.exy
|
297
|
+
- test/test-dollarzero/test-dollarzero.rb
|
298
|
+
- test/test-dollarzero/test-dollarzero.ret
|
299
|
+
- test/test-dot.rb
|
300
|
+
- test/test-dot/dot.dot.dot.rb
|
301
|
+
- test/test-dot/dot.dot.rb
|
302
|
+
- test/test-dot/old_test-dot.exy
|
303
|
+
- test/test-dot/test-dot.rb
|
304
|
+
- test/test-dot/test-dot.ret
|
305
|
+
- test/test-exitcode.rb
|
306
|
+
- test/test-exitcode/old_test-exitcode.exy
|
307
|
+
- test/test-exitcode/test-exitcode.rb
|
308
|
+
- test/test-kcode.rb
|
309
|
+
- test/test-kcode/euc.rb
|
310
|
+
- test/test-kcode/euc.ret
|
311
|
+
- test/test-kcode/none.rb
|
312
|
+
- test/test-kcode/none.ret
|
313
|
+
- test/test-kcode/old_euc.exy
|
314
|
+
- test/test-kcode/old_none.exy
|
315
|
+
- test/test-kcode/old_sjis.exy
|
316
|
+
- test/test-kcode/old_utf8.exy
|
317
|
+
- test/test-kcode/sjis.rb
|
318
|
+
- test/test-kcode/sjis.ret
|
319
|
+
- test/test-kcode/utf8.rb
|
320
|
+
- test/test-kcode/utf8.ret
|
321
|
+
- test/test-loadpath.rb
|
322
|
+
- test/test-loadpath/old_test-loadpath.exy
|
323
|
+
- test/test-loadpath/test-loadpath.rb
|
324
|
+
- test/test-nest.rb
|
325
|
+
- test/test-nest/foo.rb
|
326
|
+
- test/test-nest/foo/bar.rb
|
327
|
+
- test/test-nest/foo/foo.rb
|
328
|
+
- test/test-nest/old_test-nest.exy
|
329
|
+
- test/test-nest/test-nest.rb
|
330
|
+
- test/test-nest/test-nest.ret
|
331
|
+
- test/test-preload.rb
|
332
|
+
- test/test-preload/old_test-preload.exy
|
333
|
+
- test/test-preload/test-preload.rb
|
334
|
+
- test/test-regexp.rb
|
335
|
+
- test/test-regexp/old_test-regexp.exy
|
336
|
+
- test/test-regexp/test-regexp.rb
|
337
|
+
- test/test-regexp/test-regexp.ret
|
338
|
+
- test/test-require1.rb
|
339
|
+
- test/test-require1/old_test-require1.exy
|
340
|
+
- test/test-require1/require1.rb
|
341
|
+
- test/test-require1/require2.rb
|
342
|
+
- test/test-require1/require3.rb
|
343
|
+
- test/test-require1/require4.rb
|
344
|
+
- test/test-require1/require5.rb
|
345
|
+
- test/test-require1/require6.rb
|
346
|
+
- test/test-require1/test-require1.rb
|
347
|
+
- test/test-require1/test-require1.ret
|
348
|
+
- test/test-socket.rb
|
349
|
+
- test/test-socket/old_test-socket.exy
|
350
|
+
- test/test-socket/test-socket.rb
|
351
|
+
- test/test-socket/test-socket.ret
|
352
|
+
- test/testcase.rb
|