new package: mruby (#8090)

This commit is contained in:
xtkoba 2021-12-20 18:33:01 +09:00 committed by GitHub
parent b8b664e508
commit b0db448429
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 125 additions and 0 deletions

37
packages/mruby/build.sh Normal file
View File

@ -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/
}

View File

@ -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

View File

@ -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)