From f98a05c7387ebdc7d2b1998d15287a9929c1b56a Mon Sep 17 00:00:00 2001 From: vickash Date: Sun, 11 May 2025 22:35:05 -0400 Subject: [PATCH] Add build config for Luckfox Pico embedded SBC --- build_config/luckfox_pico.rb | 104 +++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 build_config/luckfox_pico.rb diff --git a/build_config/luckfox_pico.rb b/build_config/luckfox_pico.rb new file mode 100644 index 000000000..10ca5a414 --- /dev/null +++ b/build_config/luckfox_pico.rb @@ -0,0 +1,104 @@ +# Cross Compiling configuration for Luckfox Pico embedded SBC. +# +# To build on Ubuntu x86_64: rake MRUBY_CONFIG=build_config/luckfox_pico.rb +# Uses Buildroot SDK for this board. Binaries run on the corresponding Linux image. +# Requires: https://github.com/LuckfoxTECH/luckfox-pico +# +# NOTE: default config includes all standard mrbgems, EXCEPT: mruby-cmath +# +MRuby::CrossBuild.new("luckfox_pico") do |conf| + # Clone the luckfox-pico repo above next to (same directory level) as mruby. + SDK_BASE = File.expand_path("../../../", File.expand_path(__FILE__)) + "/luckfox-pico" + TOOLCHAIN_BASE = "#{SDK_BASE}/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf" + SYSROOT = "#{TOOLCHAIN_BASE}/arm-rockchip830-linux-uclibcgnueabihf/sysroot" + + toolchain :gcc + + # C compiler settings + conf.cc do |cc| + cc.command = "#{TOOLCHAIN_BASE}/bin/arm-rockchip830-linux-uclibcgnueabihf-gcc" + + cc.include_paths << "#{TOOLCHAIN_BASE}/lib/gcc/arm-rockchip830-linux-uclibcgnueabihf/8.3.0/include" + cc.include_paths << "#{TOOLCHAIN_BASE}/lib/gcc/arm-rockchip830-linux-uclibcgnueabihf/8.3.0/include-fixed" + cc.include_paths << "#{TOOLCHAIN_BASE}/arm-rockchip830-linux-uclibcgnueabihf/include/c++/8.3.0/arm-rockchip830-linux-uclibcgnueabihf" + cc.include_paths << "#{SYSROOT}/usr/include" + + cc.flags << ["-march=armv7-a", "-mfpu=neon", "-mfloat-abi=hard"] + cc.flags << ["-O2", "-fPIC"] + cc.flags << ["-D_LARGEFILE_SOURCE", "-D_LARGEFILE64_SOURCE", "-D_FILE_OFFSET_BITS=64", "-ffunction-sections", "-fdata-sections"] + cc.flags << ["-Wl,--copy-dt-needed-entries", "-Wl,-lc,-lgcc_s"] + end + + # Linker settings + conf.linker do |linker| + linker.command = cc.command + linker.library_paths << "#{TOOLCHAIN_BASE}/arm-rockchip830-linux-uclibcgnueabihf/lib" + linker.flags = cc.flags + end + + # Archiver settings + conf.archiver do |archiver| + archiver.command = "#{TOOLCHAIN_BASE}/bin/arm-rockchip830-linux-uclibcgnueabihf-ar" + end + + # Do not build executable test + conf.build_mrbtest_lib_only + + # Disable C++ exception + conf.disable_cxx_exception + + # All standard gems. + conf.gem 'mrbgems/mruby-array-ext/' + conf.gem 'mrbgems/mruby-bigint/' + conf.gem 'mrbgems/mruby-bin-config/' + conf.gem 'mrbgems/mruby-bin-debugger/' + conf.gem 'mrbgems/mruby-bin-mirb/' + conf.gem 'mrbgems/mruby-bin-mrbc/' + conf.gem 'mrbgems/mruby-bin-mruby/' + conf.gem 'mrbgems/mruby-bin-strip/' + conf.gem 'mrbgems/mruby-binding/' + conf.gem 'mrbgems/mruby-catch/' + conf.gem 'mrbgems/mruby-class-ext/' + # conf.gem 'mrbgems/mruby-cmath/' + conf.gem 'mrbgems/mruby-compar-ext/' + conf.gem 'mrbgems/mruby-compiler/' + conf.gem 'mrbgems/mruby-complex/' + conf.gem 'mrbgems/mruby-data/' + conf.gem 'mrbgems/mruby-dir/' + conf.gem 'mrbgems/mruby-enum-chain/' + conf.gem 'mrbgems/mruby-enum-ext/' + conf.gem 'mrbgems/mruby-enum-lazy/' + conf.gem 'mrbgems/mruby-enumerator/' + conf.gem 'mrbgems/mruby-errno/' + conf.gem 'mrbgems/mruby-error/' + conf.gem 'mrbgems/mruby-eval/' + conf.gem 'mrbgems/mruby-exit/' + conf.gem 'mrbgems/mruby-fiber/' + conf.gem 'mrbgems/mruby-hash-ext/' + conf.gem 'mrbgems/mruby-io/' + conf.gem 'mrbgems/mruby-kernel-ext/' + conf.gem 'mrbgems/mruby-math/' + conf.gem 'mrbgems/mruby-metaprog/' + conf.gem 'mrbgems/mruby-method/' + conf.gem 'mrbgems/mruby-numeric-ext/' + conf.gem 'mrbgems/mruby-object-ext/' + conf.gem 'mrbgems/mruby-objectspace/' + conf.gem 'mrbgems/mruby-os-memsize/' + conf.gem 'mrbgems/mruby-pack/' + conf.gem 'mrbgems/mruby-proc-binding/' + conf.gem 'mrbgems/mruby-proc-ext/' + conf.gem 'mrbgems/mruby-random/' + conf.gem 'mrbgems/mruby-range-ext/' + conf.gem 'mrbgems/mruby-rational/' + conf.gem 'mrbgems/mruby-set/' + conf.gem 'mrbgems/mruby-sleep/' + conf.gem 'mrbgems/mruby-socket/' + conf.gem 'mrbgems/mruby-sprintf/' + conf.gem 'mrbgems/mruby-string-ext/' + conf.gem 'mrbgems/mruby-struct/' + conf.gem 'mrbgems/mruby-symbol-ext/' + # conf.gem 'mrbgems/mruby-test-inline-struct/' + # conf.gem 'mrbgems/mruby-test/' + conf.gem 'mrbgems/mruby-time/' + conf.gem 'mrbgems/mruby-toplevel-ext/' +end