# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

USE_RUBY="ruby32 ruby33 ruby34 ruby40"

# There is an erb binary in exe but that would conflict with the ruby
# built-in version and other slots.
RUBY_FAKEGEM_BINWRAP=""

RUBY_FAKEGEM_EXTENSIONS=(ext/erb/escape/extconf.rb)
RUBY_FAKEGEM_EXTENSION_LIBDIR="lib/erb"
RUBY_FAKEGEM_EXTRADOC="README.md"
RUBY_FAKEGEM_EXTRAINSTALL="libexec"
RUBY_FAKEGEM_GEMSPEC="erb.gemspec"

inherit flag-o-matic ruby-fakegem

DESCRIPTION="An easy to use but powerful templating system for Ruby"
HOMEPAGE="https://github.com/ruby/erb"
SRC_URI="https://github.com/ruby/erb/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="|| ( Ruby-BSD BSD-2 )"
SLOT="$(ver_cut 1)"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"

src_configure() {
	# Ruby's mkmf always compiles C extensions with the compiler baked into
	# RbConfig::CONFIG['CC'] at the time dev-lang/ruby itself was built
	# (clang on this system); it ignores any $CC an ebuild/package.env
	# sets. package.env hands this package GCC-tuned CFLAGS (-mabm,
	# -mno-cldemote, -mno-kl, -mno-sgx, -mno-widekl, -mshstk), which clang
	# rejects outright and extconf.rb dies. Drop them so the build works
	# regardless of what package.env is configured to inject here.
	filter-flags -mabm -mno-cldemote -mno-kl -mno-sgx -mno-widekl -mshstk

	ruby-ng_src_configure
}

all_ruby_prepare() {
	sed -e "s:_relative ': './:" \
		-e 's/git ls-files -z/find * -print0/' \
		-e "s/__dir__/File.expand_path('..', __FILE__)/" \
		-i ${RUBY_FAKEGEM_GEMSPEC} || die
}

each_ruby_test() {
	${RUBY} -Ilib:test:. -rtest/lib/helper -e "Dir['test/**/test_*.rb'].each { require _1 }" || die
}