mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-06-11 07:44:12 +02:00
when called with "-fopenmp" and "-nostdlib", clang won't add "-lomp" automatically, while gcc always add "-lgomp". See below: For gcc, "-lgomp" is added always: # echo 'int main() { return 0; }' | gcc -fopenmp -v -x c - 2>&1 | grep -- "-lgomp" /usr/libexec/gcc/x86_64-pc-linux-gnu/14/collect2 -plugin ... -lgomp -lgcc ... # echo 'int main() { return 0; }' | gcc -fopenmp -nostdlib -v -x c - 2>&1 | grep -- "-lgomp" /usr/libexec/gcc/x86_64-pc-linux-gnu/14/collect2 -plugin ... -lgomp For clang, "-lomp" is not added when both "-fopenmp" and "-nostdlib" exist: # echo 'int main() { return 0; }' | clang -fopenmp -v -x c - 2>&1 | grep -- "-lomp" "/usr/bin/x86_64-pc-linux-gnu-ld.bfd" --hash-style=gnu ... -lomp -L/usr/lib/llvm/19/lib64 ... # echo 'int main() { return 0; }' | clang -fopenmp -nostdlib -v -x c - 2>&1 | grep -- "-lomp" In case of libsoundtouch, command to build .so is: clang++ -fPIC -DPIC -shared -nostdlib ... -Wl,-soname -Wl,libSoundTouchDll.so.1 -o .libs/libSoundTouchDll.so.1.0.0 So LDFLAGS "-lomp" is needed if compiler is clang and openmp is enabled. Otherwise, libomp.so won't be defined in Dynamic Section as show bellow: # LC_ALL=C objdump -x /usr/lib64/libSoundTouch.so ... Dynamic Section: NEEDED libomp.so ... cause package depend on libsoundtouch either failed to build or failed to start (if libsoundtouch is reemerged with openmp). Closes: https://bugs.gentoo.org/740310 Signed-off-by: Z. Liu <zhixu.liu@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/40424 Signed-off-by: Sam James <sam@gentoo.org>
63 lines
1.5 KiB
Bash
63 lines
1.5 KiB
Bash
# Copyright 1999-2025 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit autotools flag-o-matic multilib-minimal toolchain-funcs
|
|
|
|
MY_PN=${PN/lib}
|
|
MY_P=${MY_PN}-${PV}
|
|
DESCRIPTION="Audio processing library for changing tempo, pitch and playback rates"
|
|
HOMEPAGE="https://www.surina.net/soundtouch/ https://codeberg.org/soundtouch/soundtouch"
|
|
SRC_URI="https://www.surina.net/${MY_PN}/${MY_P}.tar.gz"
|
|
S="${WORKDIR}/${MY_PN}"
|
|
|
|
LICENSE="LGPL-2.1"
|
|
# subslot = libSoundTouch.so soname
|
|
SLOT="0/1"
|
|
KEYWORDS="amd64 ~arm ~arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
|
IUSE="cpu_flags_x86_sse openmp static-libs"
|
|
|
|
BDEPEND="virtual/pkgconfig"
|
|
|
|
pkg_pretend() {
|
|
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
|
}
|
|
|
|
pkg_setup() {
|
|
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
sed -i "s:^\(dist_doc_DATA=\)COPYING.TXT :\1:" Makefile.am || die
|
|
|
|
if tc-is-clang && use openmp ; then
|
|
append-libs omp
|
|
fi
|
|
|
|
eautoreconf
|
|
}
|
|
|
|
multilib_src_configure() {
|
|
local myeconfargs=(
|
|
--enable-shared
|
|
--disable-integer-samples
|
|
$(use_enable cpu_flags_x86_sse x86-optimizations)
|
|
$(use_enable openmp)
|
|
$(use_enable static-libs static)
|
|
)
|
|
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
|
|
}
|
|
|
|
multilib_src_compile() {
|
|
emake CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}"
|
|
}
|
|
|
|
multilib_src_install() {
|
|
emake DESTDIR="${D}" pkgdocdir="${EPREFIX}"/usr/share/doc/${PF}/html install
|
|
}
|
|
|
|
multilib_src_install_all() {
|
|
find "${ED}" -name '*.la' -delete || die
|
|
}
|