81 lines
2.3 KiB
Ruby
Vendored
81 lines
2.3 KiB
Ruby
Vendored
# Cross Compiling configuration for the Sega Dreamcast
|
|
# https://dreamcast.wiki/Using_Ruby_for_Sega_Dreamcast_development
|
|
#
|
|
# Requires KallistiOS (KOS)
|
|
# http://gamedev.allusion.net/softprj/kos/
|
|
#
|
|
# This configuration has been improved to be used as KallistiOS Port (kos-ports)
|
|
# Updated: 2025-07-31
|
|
#
|
|
# Tested on GNU/Linux, macOS and Windows (MinGW-w64/MSYS2, Cygwin, DreamSDK)
|
|
# DreamSDK is based on both MinGW/MSYS and MinGW-w64/MSYS2: https://dreamsdk.org/
|
|
#
|
|
# Install mruby for Sega Dreamcast using the "mruby" kos-port.
|
|
# See: https://github.com/kallistios/kallistios
|
|
#
|
|
# If you want to see examples, check the /examples/dreamcast/mruby directory
|
|
# in the KallistiOS repository.
|
|
#
|
|
MRuby::CrossBuild.new("dreamcast") do |conf|
|
|
toolchain :gcc
|
|
|
|
# Getting critical environment variables
|
|
KOS_BASE = ENV["KOS_BASE"]
|
|
KOS_CC_BASE = ENV["KOS_CC_BASE"]
|
|
|
|
# Check environment variables
|
|
if KOS_BASE.to_s.empty?
|
|
raise "Error: KallistiOS is required; KOS_BASE need to be declared; Stop."
|
|
end
|
|
|
|
# Root directory for KallistiOS wrappers
|
|
# This will handle specific DreamSDK wrappers if needed
|
|
KOS_WRAPPERS_BASE = if ENV["ENVIRONMENT_NAME"] == "DreamSDK" && ENV["RAKE_AVAILABLE"] == "0"
|
|
"#{KOS_CC_BASE}/bin"
|
|
else
|
|
"#{KOS_BASE}/utils/build_wrappers"
|
|
end
|
|
|
|
# C compiler
|
|
conf.cc do |cc|
|
|
cc.command = "#{KOS_WRAPPERS_BASE}/kos-cc"
|
|
end
|
|
|
|
# C++ compiler
|
|
conf.cxx do |cxx|
|
|
cxx.command = "#{KOS_WRAPPERS_BASE}/kos-c++"
|
|
end
|
|
|
|
# Linker
|
|
conf.linker do |linker|
|
|
linker.command = "#{KOS_WRAPPERS_BASE}/kos-ld"
|
|
end
|
|
|
|
# Archiver
|
|
conf.archiver do |archiver|
|
|
archiver.command = "#{KOS_WRAPPERS_BASE}/kos-ar"
|
|
end
|
|
|
|
# No executables needed for KallistiOS
|
|
conf.bins = []
|
|
|
|
# Do not build test binaries
|
|
conf.build_mrbtest_lib_only
|
|
|
|
# Gemboxes
|
|
conf.gembox "default-no-stdio"
|
|
conf.gembox "stdlib-ext"
|
|
conf.gembox "metaprog"
|
|
|
|
# Additional Gems
|
|
# Currently unsupported on KallistiOS: "mruby-io", "mruby-dir", "mruby-socket"
|
|
conf.gem :core => "mruby-binding"
|
|
conf.gem :core => "mruby-catch"
|
|
conf.gem :core => "mruby-enum-chain"
|
|
conf.gem :core => "mruby-errno"
|
|
conf.gem :core => "mruby-error"
|
|
conf.gem :core => "mruby-exit"
|
|
conf.gem :core => "mruby-os-memsize"
|
|
conf.gem :core => "mruby-proc-binding"
|
|
conf.gem :core => "mruby-sleep"
|
|
end
|