wxruby3 0.9.5 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/INSTALL.md +440 -84
- data/README.md +40 -23
- data/ext/mkrf_conf_ext.rb +68 -0
- data/lib/wx/core/ext.rb +22 -3
- data/lib/wx/core/secret_store.rb +38 -0
- data/lib/wx/doc/extra/02_lifecycles.md +4 -4
- data/lib/wx/doc/extra/14_config.md +1 -1
- data/lib/wx/doc/secret_store.rb +55 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/base.rb +8 -8
- data/lib/wx/wxruby/cmd/check.rb +182 -0
- data/lib/wx/wxruby/cmd/sampler.rb +39 -29
- data/lib/wx/wxruby/cmd/setup.rb +125 -0
- data/lib/wx/wxruby/cmd/test.rb +56 -6
- data/rakelib/bin.rake +48 -0
- data/rakelib/bin.rb +62 -0
- data/rakelib/build.rb +11 -7
- data/rakelib/config.rake +3 -1
- data/rakelib/configure.rb +63 -35
- data/rakelib/doc.rake +3 -1
- data/rakelib/gem.rake +199 -0
- data/rakelib/gem.rb +334 -0
- data/rakelib/install.rb +5 -3
- data/rakelib/lib/config/{cygwin.rb → freebsd.rb} +1 -1
- data/rakelib/lib/config/linux.rb +26 -2
- data/rakelib/lib/config/macosx.rb +58 -11
- data/rakelib/lib/config/mingw.rb +134 -10
- data/rakelib/lib/config/pkgman/linux.rb +144 -0
- data/rakelib/lib/config/pkgman/macosx.rb +122 -0
- data/rakelib/lib/config/unixish.rb +47 -20
- data/rakelib/lib/config/{netbsd.rb → unknown.rb} +3 -2
- data/rakelib/lib/config.rb +301 -88
- data/rakelib/lib/core/package.rb +47 -49
- data/rakelib/lib/director/aui_manager.rb +1 -1
- data/rakelib/lib/director/dialog.rb +8 -0
- data/rakelib/lib/director/gdicommon.rb +1 -2
- data/rakelib/lib/director/grid_ctrl.rb +2 -2
- data/rakelib/lib/director/richtext_composite_object.rb +2 -4
- data/rakelib/lib/director/secret_store.rb +117 -0
- data/rakelib/lib/director/tree_event.rb +2 -2
- data/rakelib/lib/generate/doc/secret_store.yaml +55 -0
- data/rakelib/lib/generate/doc.rb +29 -14
- data/rakelib/lib/generate/interface.rb +4 -2
- data/rakelib/lib/specs/interfaces.rb +1 -0
- data/rakelib/lib/swig_runner.rb +11 -11
- data/rakelib/lib/typemap/common.rb +10 -0
- data/rakelib/prepost.rake +17 -5
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +18 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +5 -5
- data/rakelib/yard/yard/relative_markdown_links.rb +7 -1
- data/samples/sampler/sample.rb +2 -0
- data/tests/lib/wxapp_runner.rb +1 -1
- data/tests/test_config.rb +7 -4
- data/tests/test_secret_store.rb +83 -0
- metadata +46 -23
- data/ext/mkrf_conf_srcgem.rb +0 -67
- data/rakelib/run.rake +0 -52
data/rakelib/lib/config.rb
CHANGED
@@ -9,6 +9,9 @@
|
|
9
9
|
require 'rbconfig'
|
10
10
|
require 'fileutils'
|
11
11
|
require 'json'
|
12
|
+
require 'open3'
|
13
|
+
require 'monitor'
|
14
|
+
require 'plat4m'
|
12
15
|
|
13
16
|
module FileUtils
|
14
17
|
# add convenience methods
|
@@ -65,7 +68,8 @@ module WXRuby3
|
|
65
68
|
'sodir' => '$siterubyverarch',
|
66
69
|
}
|
67
70
|
|
68
|
-
CFG_KEYS.concat(%w{wxwin wxxml wxwininstdir with-wxwin with-debug swig doxygen})
|
71
|
+
CFG_KEYS.concat(%w{wxwin wxxml wxwininstdir with-wxwin with-debug swig doxygen git})
|
72
|
+
WXW_SYS_KEY = 'with-system-wxwin'
|
69
73
|
CONFIG.merge!({
|
70
74
|
'wxwin' => ENV['WXWIN'] || '',
|
71
75
|
'wxxml' => ENV['WXXML'] || '',
|
@@ -73,14 +77,16 @@ module WXRuby3
|
|
73
77
|
'with-wxwin' => !!ENV['WITH_WXWIN'],
|
74
78
|
'with-debug' => ((ENV['WXRUBY_DEBUG'] || '') == '1'),
|
75
79
|
'swig' => ENV['WXRUBY_SWIG'] || 'swig',
|
76
|
-
'doxygen' => ENV['WXRUBY_DOXYGEN'] || 'doxygen'
|
80
|
+
'doxygen' => ENV['WXRUBY_DOXYGEN'] || 'doxygen',
|
81
|
+
'git' => ENV['WXRUBY_GIT'] || 'git'
|
77
82
|
})
|
83
|
+
CONFIG['autoinstall'] = (ENV['WXRUBY_AUTOINSTALL'] != '0') if ENV['WXRUBY_AUTOINSTALL']
|
78
84
|
BUILD_CFG = '.wxconfig'
|
79
85
|
|
80
86
|
# Ruby 2.5 is the minimum version for wxRuby3
|
81
87
|
__rb_ver = RUBY_VERSION.split('.').collect {|v| v.to_i}
|
82
88
|
if (__rb_major = __rb_ver.shift) < 2 || (__rb_major == 2 && __rb_ver.shift < 5)
|
83
|
-
|
89
|
+
$stderr.puts 'ERROR: wxRuby3 requires Ruby >= 2.5.0!'
|
84
90
|
exit(1)
|
85
91
|
end
|
86
92
|
|
@@ -111,38 +117,186 @@ module WXRuby3
|
|
111
117
|
|
112
118
|
module Config
|
113
119
|
|
114
|
-
def
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
+
def self.command_to_s(*cmd)
|
121
|
+
txt = if ::Hash === cmd.first
|
122
|
+
cmd = cmd.dup
|
123
|
+
env = cmd.shift
|
124
|
+
env.collect { |k, v| "#{k}=#{v}" }.join(' ') << ' '
|
125
|
+
else
|
126
|
+
''
|
127
|
+
end
|
128
|
+
txt << cmd.join(' ')
|
129
|
+
end
|
130
|
+
|
131
|
+
def run_silent?
|
132
|
+
!!ENV['WXRUBY_RUN_SILENT']
|
133
|
+
end
|
134
|
+
|
135
|
+
def silent_log_name
|
136
|
+
ENV['WXRUBY_RUN_SILENT'] || 'silent_run.log'
|
137
|
+
end
|
138
|
+
|
139
|
+
def log_progress(msg)
|
140
|
+
run_silent? ? silent_runner.log(msg) : $stdout.puts(msg)
|
141
|
+
end
|
142
|
+
|
143
|
+
class SilentRunner < Monitor
|
144
|
+
|
145
|
+
PROGRESS_CH = '.|/-\\|/-\\|'
|
146
|
+
|
147
|
+
def initialize
|
148
|
+
super
|
149
|
+
@cout = 0
|
150
|
+
@incremental = false
|
151
|
+
end
|
152
|
+
|
153
|
+
def incremental(f=true)
|
154
|
+
synchronize do
|
155
|
+
@cout = 0
|
156
|
+
@incremental = !!f
|
120
157
|
end
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
cmd << '2> ' << (windows? ? 'NULL' : '/dev/null')
|
127
|
-
when :err, :all
|
128
|
-
cmd << '2>&1'
|
158
|
+
end
|
159
|
+
|
160
|
+
def run(*cmd, **kwargs)
|
161
|
+
synchronize do
|
162
|
+
@cout = 0 unless @incremental
|
129
163
|
end
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
164
|
+
output = nil
|
165
|
+
verbose = kwargs.delete(:verbose)
|
166
|
+
capture = kwargs.delete(:capture)
|
167
|
+
if (Config.instance.verbose? && verbose != false) || !capture
|
168
|
+
txt = Config.command_to_s(*cmd)
|
169
|
+
if Config.instance.verbose? && verbose != false
|
170
|
+
$stdout.puts txt
|
171
|
+
end
|
172
|
+
if !capture
|
173
|
+
silent_log { |f| f.puts txt }
|
174
|
+
end
|
175
|
+
end
|
176
|
+
if capture
|
177
|
+
if capture == :out || capture == :no_err
|
178
|
+
kwargs[:err] = (Config.instance.windows? ? 'NULL' : '/dev/null') if capture == :no_err
|
179
|
+
Open3.popen2(*cmd, **kwargs) do |_ins, os, tw|
|
180
|
+
output = silent_runner(os)
|
181
|
+
tw.value
|
182
|
+
end
|
183
|
+
else
|
184
|
+
Open3.popen2e(*cmd, **kwargs) do |_ins, eos, tw|
|
185
|
+
output = silent_runner(eos)
|
186
|
+
tw.value
|
187
|
+
end
|
188
|
+
end
|
189
|
+
output.join
|
190
|
+
else
|
191
|
+
rc = silent_log do |fout|
|
192
|
+
Open3.popen2e(*cmd, **kwargs) do |_ins, eos, tw|
|
193
|
+
silent_runner(eos, fout)
|
194
|
+
v = tw.value.exitstatus
|
195
|
+
fout.puts "-> Exit code: #{v}"
|
196
|
+
v
|
141
197
|
end
|
142
198
|
end
|
199
|
+
rc
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
def log(msg)
|
204
|
+
silent_log { |f| f.puts(msg) }
|
205
|
+
end
|
206
|
+
|
207
|
+
private
|
208
|
+
|
209
|
+
def silent_runner(os, output=[])
|
210
|
+
synchronize do
|
211
|
+
if @incremental
|
212
|
+
@cout += 1
|
213
|
+
$stdout.print "#{PROGRESS_CH[@cout%10]}\b"
|
214
|
+
$stdout.flush
|
215
|
+
end
|
216
|
+
end
|
217
|
+
os.each do |ln|
|
218
|
+
synchronize do
|
219
|
+
unless @incremental
|
220
|
+
@cout += 1
|
221
|
+
$stdout.print "#{PROGRESS_CH[@cout%10]}\b"
|
222
|
+
$stdout.flush
|
223
|
+
end
|
224
|
+
output << ln
|
225
|
+
end
|
226
|
+
end
|
227
|
+
output
|
228
|
+
end
|
229
|
+
|
230
|
+
def silent_log(&block)
|
231
|
+
File.open(Config.instance.silent_log_name, 'a') do |fout|
|
232
|
+
block.call(fout)
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
end
|
237
|
+
|
238
|
+
def silent_runner
|
239
|
+
@silent_runner ||= SilentRunner.new
|
240
|
+
end
|
241
|
+
private :silent_runner
|
242
|
+
|
243
|
+
def do_silent_run(*cmd, **kwargs)
|
244
|
+
silent_runner.run(*cmd, **kwargs)
|
245
|
+
end
|
246
|
+
private :do_silent_run
|
247
|
+
|
248
|
+
def do_silent_run_step(*cmd, **kwargs)
|
249
|
+
silent_runner.run_one(*cmd, **kwargs)
|
250
|
+
end
|
251
|
+
private :do_silent_run_step
|
252
|
+
|
253
|
+
def set_silent_run_incremental
|
254
|
+
silent_runner.incremental
|
255
|
+
end
|
256
|
+
|
257
|
+
def set_silent_run_batched
|
258
|
+
silent_runner.incremental(false)
|
259
|
+
end
|
260
|
+
|
261
|
+
def do_run(*cmd, capture: nil)
|
262
|
+
output = nil
|
263
|
+
if run_silent?
|
264
|
+
output = do_silent_run(exec_env, *cmd, capture: capture)
|
265
|
+
unless capture
|
266
|
+
fail "Command failed with status (#{rc}): #{Config.command_to_s(*cmd)}" unless output == 0
|
143
267
|
end
|
144
268
|
else
|
145
|
-
|
269
|
+
if capture
|
270
|
+
env_bup = exec_env.keys.inject({}) do |h, ev|
|
271
|
+
h[ev] = ENV[ev] ? ENV[ev].dup : nil
|
272
|
+
h
|
273
|
+
end
|
274
|
+
case capture
|
275
|
+
when :out
|
276
|
+
# default
|
277
|
+
when :no_err
|
278
|
+
# redirect stderr to null sink
|
279
|
+
cmd << '2> ' << (windows? ? 'NULL' : '/dev/null')
|
280
|
+
when :err, :all
|
281
|
+
cmd << '2>&1'
|
282
|
+
end
|
283
|
+
begin
|
284
|
+
# setup ENV for child execution
|
285
|
+
ENV.update(Config.instance.exec_env)
|
286
|
+
output = `#{cmd.join(' ')}`
|
287
|
+
ensure
|
288
|
+
# restore ENV
|
289
|
+
env_bup.each_pair do |k,v|
|
290
|
+
if v
|
291
|
+
ENV[k] = v
|
292
|
+
else
|
293
|
+
ENV.delete(k)
|
294
|
+
end
|
295
|
+
end
|
296
|
+
end
|
297
|
+
else
|
298
|
+
Rake.sh(exec_env, *cmd, verbose: verbose?)
|
299
|
+
end
|
146
300
|
end
|
147
301
|
output
|
148
302
|
end
|
@@ -182,24 +336,32 @@ module WXRuby3
|
|
182
336
|
def expand(cmd)
|
183
337
|
`#{cmd}`
|
184
338
|
end
|
185
|
-
private :expand
|
186
339
|
|
187
|
-
def sh(*cmd, **kwargs)
|
188
|
-
|
340
|
+
def sh(*cmd, fail_on_error: false, **kwargs)
|
341
|
+
if run_silent?
|
342
|
+
rc = do_silent_run(*cmd, **kwargs)
|
343
|
+
fail "Command failed with status (#{rc}): #{Config.command_to_s(*cmd)}" if fail_on_error && rc != 0
|
344
|
+
rc == 0
|
345
|
+
elsif fail_on_error
|
346
|
+
Rake.sh(*cmd, **kwargs)
|
347
|
+
else
|
348
|
+
Rake.sh(*cmd, **kwargs) { |ok,_| !!ok }
|
349
|
+
end
|
189
350
|
end
|
190
|
-
private :sh
|
191
351
|
alias :bash :sh
|
192
|
-
private :bash
|
193
352
|
|
194
353
|
def test(*tests, **options)
|
195
354
|
errors = 0
|
355
|
+
excludes = (ENV['WXRUBY_TEST_EXCLUDE'] || '').split(':')
|
196
356
|
tests = Dir.glob(File.join(Config.instance.test_dir, '*.rb')) if tests.empty?
|
197
357
|
tests.each do |test|
|
198
|
-
unless
|
199
|
-
|
200
|
-
|
358
|
+
unless excludes.include?(File.basename(test, '.*'))
|
359
|
+
unless File.exist?(test)
|
360
|
+
test = File.join(Config.instance.test_dir, test)
|
361
|
+
test = Dir.glob(test+'.rb').shift || test unless File.exist?(test)
|
362
|
+
end
|
363
|
+
Rake.sh(Config.instance.exec_env, *make_ruby_cmd(test)) { |ok,status| errors += 1 unless ok }
|
201
364
|
end
|
202
|
-
Rake.sh(Config.instance.exec_env, *make_ruby_cmd(test)) { |ok,status| errors += 1 unless ok }
|
203
365
|
end
|
204
366
|
fail "ERRORS: ##{errors} test scripts failed." if errors>0
|
205
367
|
end
|
@@ -209,26 +371,60 @@ module WXRuby3
|
|
209
371
|
Rake.sh(Config.instance.exec_env, *make_ruby_cmd('-x', irb_cmd), **options)
|
210
372
|
end
|
211
373
|
|
212
|
-
def
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
374
|
+
def check_wx_config
|
375
|
+
false
|
376
|
+
end
|
377
|
+
|
378
|
+
def wx_config(_option)
|
379
|
+
nil
|
217
380
|
end
|
218
381
|
|
219
|
-
def
|
220
|
-
|
221
|
-
|
382
|
+
def check_tool_pkgs
|
383
|
+
[]
|
384
|
+
end
|
385
|
+
|
386
|
+
def download_file(_url, _dest)
|
387
|
+
raise NoMethodError
|
388
|
+
end
|
389
|
+
|
390
|
+
def install_prerequisites
|
391
|
+
pkg_deps = check_tool_pkgs
|
392
|
+
if get_config('autoinstall') == false
|
393
|
+
$stderr.puts <<~__ERROR_TXT
|
394
|
+
ERROR: This system lacks installed versions of the following required software packages:
|
395
|
+
#{pkg_deps.join(', ')}
|
396
|
+
|
397
|
+
Install these packages and try again.
|
398
|
+
__ERROR_TXT
|
222
399
|
exit(1)
|
223
400
|
end
|
401
|
+
pkg_deps
|
224
402
|
end
|
225
403
|
|
226
|
-
|
227
|
-
|
404
|
+
# only called after src gem build
|
405
|
+
def cleanup_prerequisites
|
406
|
+
# noop
|
228
407
|
end
|
229
408
|
|
230
|
-
def
|
231
|
-
|
409
|
+
def wants_autoinstall?
|
410
|
+
flag = get_config('autoinstall')
|
411
|
+
if flag.nil?
|
412
|
+
$stdout.puts <<~__Q_TEXT
|
413
|
+
|
414
|
+
[ --- ATTENTION! --- ]
|
415
|
+
wxRuby3 requires some software packages to be installed before being able to continue building.
|
416
|
+
If you like these can be automatically installed next (if you are building the source gem the
|
417
|
+
software will be removed again after building finishes).
|
418
|
+
Do you want to have the required software installed now? [yN] :
|
419
|
+
__Q_TEXT
|
420
|
+
answer = $stdin.gets(chomp: true).strip
|
421
|
+
while !answer.empty? && !%w[Y y N n].include?(answer)
|
422
|
+
$stdout.puts 'Please answer Y/y or N/n [Yn] : '
|
423
|
+
answer = $stdin.gets(chomp: true).strip
|
424
|
+
end
|
425
|
+
flag = %w[Y y].include?(answer)
|
426
|
+
end
|
427
|
+
flag
|
232
428
|
end
|
233
429
|
|
234
430
|
def get_config(key)
|
@@ -253,16 +449,22 @@ module WXRuby3
|
|
253
449
|
def get_rpath_origin
|
254
450
|
''
|
255
451
|
end
|
452
|
+
protected :get_rpath_origin
|
256
453
|
|
257
|
-
def
|
454
|
+
def patch_rpath(_shlib, *)
|
258
455
|
true
|
259
456
|
end
|
457
|
+
protected :patch_rpath
|
260
458
|
|
261
|
-
def
|
459
|
+
def update_shlib_loadpaths(_shlib)
|
262
460
|
true
|
263
461
|
end
|
264
462
|
|
265
|
-
def
|
463
|
+
def update_shlib_ruby_libpath(_shlib)
|
464
|
+
true
|
465
|
+
end
|
466
|
+
|
467
|
+
def update_shlib_wxwin_libpaths(_shlib, _deplibs)
|
266
468
|
true
|
267
469
|
end
|
268
470
|
|
@@ -304,15 +506,23 @@ module WXRuby3
|
|
304
506
|
end
|
305
507
|
|
306
508
|
def save
|
509
|
+
cfg = WXRuby3::CONFIG.dup
|
510
|
+
wxw_system = !!cfg.delete(WXW_SYS_KEY)
|
511
|
+
cfg['wxwin'] = '@system' if wxw_system
|
307
512
|
File.open(build_cfg, 'w') do |f|
|
308
|
-
f << JSON.pretty_generate(
|
513
|
+
f << JSON.pretty_generate(cfg)
|
309
514
|
end
|
310
515
|
end
|
311
516
|
|
312
517
|
def load
|
313
518
|
if File.file?(build_cfg)
|
314
519
|
File.open(build_cfg, 'r') do |f|
|
315
|
-
|
520
|
+
cfg = JSON.load(f.read)
|
521
|
+
if cfg['wxwin'] == '@system'
|
522
|
+
cfg[WXW_SYS_KEY] = true
|
523
|
+
cfg.delete('wxwin')
|
524
|
+
end
|
525
|
+
WXRuby3::CONFIG.merge!(cfg)
|
316
526
|
end
|
317
527
|
end
|
318
528
|
end
|
@@ -325,10 +535,8 @@ module WXRuby3
|
|
325
535
|
case RUBY_PLATFORM
|
326
536
|
when /mingw/
|
327
537
|
:mingw
|
328
|
-
when /
|
329
|
-
:
|
330
|
-
when /netbsd/
|
331
|
-
:netbsd
|
538
|
+
when /freebsd/
|
539
|
+
:freebsd
|
332
540
|
when /darwin/
|
333
541
|
:macosx
|
334
542
|
when /linux/
|
@@ -341,22 +549,33 @@ module WXRuby3
|
|
341
549
|
def create
|
342
550
|
load # load the build config (if any)
|
343
551
|
klass = Class.new do
|
344
|
-
include Config
|
345
|
-
|
346
552
|
include FileUtils
|
347
553
|
|
554
|
+
include Config
|
555
|
+
|
348
556
|
def initialize
|
349
557
|
@ruby_exe = RB_CONFIG["ruby_install_name"]
|
350
558
|
|
351
|
-
@
|
352
|
-
@platform =
|
353
|
-
|
559
|
+
@sysinfo = Plat4m.current rescue nil
|
560
|
+
@platform = if @sysinfo
|
561
|
+
case @sysinfo.os.id
|
562
|
+
when :darwin
|
563
|
+
:macosx
|
564
|
+
when :windows
|
565
|
+
RUBY_PLATFORM =~ /mingw/ ? :mingw : :unknown
|
566
|
+
else
|
567
|
+
@sysinfo.os.id
|
568
|
+
end
|
569
|
+
else
|
570
|
+
:unknown
|
571
|
+
end
|
572
|
+
require_relative File.join('config', @platform.to_s)
|
354
573
|
self.class.include(WXRuby3::Config::Platform)
|
355
574
|
|
356
575
|
init # initialize settings
|
357
576
|
end
|
358
577
|
|
359
|
-
attr_reader :ruby_exe, :
|
578
|
+
attr_reader :ruby_exe, :sysinfo, :platform, :helper_modules, :helper_inits, :include_modules, :verbosity
|
360
579
|
attr_reader :release_build, :debug_build, :verbose_debug, :no_deprecate
|
361
580
|
attr_reader :ruby_cppflags, :ruby_ldflags, :ruby_libs, :extra_cflags, :extra_cppflags, :extra_ldflags,
|
362
581
|
:extra_libs, :cpp_out_flag, :link_output_flag, :obj_ext, :dll_ext,
|
@@ -403,11 +622,6 @@ module WXRuby3
|
|
403
622
|
|
404
623
|
# Extra swig helper files to be built
|
405
624
|
@helper_modules = %w|RubyStockObjects|
|
406
|
-
# if macosx?
|
407
|
-
# %w|RubyStockObjects Mac|
|
408
|
-
# else
|
409
|
-
# %w|RubyStockObjects|
|
410
|
-
# end
|
411
625
|
# helper to initialize on startup (stock objects can only be initialized after App creation)
|
412
626
|
@helper_inits = @helper_modules - %w|RubyStockObjects|
|
413
627
|
|
@@ -431,8 +645,10 @@ module WXRuby3
|
|
431
645
|
@ruby_includes = [ RB_CONFIG["rubyhdrdir"],
|
432
646
|
RB_CONFIG["sitehdrdir"],
|
433
647
|
RB_CONFIG["vendorhdrdir"],
|
434
|
-
|
435
|
-
|
648
|
+
RB_CONFIG['rubyarchhdrdir'] ?
|
649
|
+
RB_CONFIG['rubyarchhdrdir'] :
|
650
|
+
File.join(RB_CONFIG["rubyhdrdir"], RB_CONFIG['arch'])
|
651
|
+
].compact
|
436
652
|
@ruby_includes << File.join(@wxruby_path, 'include')
|
437
653
|
|
438
654
|
@ruby_cppflags = [RB_CONFIG["CFLAGS"]].compact
|
@@ -448,7 +664,7 @@ module WXRuby3
|
|
448
664
|
@obj_ext = RB_CONFIG["OBJEXT"]
|
449
665
|
@dll_ext = RB_CONFIG['DLEXT']
|
450
666
|
|
451
|
-
# Exclude
|
667
|
+
# Exclude certain classes from being built, even if they are present
|
452
668
|
# in the configuration of wxWidgets.
|
453
669
|
if ENV['WXRUBY_EXCLUDED']
|
454
670
|
ENV['WXRUBY_EXCLUDED'].split(",").each { |classname| exclude_module(classname) }
|
@@ -482,10 +698,9 @@ module WXRuby3
|
|
482
698
|
|
483
699
|
def report
|
484
700
|
if @debug_build
|
485
|
-
|
486
|
-
puts "Enabled debugging output"
|
701
|
+
log_progress("Enabled DEBUG build")
|
487
702
|
else
|
488
|
-
|
703
|
+
log_progress("Enabled RELEASE build")
|
489
704
|
end
|
490
705
|
end
|
491
706
|
|
@@ -513,16 +728,12 @@ module WXRuby3
|
|
513
728
|
@wx_abi_version || ''
|
514
729
|
end
|
515
730
|
|
516
|
-
def cygwin?
|
517
|
-
@platform == :cygwin
|
518
|
-
end
|
519
|
-
|
520
731
|
def mingw?
|
521
732
|
@platform == :mingw
|
522
733
|
end
|
523
734
|
|
524
|
-
def
|
525
|
-
@platform == :
|
735
|
+
def freebsd?
|
736
|
+
@platform == :freebsd
|
526
737
|
end
|
527
738
|
|
528
739
|
def macosx?
|
@@ -534,7 +745,7 @@ module WXRuby3
|
|
534
745
|
end
|
535
746
|
|
536
747
|
def windows?
|
537
|
-
mingw?
|
748
|
+
mingw?
|
538
749
|
end
|
539
750
|
|
540
751
|
def ldflags(_target)
|
@@ -550,7 +761,7 @@ module WXRuby3
|
|
550
761
|
end
|
551
762
|
|
552
763
|
def do_bootstrap
|
553
|
-
|
764
|
+
install_prerequisites
|
554
765
|
# do we have a local wxWidgets tree already?
|
555
766
|
unless File.directory?(File.join(ext_path, 'wxWidgets', 'docs', 'doxygen'))
|
556
767
|
wx_checkout
|
@@ -567,6 +778,11 @@ module WXRuby3
|
|
567
778
|
respawn_rake
|
568
779
|
end
|
569
780
|
|
781
|
+
def cleanup_bootstrap
|
782
|
+
rm_rf(File.join(ext_path, 'wxWidgets'), verbose: !WXRuby3.config.run_silent?) if File.directory?(File.join(ext_path, 'wxWidgets'))
|
783
|
+
cleanup_prerequisites
|
784
|
+
end
|
785
|
+
|
570
786
|
# Testing the relevant wxWidgets setup.h file to see what
|
571
787
|
# features are supported.
|
572
788
|
|
@@ -638,10 +854,7 @@ module WXRuby3
|
|
638
854
|
private :create
|
639
855
|
|
640
856
|
def instance
|
641
|
-
|
642
|
-
@instance = create
|
643
|
-
end
|
644
|
-
@instance
|
857
|
+
@instance ||= create
|
645
858
|
end
|
646
859
|
|
647
860
|
def get_config(key)
|
data/rakelib/lib/core/package.rb
CHANGED
@@ -604,55 +604,53 @@ module WXRuby3
|
|
604
604
|
def generate_core_doc
|
605
605
|
script = <<~__SCRIPT
|
606
606
|
require 'wx'
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
__HEREDOC
|
655
|
-
end
|
607
|
+
STDOUT.puts \<<~__HEREDOC
|
608
|
+
# ----------------------------------------------------------------------------
|
609
|
+
# This file is automatically generated by the WXRuby3 documentation
|
610
|
+
# generator. Do not alter this file.
|
611
|
+
# ----------------------------------------------------------------------------
|
612
|
+
|
613
|
+
|
614
|
+
module Wx
|
615
|
+
|
616
|
+
# wxRuby version string
|
617
|
+
WXRUBY_VERSION = '\#{Wx::WXRUBY_VERSION}'
|
618
|
+
|
619
|
+
# wxRuby version release type (alpha, beta, rc)
|
620
|
+
WXRUBY_RELEASE_TYPE = '\#{Wx::WXRUBY_RELEASE_TYPE}'
|
621
|
+
# wxRuby major version number
|
622
|
+
WXRUBY_MAJOR = \#{Wx::WXRUBY_MAJOR}
|
623
|
+
# wxRuby minor version number
|
624
|
+
WXRUBY_MINOR = \#{Wx::WXRUBY_MINOR}
|
625
|
+
# wxRuby release number
|
626
|
+
WXRUBY_RELEASE = \#{Wx::WXRUBY_RELEASE}
|
627
|
+
|
628
|
+
# Convenience string for WxWidgets version info
|
629
|
+
WXWIDGETS_VERSION = '\#{Wx::WXWIDGETS_VERSION}'
|
630
|
+
|
631
|
+
# Integer constant reflecting the major version of the wxWidgets release used to build wxRuby
|
632
|
+
WXWIDGETS_MAJOR_VERSION = \#{Wx::WXWIDGETS_MAJOR_VERSION}
|
633
|
+
|
634
|
+
# Integer constant reflecting the minor version of the wxWidgets release used to build wxRuby
|
635
|
+
WXWIDGETS_MINOR_VERSION = \#{Wx::WXWIDGETS_MINOR_VERSION}
|
636
|
+
|
637
|
+
# Integer constant reflecting the release number of the wxWidgets release used to build wxRuby
|
638
|
+
WXWIDGETS_RELEASE_NUMBER = \#{Wx::WXWIDGETS_RELEASE_NUMBER}
|
639
|
+
|
640
|
+
# Integer constant reflecting the sub-release number of the wxWidgets release used to build wxRuby
|
641
|
+
WXWIDGETS_SUBRELEASE_NUMBER = \#{Wx::WXWIDGETS_SUBRELEASE_NUMBER}
|
642
|
+
|
643
|
+
# Integer constant reflecting the wxWidgets wxDEBUG_LEVEL
|
644
|
+
WXWIDGETS_DEBUG_LEVEL = \#{Wx::WXWIDGETS_DEBUG_LEVEL}
|
645
|
+
|
646
|
+
# Boolean constant indicating if wxRuby was build in debug (true) or release (false) mode
|
647
|
+
DEBUG = \#{Wx::DEBUG}
|
648
|
+
|
649
|
+
# Platform id of the wxWidgets port used to build wxRuby
|
650
|
+
PLATFORM = '\#{Wx::PLATFORM}'
|
651
|
+
|
652
|
+
end
|
653
|
+
__HEREDOC
|
656
654
|
__SCRIPT
|
657
655
|
begin
|
658
656
|
tmpfile = Tempfile.new('script')
|
@@ -53,7 +53,7 @@ module WXRuby3
|
|
53
53
|
m_actionWindow = NULL;
|
54
54
|
m_hoverButton = NULL;
|
55
55
|
m_art = new wxAuiDefaultDockArt;
|
56
|
-
m_hintWnd = NULL;
|
56
|
+
#{Config.instance.wx_version < '3.3.0' ? 'm_hintWnd = NULL;' : ''}
|
57
57
|
m_flags = wxAUI_MGR_DEFAULT;
|
58
58
|
m_hasMaximized = false;
|
59
59
|
m_dockConstraintX = 0.3;
|