diff options
| author | Lanza <[email protected]> | 2021-03-21 16:58:42 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-03-21 16:58:42 +0800 |
| commit | ad09c3951468c064468f27731b49d298a79946f5 (patch) | |
| tree | ae9f86795a5d4911a5828cc91f1159306a946590 /build_config/nintendo_switch.rb | |
| parent | e21f293de5d32af9349cef174df9f1e536adec16 (diff) | |
| download | mruby-ad09c3951468c064468f27731b49d298a79946f5.tar.gz mruby-ad09c3951468c064468f27731b49d298a79946f5.zip | |
Add example for cross-compiling to Nintendo Switch
Cross Compiling configuration for the Nintendo Switch, it requires Nintendo SDK
Diffstat (limited to 'build_config/nintendo_switch.rb')
| -rw-r--r-- | build_config/nintendo_switch.rb | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/build_config/nintendo_switch.rb b/build_config/nintendo_switch.rb new file mode 100644 index 000000000..09fddc8aa --- /dev/null +++ b/build_config/nintendo_switch.rb @@ -0,0 +1,73 @@ +# 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 |
