# Cross Compiling configuration for the Nintendo Switch, it requires Nintendo SDK # Tested on windows MRuby::CrossBuild.new('nintendo_switch_32bit') do |conf| conf.toolchain :clang NINTENDO_SDK_PATH = ENV['NINTENDO_SDK_ROOT'] include_paths = [ "#{NINTENDO_SDK_PATH}/Include", "#{NINTENDO_SDK_PATH}/Common/Configs/Targets/NX-NXFP2-a32/Include" ] conf.cc do |cc| cc.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/bin/nx-clang++" cc.include_paths += include_paths cc.flags += ['-fpic -fno-short-enums -ffunction-sections -fdata-sections -fno-common -fno-strict-aliasing -fomit-frame-pointer -fno-vectorize -funsigned-char -O2 -g -mno-implicit-float'] cc.defines += 'NN_SDK_BUILD_RELEASE' end conf.cxx do |cxx| cxx.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/bin/nx-clang++" cxx.include_paths += include_paths cxx.flags += ['-fpic -fno-short-enums -ffunction-sections -fdata-sections -fno-common -fno-strict-aliasing -fomit-frame-pointer -fno-vectorize -funsigned-char -O2 -g -mno-implicit-float'] cxx.defines += 'NN_SDK_BUILD_RELEASE' end conf.archiver do |archiver| archiver.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/nx/armv7l/bin/llvm-ar" end conf.linker do |linker| linker.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/nx/armv7l/bin/clang++" linker.libraries = [] end # Add your mrbgems end MRuby::CrossBuild.new('nintendo_switch_64bit') do |conf| conf.toolchain :clang NINTENDO_SDK_PATH = ENV['NINTENDO_SDK_ROOT'] include_paths = [ "#{NINTENDO_SDK_PATH}/Include", "#{NINTENDO_SDK_PATH}/Common/Configs/Targets/NX-NXFP2-a64/Include" ] conf.cc do |cc| cc.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/bin/nx-clang++" cc.include_paths += include_paths cc.flags += ['-fpic -fno-short-enums -ffunction-sections -fdata-sections -fno-common -fno-strict-aliasing -fomit-frame-pointer -fno-vectorize -funsigned-char -O2 -g -mno-implicit-float'] cc.flags << '--target=aarch64-nintendo-nx-elf' cc.defines += 'NN_SDK_BUILD_RELEASE' end conf.cxx do |cxx| cxx.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/bin/nx-clang++" cxx.include_paths += include_paths cxx.flags += ['-fpic -fno-short-enums -ffunction-sections -fdata-sections -fno-common -fno-strict-aliasing -fomit-frame-pointer -fno-vectorize -funsigned-char -O2 -g -mno-implicit-float'] cxx.flags << '--target=aarch64-nintendo-nx-elf' cxx.defines += 'NN_SDK_BUILD_RELEASE' end conf.archiver do |archiver| archiver.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/nx/aarch64/bin/llvm-ar" end conf.linker do |linker| linker.command = "#{NINTENDO_SDK_PATH}/Compilers/NX/nx/aarch64/bin/clang++" linker.libraries = [] end # Add your mrbgems end