libjpeg-turbo/libjpeg-turbo.spec
2024-07-28 13:44:03 +03:00

217 lines
6.3 KiB
RPMSpec

%define major 8
%define libname %mklibname jpeg %{major}
%define devname %mklibname jpeg -d
%define sdevname %mklibname jpeg -d -s
%define majorturbo 0
%define libturbo %mklibname turbojpeg %{majorturbo}
%define major62 62
%define libname62 %mklibname jpeg %{major62}
Summary: A MMX/SSE2 accelerated library for manipulating JPEG image files
Name: libjpeg-turbo
Epoch: 1
Version: 3.0.3
Release: 2
License: wxWindows Library License
Group: Graphics
Url: http://www.libjpeg-turbo.org
Source0: https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/%{version}.tar.gz?/%{name}-%{version}.tar.gz
# These two allow automatic lossless rotation of JPEG images from a digital
# camera which have orientation markings in the EXIF data. After rotation
# the orientation markings are reset to avoid duplicate rotation when
# applying these programs again.
Source2: http://jpegclub.org/jpegexiforient.c
Source3: http://jpegclub.org/exifautotran.txt
Patch0: jpeg-6b-c++fixes.patch
Patch1: libjpeg-turbo-3.0.2-e2k.patch
BuildRequires: cmake
BuildRequires: libtool >= 1.4
%ifarch %{ix86} x86_64
BuildRequires: nasm
%endif
# meta package
Recommends: %{libname} = %{EVRD}
Recommends: %{libturbo} = %{EVRD}
Recommends: %{libname62} = %{EVRD}
%description
This meta package pulls packages with libraries of functions for manipulating JPEG images.
It is a high-speed, libjpeg-compatible version for x86 and x86-64
processors which uses SIMD instructions (MMX, SSE2, etc.) to accelerate
baseline JPEG compression and decompression. It is generally 2-4x as fast
as the unmodified version of libjpeg, all else being equal.
%files
# empty, meta package
# exists for compatibility with Fedora/RH
# cnrdrvcups-ufr2-uk (Canon driver) depends from it
#----------------------------------------------------------------------------
%package -n %{libname}
Summary: A library for manipulating JPEG image format files
Group: System/Libraries
%description -n %{libname}
This package contains the library needed to run programs dynamically
linked with libjpeg.
%files -n %{libname}
%doc change.log
%{_libdir}/libjpeg.so.%{major}*
#----------------------------------------------------------------------------
%package -n %{libname62}
Summary: A library for manipulating JPEG image format files
Group: System/Libraries
%description -n %{libname62}
This package contains the library needed to run programs dynamically linked
with libjpeg.
%files -n %{libname62}
%doc LICENSE.md
%{_libdir}/libjpeg.so.%{major62}*
#----------------------------------------------------------------------------
%package -n %{libturbo}
Summary: TurboJPEG library
Group: System/Libraries
%description -n %{libturbo}
This package contains the library needed to run programs dynamically linked
with libturbojpeg.
%files -n %{libturbo}
%doc LICENSE.md
%{_libdir}/libturbojpeg.so.%{majorturbo}*
#----------------------------------------------------------------------------
%package -n %{devname}
Summary: Development tools for programs which will use the libjpeg library
Group: Development/C
Requires: %{libname} = %{EVRD}
Requires: %{libname62} = %{EVRD}
Requires: %{libturbo} = %{EVRD}
Provides: jpeg-devel = %{EVRD}
Conflicts: jpeg6-devel
Conflicts: %{_lib}turbojpeg < 1:1.3.0
Obsoletes: %{_lib}turbojpeg < 1:1.3.0
%description -n %{devname}
The libjpeg-turbo devel package includes the header files necessary for
developing programs which will manipulate JPEG files using the libjpeg
library.
%files -n %{devname}
%doc coderules.txt jconfig.txt libjpeg.txt structure.txt
%{_libdir}/libjpeg.so
%{_libdir}/libturbojpeg.so
%{_includedir}/*.h
%{_libdir}/pkgconfig/libjpeg.pc
%{_libdir}/pkgconfig/libturbojpeg.pc
%{_libdir}/cmake/%{name}/*.cmake
#----------------------------------------------------------------------------
%package -n %{sdevname}
Summary: Static libraries for programs which will use the libjpeg library
Group: Development/C
Requires: %{devname} = %{EVRD}
Provides: jpeg-static-devel = %{EVRD}
Conflicts: jpeg6-static-devel
Obsoletes: %{mklibname jpeg 62 -d -s} < 6b-45
Obsoletes: %{mklibname jpeg 7 -d -s} < 7-3
%description -n %{sdevname}
The libjpeg static devel package includes the static libraries necessary
for developing programs which will manipulate JPEG files using the libjpeg
library.
%files -n %{sdevname}
%doc LICENSE.md
%{_libdir}/libjpeg.a
%{_libdir}/libturbojpeg.a
#----------------------------------------------------------------------------
%package -n jpeg-progs
Summary: Programs for manipulating JPEG format image files
Group: Graphics
Provides: libjpeg-progs = %{EVRD}
Provides: jpeg6-progs = %{EVRD}
%description -n jpeg-progs
This package contains simple client programs for accessing the
libjpeg functions. The library client programs include cjpeg, djpeg,
jpegtran, rdjpgcom, wrjpgcom and jpegexiforient, coupled with the script
exifautotran. Cjpeg compresses an image file into JPEG format. Djpeg
decompresses a JPEG file into a regular image file. Jpegtran can perform
various useful transformations on JPEG files: it can make lossless
cropping of JPEG files and lossless pasting of one JPEG into another
(dropping). Rdjpgcom displays any text comments included in a JPEG file.
Wrjpgcom inserts text comments into a JPEG file. Jpegexiforient allow
automatic lossless rotation of JPEG images from a digital camera which
have orientation markings in the EXIF data.
%files -n jpeg-progs
%doc usage.txt wizard.txt
%{_bindir}/*
%{_mandir}/man1/*
#----------------------------------------------------------------------------
%prep
%setup -q
%patch0 -p0
%patch1 -p1
cp %{SOURCE2} jpegexiforient.c
cp %{SOURCE3} exifautotran
%build
# Prepare build dirs
mkdir -p jpeg8
mkdir -p jpeg62
# Build jpeg v8 API
pushd jpeg8
CFLAGS="%{optflags} -Ofast -funroll-loops" \
%cmake ../.. -DWITH_JPEG8="True"
%make_build -s
popd
# Build jpeg v6.2 API
pushd jpeg62
CFLAGS="%{optflags} -Ofast -funroll-loops" \
%cmake ../.. \
-DWITH_ARITH_DEC="True" \
-DWITH_ARITH_ENC="True"
%make_build -s
popd
# Build jpegexiforient binary
%__cc %{optflags} %{ldflags} -o jpegexiforient jpegexiforient.c
%install
%make_install -C jpeg8/build
%make_install -C jpeg62/build
install -m755 jpegexiforient -D %{buildroot}%{_bindir}/jpegexiforient
install -m755 exifautotran -D %{buildroot}%{_bindir}/exifautotran
#(neoclust) Provide jpegint.h because it is needed by certain software
install -m644 jpegint.h -D %{buildroot}%{_includedir}/jpegint.h
# Cleanup
rm -rf %{buildroot}%{_docdir}/*