#
%define libjpeg_ver 8c
%define libjpeg_ver_lt 9-1
-Summary: A MMX/SSE2 accelerated library for manipulating JPEG image files
-Summary(pl.UTF-8): Biblioteka do obróbki plików obrazów JPEG z akceleracją MMX/SSE2
+%define use_jdk openjdk8
+Summary: SIMD accelerated library for manipulating JPEG image files
+Summary(pl.UTF-8): Biblioteka do obróbki plików obrazów JPEG z akceleracją SIMD
Name: libjpeg-turbo
-Version: 1.3.0
+Version: 2.1.4
Release: 2
-License: wxWidgets
+# more specifically: IJG, modified-BSD or Zlib
+License: BSD-like
Group: Libraries
-Source0: http://downloads.sourceforge.net/libjpeg-turbo/%{name}-%{version}.tar.gz
-# Source0-md5: e1e65cc711a1ade1322c06ad4a647741
-URL: http://libjpeg-turbo.virtualgl.org/
-BuildRequires: autoconf >= 2.56
-BuildRequires: automake
-%{?with_java:BuildRequires: jdk}
+Source0: https://downloads.sourceforge.net/libjpeg-turbo/%{name}-%{version}.tar.gz
+# Source0-md5: 3241b54016c445e5d8f0ebb0ad9294ed
+Patch0: %{name}-x32-java.patch
+URL: https://libjpeg-turbo.org/
+BuildRequires: cmake >= 3.9.0
+%{?with_java:%buildrequires_jdk}
+%{?with_java:BuildRequires: openjdk8-jre-base-X11}
BuildRequires: libstdc++-devel
-BuildRequires: libtool
-# x86* SIMD code uses NASM; arm uses gas, no SIMD code for other archs
+# x86* SIMD code uses NASM; ARM and MIPS use gas, PowerPC uses gcc intrinsics, no SIMD code for other archs
%ifarch %{ix86} %{x8664}
BuildRequires: nasm
%endif
+BuildRequires: rpmbuild(macros) >= 1.605
Provides: libjpeg = %{libjpeg_ver}
Obsoletes: libjpeg < %{libjpeg_ver_lt}
-Obsoletes: libjpegsimd
+Obsoletes: libjpegsimd < 7
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
-libjpeg-turbo is a version of libjpeg which uses MMX, SSE, and SSE2
-SIMD instructions to accelerate baseline JPEG
-compression/decompression by about 2-4x on x86 and x86-64 platforms.
+libjpeg-turbo is a version of libjpeg which uses SIMD (MMX, SSE2,
+AVX2, NEON, AltiVec) instructions to accelerate JPEG
+compression/decompression x86, ARM and PowerPC platforms.
+
It is based on libjpeg/SIMD but has numerous enhancements.
%description -l pl.UTF-8
libjpeg-turbo to wersja biblioteki libjpeg wykorzystująca instrukcje
-SIMD MMX, SSE i SSE2 w celu przyspieszenia kompresji/dekompresji JPEG
-o około 2-4 razy na platformach x86 i x86-64. Jest oparta na
-libjpeg/SIMD, ale ma wiele rozszerzeń.
+SIMD (MMX, SSE2, AVX2, NEON, AltiVec) w celu przyspieszenia
+kompresji/dekompresji JPEG na platformach x86, ARM i PowerPC.
+
+Jest oparta na libjpeg/SIMD, ale ma wiele rozszerzeń.
%package devel
Summary: Headers for developing programs using libjpeg-turbo
Requires: %{name} = %{version}-%{release}
Provides: libjpeg-devel = %{libjpeg_ver}
Obsoletes: libjpeg-devel < %{libjpeg_ver_lt}
-Obsoletes: libjpegsimd-devel
+Obsoletes: libjpegsimd-devel < 7
Conflicts: libjpeg6-devel
%description devel
Requires: %{name}-devel = %{version}-%{release}
Provides: libjpeg-static = %{libjpeg_ver}
Obsoletes: libjpeg-static < %{libjpeg_ver_lt}
-Obsoletes: libjpegsimd-static
+Obsoletes: libjpegsimd-static < 7
Conflicts: libjpeg-turbo6-static
%description static
Requires: %{name} = %{version}-%{release}
Provides: libjpeg-progs = %{libjpeg_ver}
Obsoletes: libjpeg-progs < %{libjpeg_ver_lt}
-Obsoletes: libjpegsimd-progs
+Obsoletes: libjpegsimd-progs < 7
Conflicts: libjpeg-turbo6-progs
%description progs
%prep
%setup -q
+%patch0 -p1
%build
-%{__libtoolize}
-%{__aclocal}
-%{__autoconf}
-%{__automake}
-
-%configure \
- %{?with_java:JNI_CFLAGS="-I%{_jvmdir}/java/include -I%{_jvmdir}/java/include/linux"} \
- --enable-shared \
- --enable-static \
- %{?with_java:--with-java} \
- --with-jpeg8
+export JAVA_HOME="%{java_home}"
+install -d build
+cd build
+%cmake .. \
+ %{?with_java:-DWITH_JAVA=ON} \
+%ifnarch %{ix86} %{x8664} x32 %{arm} aarch64 ppc
+ -DWITH_SIMD=OFF \
+%endif
+ -DWITH_JPEG8=ON
-%{__make} -j1
+%{__make}
%{?with_tests:%{__make} test}
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install \
+%{__make} -C build install \
DESTDIR=$RPM_BUILD_ROOT
-%if %{with java}
-install -d $RPM_BUILD_ROOT%{_javadir}
-%{__mv} $RPM_BUILD_ROOT%{_datadir}/classes/turbojpeg.jar $RPM_BUILD_ROOT%{_javadir}
-%endif
+# disable completeness check incompatible with split packaging
+%{__sed} -i -e '/^foreach(target .*IMPORT_CHECK_TARGETS/,/^endforeach/d; /^unset(_IMPORT_CHECK_TARGETS)/d' $RPM_BUILD_ROOT%{_libdir}/cmake/libjpeg-turbo/libjpeg-turboTargets.cmake
+
+# packaged as %doc
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/{LICENSE.md,README.{ijg,md},%{?with_java:TJExample.java,}example.txt,libjpeg.txt,structure.txt,tjexample.c,usage.txt,wizard.txt}
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%doc README change.log
+%doc ChangeLog.md LICENSE.md README.ijg README.md change.log usage.txt wizard.txt
%attr(755,root,root) %{_libdir}/libjpeg.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libjpeg.so.8
%attr(755,root,root) %{_libdir}/libturbojpeg.so.*.*.*
%files devel
%defattr(644,root,root,755)
+%doc example.txt libjpeg.txt structure.txt tjexample.c
%attr(755,root,root) %{_libdir}/libjpeg.so
%attr(755,root,root) %{_libdir}/libturbojpeg.so
-%{_libdir}/libjpeg.la
-%{_libdir}/libturbojpeg.la
%{_includedir}/jconfig.h
%{_includedir}/jerror.h
%{_includedir}/jmorecfg.h
%{_includedir}/jpeglib.h
%{_includedir}/turbojpeg.h
+%{_pkgconfigdir}/libjpeg.pc
+%{_pkgconfigdir}/libturbojpeg.pc
+%{_libdir}/cmake/libjpeg-turbo
%files static
%defattr(644,root,root,755)
%if %{with java}
%files -n java-turbojpeg
%defattr(644,root,root,755)
-%doc java/doc/*
+%doc java/TJExample.java java/doc/*
%{_javadir}/turbojpeg.jar
%endif