Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/libjpeg-turbo/
Date: Fri, 04 Jun 2021 15:05:24
Message-Id: 1622819074.4d3ec052f5c1dccdcb944d92825ea6f6fbd6325d.mgorny@gentoo
1 commit: 4d3ec052f5c1dccdcb944d92825ea6f6fbd6325d
2 Author: David Michael <fedora.dm0 <AT> gmail <DOT> com>
3 AuthorDate: Sat May 29 13:01:23 2021 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Fri Jun 4 15:04:34 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4d3ec052
7
8 media-libs/libjpeg-turbo: fix SIMD issues
9
10 This adds a NEON CPU flag to disable SIMD on ARM CPUs without NEON,
11 which avoids ABI-related build failures.
12
13 This also drops the obsolete x32 workaround, and it fixes assembler
14 package detection to use BROOT.
15
16 Closes: https://bugs.gentoo.org/792810
17 Package-Manager: Portage-3.0.18, Repoman-3.0.2
18 Signed-off-by: David Michael <fedora.dm0 <AT> gmail.com>
19 (made the 'if's more verbose)
20 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
21
22 .../libjpeg-turbo/libjpeg-turbo-2.1.0-r2.ebuild | 128 +++++++++++++++++++++
23 1 file changed, 128 insertions(+)
24
25 diff --git a/media-libs/libjpeg-turbo/libjpeg-turbo-2.1.0-r2.ebuild b/media-libs/libjpeg-turbo/libjpeg-turbo-2.1.0-r2.ebuild
26 new file mode 100644
27 index 00000000000..78714e29ba7
28 --- /dev/null
29 +++ b/media-libs/libjpeg-turbo/libjpeg-turbo-2.1.0-r2.ebuild
30 @@ -0,0 +1,128 @@
31 +# Copyright 1999-2021 Gentoo Authors
32 +# Distributed under the terms of the GNU General Public License v2
33 +
34 +EAPI=7
35 +
36 +CMAKE_ECLASS=cmake
37 +inherit cmake-multilib java-pkg-opt-2
38 +
39 +DESCRIPTION="MMX, SSE, and SSE2 SIMD accelerated JPEG library"
40 +HOMEPAGE="https://libjpeg-turbo.org/ https://sourceforge.net/projects/libjpeg-turbo/"
41 +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz
42 + mirror://gentoo/libjpeg8_8d-2.debian.tar.gz"
43 +
44 +LICENSE="BSD IJG ZLIB"
45 +SLOT="0/0.2"
46 +if [[ "$(ver_cut 3)" -lt 90 ]] ; then
47 + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris ~x86-solaris"
48 +fi
49 +IUSE="cpu_flags_arm_neon java static-libs"
50 +
51 +ASM_DEPEND="|| ( dev-lang/nasm dev-lang/yasm )"
52 +
53 +COMMON_DEPEND="!media-libs/jpeg:0
54 + !media-libs/jpeg:62"
55 +
56 +BDEPEND=">=dev-util/cmake-3.16.5
57 + amd64? ( ${ASM_DEPEND} )
58 + x86? ( ${ASM_DEPEND} )
59 + amd64-fbsd? ( ${ASM_DEPEND} )
60 + x86-fbsd? ( ${ASM_DEPEND} )
61 + amd64-linux? ( ${ASM_DEPEND} )
62 + x86-linux? ( ${ASM_DEPEND} )
63 + x64-macos? ( ${ASM_DEPEND} )
64 + x64-cygwin? ( ${ASM_DEPEND} )"
65 +
66 +DEPEND="${COMMON_DEPEND}
67 + java? ( >=virtual/jdk-1.8:* )"
68 +
69 +RDEPEND="${COMMON_DEPEND}
70 + java? ( >=virtual/jre-1.8:* )"
71 +
72 +MULTILIB_WRAPPED_HEADERS=( /usr/include/jconfig.h )
73 +
74 +src_prepare() {
75 + local FILE
76 + ln -snf ../debian/extra/*.c . || die
77 +
78 + for FILE in ../debian/extra/*.c; do
79 + FILE=${FILE##*/}
80 + cat >> CMakeLists.txt <<EOF || die
81 +add_executable(${FILE%.c} ${FILE})
82 +install(TARGETS ${FILE%.c})
83 +EOF
84 + done
85 +
86 + for FILE in ../debian/extra/exifautotran; do
87 + cat >> CMakeLists.txt <<EOF || die
88 +install(FILES \${CMAKE_CURRENT_SOURCE_DIR}/${FILE} DESTINATION \${CMAKE_INSTALL_BINDIR})
89 +EOF
90 + done
91 +
92 + for FILE in ../debian/extra/*.[0-9]*; do
93 + cat >> CMakeLists.txt <<EOF || die
94 +install(FILES \${CMAKE_CURRENT_SOURCE_DIR}/${FILE} DESTINATION \${CMAKE_INSTALL_MANDIR}/man${FILE##*.})
95 +EOF
96 + done
97 +
98 + cmake_src_prepare
99 + java-pkg-opt-2_src_prepare
100 +}
101 +
102 +multilib_src_configure() {
103 + if multilib_is_native_abi && use java ; then
104 + export JAVACFLAGS="$(java-pkg_javac-args)"
105 + export JNI_CFLAGS="$(java-pkg_get-jni-cflags)"
106 + fi
107 +
108 + local mycmakeargs=(
109 + -DCMAKE_INSTALL_DEFAULT_DOCDIR="${EPREFIX}/usr/share/doc/${PF}"
110 + -DENABLE_STATIC="$(usex static-libs)"
111 + -DWITH_JAVA="$(multilib_native_usex java)"
112 + -DWITH_MEM_SRCDST=ON
113 + )
114 +
115 + # Avoid ARM ABI issues by disabling SIMD for CPUs without NEON. #792810
116 + if use arm; then
117 + mycmakeargs+=(
118 + -DWITH_SIMD:BOOL=$(usex cpu_flags_arm_neon ON OFF)
119 + )
120 + fi
121 +
122 + # mostly for Prefix, ensure that we use our yasm if installed and
123 + # not pick up host-provided nasm
124 + if has_version -b dev-lang/yasm && ! has_version -b dev-lang/nasm; then
125 + mycmakeargs+=(
126 + -DCMAKE_ASM_NASM_COMPILER=$(type -P yasm)
127 + )
128 + fi
129 +
130 + cmake_src_configure
131 +}
132 +
133 +multilib_src_install() {
134 + cmake_src_install
135 +
136 + if multilib_is_native_abi && use java ; then
137 + rm -rf "${ED}"/usr/classes || die
138 + java-pkg_dojar java/turbojpeg.jar
139 + fi
140 +}
141 +
142 +multilib_src_install_all() {
143 + find "${ED}" -type f -name '*.la' -delete || die
144 +
145 + local -a DOCS=( README.md ChangeLog.md )
146 + einstalldocs
147 +
148 + newdoc "${WORKDIR}"/debian/changelog changelog.debian
149 +
150 + docinto html
151 + dodoc -r "${S}"/doc/html/.
152 +
153 + if use java; then
154 + docinto html/java
155 + dodoc -r "${S}"/java/doc/.
156 + newdoc "${S}"/java/README README.java
157 + fi
158 +}