Trying to build for i686 native with gcc, or trying to cross build with i686 as the host architecture, the build fails. This seems to be a problem with either i686 gcc or the binutils (linker). For now build with clang for native and for the host when cross compiling to work around the problems. TODO: find the real reason why the compiler or linker packages for i686 are broken and switch back to using gcc.
132 lines
3.9 KiB
Bash
132 lines
3.9 KiB
Bash
# Template file for 'mruby'
|
|
pkgname=mruby
|
|
version=2.1.0
|
|
revision=2
|
|
hostmakedepends="bison clang ruby"
|
|
short_desc="Lightweight implementation of the Ruby language (Ruby 1.9)"
|
|
maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
|
|
license="MIT"
|
|
homepage="https://mruby.org/"
|
|
distfiles="https://github.com/mruby/mruby/archive/${version}.tar.gz>${pkgname}-${version}.tar.gz"
|
|
checksum=d6733742a07e553c52ab71df08b0604b3b571768bbc0c2729fbf0389d1bb5d13
|
|
lib32disabled=yes
|
|
# I cannot get clang to link a PIE executable
|
|
nopie=yes
|
|
|
|
# Note: we use clang to build for the host because with gcc the build fails
|
|
# for i686 (native) and also when i686 is the host architecture for cross builds.
|
|
LIBS="m"
|
|
|
|
do_configure() {
|
|
vsed -i mrbgems/mruby-compiler/core/parse.y -e "s;%pure-parser;%define api.pure;"
|
|
|
|
if [ -z "$CROSS_BUILD" ]; then
|
|
# Native build
|
|
cat <<-EOF > xbps_config.rb
|
|
MRuby::Build.new do |conf|
|
|
toolchain :clang
|
|
conf.gem "#{root}/mrbgems/mruby-bin-mruby"
|
|
conf.gem "#{root}/mrbgems/mruby-bin-mrbc"
|
|
conf.cc do |cc|
|
|
cc.command = 'clang'
|
|
cc.flags = [ENV['CFLAGS'] || %w()]
|
|
cc.include_paths = ["#{root}/include"]
|
|
end
|
|
conf.linker do |linker|
|
|
linker.command = 'clang'
|
|
linker.flags = [ENV['LDFLAGS'] || %w()]
|
|
linker.libraries = [ENV['LIBS'] || 'm']
|
|
end
|
|
conf.archiver do |archiver|
|
|
archiver.command = 'ar'
|
|
end
|
|
end
|
|
EOF
|
|
else
|
|
# Cross build
|
|
cat <<-EOF > xbps_config.rb
|
|
MRuby::Build.new do |conf|
|
|
toolchain :clang
|
|
conf.gem "#{root}/mrbgems/mruby-bin-mruby"
|
|
conf.gem "#{root}/mrbgems/mruby-bin-mrbc"
|
|
conf.cc do |cc|
|
|
cc.command = 'clang'
|
|
cc.flags = [ENV['CFLAGS_host'] || %w()]
|
|
cc.include_paths = ["#{root}/include"]
|
|
end
|
|
conf.linker do |linker|
|
|
linker.command = 'clang'
|
|
linker.flags = [ENV['LDFLAGS_host'] || %w()]
|
|
linker.libraries = [ENV['LIBS'] || 'm']
|
|
end
|
|
conf.archiver do |archiver|
|
|
archiver.command = 'ar'
|
|
end
|
|
end
|
|
MRuby::CrossBuild.new('${XBPS_CROSS_TRIPLET}') do |conf|
|
|
toolchain :gcc
|
|
conf.gem "#{root}/mrbgems/mruby-bin-mruby"
|
|
conf.gem "#{root}/mrbgems/mruby-bin-mrbc"
|
|
conf.cc do |cc|
|
|
cc.command = ENV['CC'] || '${XBPS_CROSS_TRIPLET}-gcc'
|
|
cc.flags = [ENV['CFLAGS'] || %w()]
|
|
cc.include_paths = ["#{root}/include"]
|
|
cc.defines = %w()
|
|
cc.option_include_path = '-I%s'
|
|
cc.option_define = '-D%s'
|
|
cc.compile_options = "%{flags} -o %{outfile} -c %{infile}"
|
|
end
|
|
conf.linker do |linker|
|
|
linker.command = ENV['CC'] || '${XBPS_CROSS_TRIPLET}-gcc'
|
|
linker.flags = [ENV['LDFLAGS'] || %w()]
|
|
linker.libraries = [ENV['LIBS'] || 'm']
|
|
linker.library_paths = '${XBPS_CROSS_BASE}/usr/lib'
|
|
end
|
|
conf.archiver do |archiver|
|
|
archiver.command = ENV['AR'] || '${XBPS_CROSS_TRIPLET}-ar'
|
|
end
|
|
end
|
|
EOF
|
|
fi
|
|
}
|
|
|
|
do_build() {
|
|
# Enable verbosity and/or trace
|
|
# vsed -i minirake -e '/^$rake_failed/a $verbose = 1'
|
|
# vsed -i minirake -e '/^$rake_failed/a $trace = 1'
|
|
|
|
# Set the number of parallel jobs from $makejobs
|
|
vsed -i minirake -e "s;^\(\$rake_jobs =\).*;\1 ${makejobs/-j/};"
|
|
|
|
# clang does not understand -fstack-clash-protection
|
|
CFLAGS="${CFLAGS/-fstack-clash-protection/}"
|
|
|
|
if [ "$CROSS_BUILD" ]; then
|
|
CFLAGS_host="${CFLAGS_host/-fstack-clash-protection/}"
|
|
echo "CFLAGS_host : $CFLAGS_host"
|
|
echo "LDFLAGS_host : $LDFLAGS_host"
|
|
fi
|
|
echo "CFLAGS : $CFLAGS"
|
|
echo "LDFLAGS : $LDFLAGS"
|
|
echo "LIBS : $LIBS"
|
|
CFLAGS="$CFLAGS" CFLAGS_host="$CFLAGS_host" \
|
|
LDFLAGS="$LDFLAGS" LDFLAGS_host="$LDFLAGS_host" \
|
|
LIBS="$LIBS" MRUBY_CONFIG=xbps_config.rb VERBOS=1 \
|
|
ruby minirake
|
|
}
|
|
|
|
do_install() {
|
|
local _build
|
|
if [ "$CROSS_BUILD" ]; then
|
|
_build="build/${XBPS_CROSS_TRIPLET}"
|
|
else
|
|
_build="build/host"
|
|
fi
|
|
vmkdir usr/bin
|
|
vcopy "${_build}/bin/*" usr/bin
|
|
vmkdir usr/lib
|
|
vcopy "${_build}/lib/*.a" usr/lib
|
|
vmkdir usr/include
|
|
vcopy "include/*" usr/include
|
|
vlicense LICENSE
|
|
}
|