diff --git a/packages/mruby/build.sh b/packages/mruby/build.sh new file mode 100644 index 000000000..c0e2914c2 --- /dev/null +++ b/packages/mruby/build.sh @@ -0,0 +1,37 @@ +TERMUX_PKG_HOMEPAGE=https://mruby.org/ +TERMUX_PKG_DESCRIPTION="Lightweight implementation of the Ruby language" +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=3.0.0 +TERMUX_PKG_SRCURL=https://github.com/mruby/mruby/archive/${TERMUX_PKG_VERSION}.zip +TERMUX_PKG_SHA256=c7d95fdc05efdc8f5a0df4d5f0fbad5092596d61927c39515d03b8dde4743a8e +TERMUX_PKG_DEPENDS="ncurses, readline" +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_configure() { + : +} + +termux_step_make() { + export CC_FOR_TARGET="$CC" + export CFLAGS_FOR_TARGET="$CPPFLAGS $CFLAGS -DMRB_USE_READLINE" + export LDFLAGS_FOR_TARGET="$LDFLAGS -lncurses -lreadline" + unset CPPFLAGS CFLAGS LDFLAGS + export CC="$CC_FOR_BUILD" + export LD="$CC_FOR_BUILD" + + export ANDROID_NDK_HOME="$NDK" + export MRUBY_CONFIG=android-termux + rake +} + +termux_step_make_install() { + cd "$TERMUX_PKG_BUILDDIR/build/android-termux" + for f in bin/*; do + install -Dm700 -t $TERMUX_PREFIX/bin $f + done + for f in lib/*.a; do + install -Dm600 -t $TERMUX_PREFIX/lib $f + done + cp -a "$TERMUX_PKG_SRCDIR/include" $TERMUX_PREFIX/ +} diff --git a/packages/mruby/build_config.patch b/packages/mruby/build_config.patch new file mode 100644 index 000000000..d18400c50 --- /dev/null +++ b/packages/mruby/build_config.patch @@ -0,0 +1,16 @@ +--- a/build_config/android-termux.rb ++++ b/build_config/android-termux.rb +@@ -0,0 +1,13 @@ ++MRuby::CrossBuild.new('android-termux') do |conf| ++ params = { ++ :toolchain => :clang, ++ } ++ toolchain :android, params ++ ++ conf.cc.command = ENV['CC_FOR_TARGET'] || 'clang' ++ conf.cc.flags << ENV['CFLAGS_FOR_TARGET'] || '' ++ conf.linker.command = conf.cc.command ++ conf.linker.flags << ENV['LDFLAGS_FOR_TARGET'] || '' ++ ++ conf.gembox 'default' ++end diff --git a/packages/mruby/tasks-toolchains-android.rake.patch b/packages/mruby/tasks-toolchains-android.rake.patch new file mode 100644 index 000000000..8bf789b89 --- /dev/null +++ b/packages/mruby/tasks-toolchains-android.rake.patch @@ -0,0 +1,72 @@ +--- a/tasks/toolchains/android.rake ++++ b/tasks/toolchains/android.rake +@@ -218,7 +218,7 @@ + end + end + if Integer(@platform.rpartition('-')[2]) < 21 +- case arch ++ case nil + when /arm64-v8a/, /x86_64/, /mips64/ + raise NotImplementedError, "Platform (#{@platform}) has no implementation for architecture (#{arch})" + end +@@ -252,7 +252,7 @@ + def ar + case toolchain + when :gcc then bin_gcc('ar') +- when :clang then bin_gcc('ar') ++ when :clang then bin('llvm-ar') + end + end + +@@ -271,7 +271,7 @@ + when /mips/ then flags += %W(-march=mips32) + end + when :clang +- case arch ++ case nil + when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi) + when /armeabi/ then flags += %W(-target armv5te-none-linux-androideabi) + when /arm64-v8a/ then flags += %W(-target aarch64-none-linux-android) +@@ -282,7 +282,7 @@ + end + end + +- case arch ++ case nil + when /armeabi-v7a/ then flags += %W(-mfpu=#{armeabi_v7a_mfpu} -mfloat-abi=#{armeabi_v7a_mfloat_abi}) + when /armeabi/ then flags += %W(-mtune=xscale -msoft-float) + when /arm64-v8a/ then flags += %W() +@@ -304,12 +304,12 @@ + flags += %W(-U_WIN32 -U_WIN64) + end + +- flags += %W(-MMD -MP -D__android__ -DANDROID --sysroot="#{sysroot}") ++ flags += %W(-MMD -MP -D__android__ -DANDROID) + flags += ctarget + case toolchain + when :gcc + when :clang +- flags += %W(-gcc-toolchain "#{gcc_toolchain_path}" -Wno-invalid-command-line-argument -Wno-unused-command-line-argument) ++ flags += %W(-Wno-invalid-command-line-argument -Wno-unused-command-line-argument) + end + flags += %W(-fpic -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes) + +@@ -319,8 +319,6 @@ + def ldflags + flags = [] + +- flags += %W(--sysroot="#{sysroot}") +- + flags + end + +@@ -333,8 +331,7 @@ + when /armeabi-v7a/ then flags += %W(-Wl#{no_warn_mismatch}) + end + when :clang +- flags += %W(-gcc-toolchain "#{gcc_toolchain_path.to_s}") +- case arch ++ case nil + when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi -Wl,--fix-cortex-a8#{no_warn_mismatch}) + when /armeabi/ then flags += %W(-target armv5te-none-linux-androideabi) + when /arm64-v8a/ then flags += %W(-target aarch64-none-linux-android)