mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
d1bffb902e
mruby-task GLib HAL
50 lines
1.8 KiB
Ruby
50 lines
1.8 KiB
Ruby
MRuby::Gem::Specification.new('mruby-task') do |spec|
|
|
spec.license = 'MIT'
|
|
spec.authors = 'mruby developers'
|
|
spec.summary = 'Cooperative multitasking with preemptive scheduling'
|
|
|
|
# Enable task scheduler globally (required for vm.c integration)
|
|
spec.build.defines << 'MRB_USE_TASK_SCHEDULER'
|
|
|
|
if spec.for_windows?
|
|
spec.linker.libraries << "winmm"
|
|
end
|
|
|
|
ports = spec.build.effective_ports
|
|
|
|
# ports/glib/ needs glib-2.0 (GSource, GMainContext, GRecMutex) and
|
|
# gthread-2.0 (GThread). On modern distros gthread-2.0 is a transparent
|
|
# alias for glib-2.0; on older ones it's a separate .pc that pulls in
|
|
# -lpthread, so query it separately.
|
|
if ports.include?('glib')
|
|
unless spec.search_package('glib-2.0') && spec.search_package('gthread-2.0')
|
|
abort <<~MSG
|
|
[mruby-task] conf.ports :glib selected but pkg-config could not find
|
|
glib-2.0 / gthread-2.0. Install the GLib development headers
|
|
(Debian/Ubuntu: libglib2.0-dev; Fedora: glib2-devel; Arch: glib2;
|
|
macOS Homebrew: glib). For non-default install locations, set
|
|
PKG_CONFIG_PATH before invoking rake.
|
|
MSG
|
|
end
|
|
end
|
|
|
|
# Optional demo tool that exercises the GLib HAL end-to-end (basic
|
|
# scheduling, priority ordering, timeslice preemption, auto-execution
|
|
# under a foreign GLib main loop). Default off; opt in from your
|
|
# build_config with:
|
|
#
|
|
# conf.cc.defines << 'MRB_TASK_BUILD_DEMO'
|
|
# conf.ports :glib
|
|
# conf.gem core: 'mruby-task'
|
|
#
|
|
# When enabled, `rake` produces bin/mruby-task-demo from
|
|
# tools/mruby-task-demo/. The define is only inspected here -- the
|
|
# demo's C source does not condition on it.
|
|
if spec.build.cc.defines.include?('MRB_TASK_BUILD_DEMO')
|
|
unless ports.include?('glib')
|
|
abort '[mruby-task] MRB_TASK_BUILD_DEMO requires conf.ports :glib'
|
|
end
|
|
spec.bins = %w(mruby_task_demo)
|
|
end
|
|
end
|