commit:     dfb63cf60c75563bf69670cd168a16d2d4d8324c
Author:     Violet Purcell <vimproved <AT> inventati <DOT> org>
AuthorDate: Sat Oct 19 16:06:31 2024 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Sun Oct 20 11:57:01 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dfb63cf6

sci-libs/kissfft: allow parallel installation of multiple datatypes

KissFFT can be built for five different primary datatypes: float,
double, int16_t, int32_t, and SIMD. Currently, we build the float
datatype by default and instead use SIMD if cpu_flags_x86_sse is
enabled. This can lead to awkwardness in programs that expect KissFFT to
be built with a specific data type, such as media-sound/TauonMusicBox in
GURU, which currently is forced to depend on
sci-libs/kissfft[-cpu_flags_x86_sse], which forces a rather irritating
package.use entry for anyone on an amd64 CPU who has set
CPU_FLAGS_X86 accordingly. Instead, always build the float datatype, and
additionally build the SIMD datatype based on cpu_flags_x86_sse. Also
add USE flags to enable the building of the double, int16_t, and int32_t
variants, which may enable more unbundling of KissFFT from other
packages.

Signed-off-by: Violet Purcell <vimproved <AT> inventati.org>
Closes: https://github.com/gentoo/gentoo/pull/39045
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>

 ...ssfft-9999.ebuild => kissfft-131.1.0-r2.ebuild} | 28 ++++++++++++++++++----
 sci-libs/kissfft/kissfft-9999.ebuild               | 28 ++++++++++++++++++----
 sci-libs/kissfft/metadata.xml                      |  3 +++
 3 files changed, 51 insertions(+), 8 deletions(-)

diff --git a/sci-libs/kissfft/kissfft-9999.ebuild 
b/sci-libs/kissfft/kissfft-131.1.0-r2.ebuild
similarity index 71%
copy from sci-libs/kissfft/kissfft-9999.ebuild
copy to sci-libs/kissfft/kissfft-131.1.0-r2.ebuild
index 14e039c7eec1..8d8b1bb59f38 100644
--- a/sci-libs/kissfft/kissfft-9999.ebuild
+++ b/sci-libs/kissfft/kissfft-131.1.0-r2.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{9..12} )
 
-inherit cmake python-any-r1 toolchain-funcs
+inherit cmake multibuild python-any-r1 toolchain-funcs
 
 DESCRIPTION="A Fast Fourier Transform (FFT) library that tries to Keep it 
Simple, Stupid"
 HOMEPAGE="https://github.com/mborgerding/kissfft";
@@ -20,7 +20,7 @@ fi
 
 LICENSE="BSD"
 SLOT="0"
-IUSE="alloca cpu_flags_x86_sse openmp test tools"
+IUSE="alloca cpu_flags_x86_sse double int16 int32 openmp test tools"
 RESTRICT="!test? ( test )"
 
 DEPEND="
@@ -46,18 +46,38 @@ pkg_pretend() {
 }
 
 pkg_setup() {
+       MULTIBUILD_VARIANTS=(
+               float
+               $(usev double)
+               $(usev int16 int16_t)
+               $(usev int32 int32_t)
+               $(usev cpu_flags_x86_sse simd)
+       )
+
        use test && python-any-r1_pkg_setup
        [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 }
 
-src_configure() {
+kissfft_configure() {
        local mycmakeargs=(
                -DKISSFFT_OPENMP=$(usex openmp 1 0)
                -DKISSFFT_TEST=$(usex test)
                -DKISSFFT_TOOLS=$(usex tools)
                -DKISSFFT_USE_ALLOCA=$(usex alloca)
-               -DKISSFFT_DATATYPE=$(usex cpu_flags_x86_sse simd float)
+               -DKISSFFT_DATATYPE=${MULTIBUILD_VARIANT}
        )
 
        cmake_src_configure
 }
+
+src_configure() {
+       multibuild_foreach_variant kissfft_configure
+}
+
+src_compile() {
+       multibuild_foreach_variant cmake_src_compile
+}
+
+src_install() {
+       multibuild_foreach_variant cmake_src_install
+}

diff --git a/sci-libs/kissfft/kissfft-9999.ebuild 
b/sci-libs/kissfft/kissfft-9999.ebuild
index 14e039c7eec1..8d8b1bb59f38 100644
--- a/sci-libs/kissfft/kissfft-9999.ebuild
+++ b/sci-libs/kissfft/kissfft-9999.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{9..12} )
 
-inherit cmake python-any-r1 toolchain-funcs
+inherit cmake multibuild python-any-r1 toolchain-funcs
 
 DESCRIPTION="A Fast Fourier Transform (FFT) library that tries to Keep it 
Simple, Stupid"
 HOMEPAGE="https://github.com/mborgerding/kissfft";
@@ -20,7 +20,7 @@ fi
 
 LICENSE="BSD"
 SLOT="0"
-IUSE="alloca cpu_flags_x86_sse openmp test tools"
+IUSE="alloca cpu_flags_x86_sse double int16 int32 openmp test tools"
 RESTRICT="!test? ( test )"
 
 DEPEND="
@@ -46,18 +46,38 @@ pkg_pretend() {
 }
 
 pkg_setup() {
+       MULTIBUILD_VARIANTS=(
+               float
+               $(usev double)
+               $(usev int16 int16_t)
+               $(usev int32 int32_t)
+               $(usev cpu_flags_x86_sse simd)
+       )
+
        use test && python-any-r1_pkg_setup
        [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 }
 
-src_configure() {
+kissfft_configure() {
        local mycmakeargs=(
                -DKISSFFT_OPENMP=$(usex openmp 1 0)
                -DKISSFFT_TEST=$(usex test)
                -DKISSFFT_TOOLS=$(usex tools)
                -DKISSFFT_USE_ALLOCA=$(usex alloca)
-               -DKISSFFT_DATATYPE=$(usex cpu_flags_x86_sse simd float)
+               -DKISSFFT_DATATYPE=${MULTIBUILD_VARIANT}
        )
 
        cmake_src_configure
 }
+
+src_configure() {
+       multibuild_foreach_variant kissfft_configure
+}
+
+src_compile() {
+       multibuild_foreach_variant cmake_src_compile
+}
+
+src_install() {
+       multibuild_foreach_variant cmake_src_install
+}

diff --git a/sci-libs/kissfft/metadata.xml b/sci-libs/kissfft/metadata.xml
index 9cc777a3ea9c..5ffd94eab047 100644
--- a/sci-libs/kissfft/metadata.xml
+++ b/sci-libs/kissfft/metadata.xml
@@ -7,6 +7,9 @@
        </maintainer>
        <use>
                <flag name="alloca">Use alloca(3) instead of malloc(3) for 
memory management</flag>
+               <flag name="double">Build library for primary data type of 
double</flag>
+               <flag name="int16">Build library for primary data type of 
int16_t</flag>
+               <flag name="int32">Build library for primary data type of 
int32_t</flag>
                <flag name="tools">Build command line tools</flag>
        </use>
        <upstream>

Reply via email to