SUMMARY="A programming language focused on simplicity and productivity"
DESCRIPTION="Ruby is a dynamic, reflective, object-oriented, general-purpose \
programming language. It was designed and developed in the mid-1990s \
by Yukihiro 'Matz' Matsumoto in Japan.

Ruby embodies syntax inspired by Perl with Smalltalk-like features and \
was also influenced by Eiffel and Lisp. It supports multiple \
programming paradigms, including functional, object oriented, and \
imperative. It also has a dynamic type system and automatic memory \
management. Therefore, it is similar in varying degrees to, Smalltalk, \
Python, Perl, Lisp, Dylan, and CLU."
HOMEPAGE="https://www.ruby-lang.org/"
COPYRIGHT="1993-2019 Yukihiro Matsumoto"
LICENSE="Ruby
	BSD (3-clause)"
REVISION="3"
SOURCE_URI="https://cache.ruby-lang.org/pub/ruby/${portVersion%.*}/ruby-$portVersion.tar.xz"
CHECKSUM_SHA256="27d350a52a02b53034ca0794efe518667d558f152656c2baaf08f3d0c8b02343"
PATCHES="ruby-$portVersion.patchset"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

libVersion="$portVersion"
libVersionCompat="$libVersion compat >= ${libVersion%.*}"

PROVIDES="
	ruby$secondaryArchSuffix = $libVersionCompat
	cmd:bundle = $libVersionCompat
	cmd:bundler = $libVersionCompat
	cmd:erb = $libVersionCompat
	cmd:gem = $libVersionCompat
	cmd:irb = $libVersionCompat
	cmd:racc = $libVersionCompat
	cmd:racc2y = $libVersionCompat
	cmd:rake = $libVersionCompat
	cmd:rdoc = $libVersionCompat
	cmd:ri = $libVersionCompat
	cmd:ruby = $libVersionCompat
	cmd:testrb = $libVersionCompat
	cmd:y2racc = $libVersionCompat
	lib:libruby$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libcrypto$secondaryArchSuffix
	lib:libedit$secondaryArchSuffix
	lib:libffi$secondaryArchSuffix
	lib:libiconv$secondaryArchSuffix
	lib:libncursesw$secondaryArchSuffix
	lib:libssl$secondaryArchSuffix
	lib:libssp$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"

PROVIDES_devel="
	ruby${secondaryArchSuffix}_devel = $portVersion
	devel:libruby$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES_devel="
	ruby$secondaryArchSuffix == $portVersion base
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libcrypto$secondaryArchSuffix
	devel:libedit$secondaryArchSuffix
	devel:libffi$secondaryArchSuffix
	devel:libiconv$secondaryArchSuffix
	devel:libncursesw$secondaryArchSuffix
	devel:libssl$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"
BUILD_PREREQUIRES="
	cmd:autoreconf
	cmd:bison
	cmd:g++$secondaryArchSuffix
	cmd:gcc$secondaryArchSuffix
	cmd:git
	cmd:libtoolize$secondaryArchSuffix
	cmd:make
	cmd:pkg_config$secondaryArchSuffix
	"

defineDebugInfoPackage ruby$secondaryArchSuffix \
	"$libDir"/libruby.so.$libVersion

BUILD()
{
	export CFLAGS="-D_BSD_SOURCE"
	export LDFLAGS="-lssp"
	autoreconf -i
	runConfigure --omit-dirs binDir ./configure \
		--enable-shared \
		--disable-silent-rules \
		--enable-debug-env \
		--bindir=$prefix/bin

	# The build process needs to run ruby, and without this it fails to find
	# libruby.so.
	export LIBRARY_PATH=$LIBRARY_PATH:%A
	make $jobArgs
}

INSTALL()
{
	export LIBRARY_PATH=$LIBRARY_PATH:%A
	make install
	prepareInstalledDevelLib libruby
	fixPkgconfig
	packageEntries devel $developDir
}

TEST()
{
	export LIBRARY_PATH=$LIBRARY_PATH:%A
	make check
}
