summaryrefslogtreecommitdiffhomepage
path: root/build_config
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-03-22 12:06:59 +0900
committerGitHub <[email protected]>2021-03-22 12:06:59 +0900
commitdc6e7d541402544642d422e5ef8fc46d443a6a5c (patch)
treeb904eeecdca3fdd9b12bd2a02725167bb593fa42 /build_config
parentcd047b2989926a170eb0d8a652305970fd83ec1e (diff)
parentad09c3951468c064468f27731b49d298a79946f5 (diff)
downloadmruby-dc6e7d541402544642d422e5ef8fc46d443a6a5c.tar.gz
mruby-dc6e7d541402544642d422e5ef8fc46d443a6a5c.zip
Merge pull request #5386 from LanzaSchneider/master
Add example for cross-compiling to Nintendo Switch
Diffstat (limited to 'build_config')
-rw-r--r--build_config/nintendo_switch.rb73
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