Skip to content

Commit 2459df1

Browse files
committed
Patch variable.c to support autoload
1 parent 482cfb4 commit 2459df1

File tree

3 files changed

+3955
-19
lines changed

3 files changed

+3955
-19
lines changed

Rakefile

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def make_resource(target, source, type)
2222
end
2323
end
2424

25-
def patch_ruby_eval(target, source)
25+
def patch_rb_require(target, source)
2626
file target => source do
2727
mkdir_p File.dirname(target)
2828
File.open(target, 'w') do |dst|
@@ -104,34 +104,39 @@ end
104104
ver = RUBY_VERSION.gsub('.','')
105105
exerb_dll_base = "exerb50"
106106

107-
file_resource_dll_o = "tmp/resource_dll.o"
108-
file_resource_cui_o = "tmp/resource_cui.o"
109-
file_resource_gui_o = "tmp/resource_gui.o"
110-
file_exerb_def = "tmp/#{exerb_dll_base}.def"
111-
file_exerb_lib = "tmp/#{exerb_dll_base}.dll.a"
112-
file_exerb_rt_def = "tmp/#{exerb_dll_base}_rt.def"
113-
file_exerb_dll = "data/exerb/#{exerb_dll_base}.dll"
114-
file_ruby_cui = "data/exerb/ruby#{ver}c.exc"
115-
file_ruby_cui_rt = "data/exerb/ruby#{ver}crt.exc"
116-
file_ruby_gui = "data/exerb/ruby#{ver}g.exc"
117-
file_ruby_gui_rt = "data/exerb/ruby#{ver}grt.exc"
118-
file_eval_c = "src/mingw#{ver}/eval.c"
119-
file_eval_exerb_c = "tmp/eval_exerb.c"
120-
file_eval_exerb_o = "tmp/eval_exerb.o"
121-
ruby_src = [file_eval_exerb_c]
122-
ruby_obj = [file_eval_exerb_o]
123-
ruby_lib = nil
107+
file_resource_dll_o = "tmp/resource_dll.o"
108+
file_resource_cui_o = "tmp/resource_cui.o"
109+
file_resource_gui_o = "tmp/resource_gui.o"
110+
file_exerb_def = "tmp/#{exerb_dll_base}.def"
111+
file_exerb_lib = "tmp/#{exerb_dll_base}.dll.a"
112+
file_exerb_rt_def = "tmp/#{exerb_dll_base}_rt.def"
113+
file_exerb_dll = "data/exerb/#{exerb_dll_base}.dll"
114+
file_ruby_cui = "data/exerb/ruby#{ver}c.exc"
115+
file_ruby_cui_rt = "data/exerb/ruby#{ver}crt.exc"
116+
file_ruby_gui = "data/exerb/ruby#{ver}g.exc"
117+
file_ruby_gui_rt = "data/exerb/ruby#{ver}grt.exc"
118+
file_eval_c = "src/mingw#{ver}/eval.c"
119+
file_eval_exerb_c = "tmp/eval_exerb.c"
120+
file_eval_exerb_o = "tmp/eval_exerb.o"
121+
file_variable_c = "src/mingw#{ver}/variable.c"
122+
file_variable_exerb_c = "tmp/variable_exerb.c"
123+
file_variable_exerb_o = "tmp/variable_exerb.o"
124+
ruby_src = [file_eval_exerb_c, file_variable_exerb_c]
125+
ruby_obj = [file_eval_exerb_o, file_variable_exerb_o]
126+
ruby_lib = nil
124127

125128
if RUBY_SRC_DIR
126129
C.cflags = "-Os" # optimize for size
127130
C.incflags = "#{C.incflags} -I#{RUBY_SRC_DIR}"
128131
C.rubylib = ""
129132
file_eval_c = "#{RUBY_SRC_DIR}/eval.c"
133+
file_variable_c = "#{RUBY_SRC_DIR}/variable.c"
130134
ruby_src = []
131135
Dir["#{RUBY_SRC_DIR}/*.c"].each do |filename|
132136
next if filename =~ /lex\.c/i
133137
next if filename =~ /eval\.c/i
134138
next if filename =~ /main\.c/i
139+
next if filename =~ /variable\.c/i
135140
ruby_src << filename
136141
end
137142
Dir["#{RUBY_SRC_DIR}/win32/*.c"].each do |filename|
@@ -142,6 +147,7 @@ if RUBY_SRC_DIR
142147
ruby_src << "#{RUBY_SRC_DIR}/missing/#{name}"
143148
end
144149
ruby_src << file_eval_exerb_c
150+
ruby_src << file_variable_exerb_c
145151
ruby_obj = ruby_src.map { |filename| filename.sub(RUBY_SRC_DIR, 'tmp').gsub(/\.c\Z/i, '.o') }
146152
ruby_lib = "tmp/libruby#{ver}.a"
147153
make_archive ruby_lib, ruby_obj
@@ -152,7 +158,8 @@ dll_sources = [file_resource_dll_o]
152158
cui_sources = ["src/exerb/cui.cpp", file_resource_cui_o]
153159
gui_sources = ["src/exerb/gui.cpp", file_resource_gui_o]
154160

155-
patch_ruby_eval file_eval_exerb_c, file_eval_c
161+
patch_rb_require file_eval_exerb_c, file_eval_c
162+
patch_rb_require file_variable_exerb_c, file_variable_c
156163
SyncEnumerator.new(ruby_obj, ruby_src).each do |target, source|
157164
compile_c target, source
158165
end

0 commit comments

Comments
 (0)