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

EAPI=8

# ebuild generated by hackport 0.7.2.2.9999
#hackport: flags: -check_alignment,-old_toolchain_inliner,+support_deepseq,support_aesni:cpu_flags_x86_aes,support_pclmuldq:cpu_flags_x86_sse4_1,support_sse:cpu_flags_x86_sse,support_rdrand:cpu_flags_x86_rdrand

CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
inherit flag-o-matic haskell-cabal

DESCRIPTION="Cryptography Primitives sink"
HOMEPAGE="https://github.com/haskell-crypto/cryptonite"

LICENSE="BSD"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
IUSE="cpu_flags_x86_aes cpu_flags_x86_rdrand cpu_flags_x86_sse cpu_flags_x86_sse4_1 +integer-gmp +target-attributes"

RDEPEND=">=dev-lang/ghc-8.4.3:=
	>=dev-haskell/memory-0.14.18:=[profile?]
	>=dev-haskell/basement-0.0.6:=[profile?]
"
DEPEND="${RDEPEND}
	>=dev-haskell/cabal-2.2.0.1
	test? ( dev-haskell/tasty
			dev-haskell/tasty-hunit
			dev-haskell/tasty-kat
			dev-haskell/tasty-quickcheck )
"

src_prepare() {
	default

	# On AVX2 cryptonite's own test suite crashes on unaligned access:
	# https://github.com/haskell-crypto/cryptonite/issues/347
	# Disable extensions that might require extra alignment.
	use amd64 && append-flags -mno-avx2
	use x86 && append-flags -mno-avx2
}

src_configure() {
	haskell-cabal_src_configure \
		--flag=-check_alignment \
		$(cabal_flag integer-gmp integer-gmp) \
		--flag=-old_toolchain_inliner \
		$(cabal_flag cpu_flags_x86_aes support_aesni) \
		--flag=support_deepseq \
		$(cabal_flag cpu_flags_x86_sse4_1 support_pclmuldq) \
		$(cabal_flag cpu_flags_x86_rdrand support_rdrand) \
		$(cabal_flag cpu_flags_x86_sse support_sse) \
		$(cabal_flag target-attributes use_target_attributes)
}