libjpeg-turbo/libjpeg-turbo.spec
2024-09-16 21:33:55 +00:00

202 lines
6.1 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.4
Release: 1
License: wxWidgets Library License
Group: System/Libraries
URL: https://www.libjpeg-turbo.org
#Source0: https://sourceforge.net/projects/libjpeg-turbo/files/%{version}/%{name}-%{version}.tar.gz
Source0: https://github.com/libjpeg-turbo/libjpeg-turbo/archive/%{version}/%{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
BuildRequires: cmake
BuildRequires: libtool >= 1.4
%ifarch %{ix86} x86_64
BuildRequires: nasm
%endif
%description
This package contains a library 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.
#----------------------------------------------------------------------------
%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}
%{_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}
%{_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: %{libturbo} = %{EVRD}
Provides: jpeg-devel = %{EVRD}
Conflicts: jpeg6-devel
Conflicts: %{_lib}turbojpeg < 1:1.3.0
Obsoletes: %{_lib}turbojpeg < 1:1.3.0
Obsoletes: %{mklibname jpeg 62 -d} < 6b-45
%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 example.c jconfig.txt libjpeg.txt structure.txt
%{_libdir}/libjpeg.so
%{_libdir}/libturbojpeg.so
%{_includedir}/*.h
%{_libdir}/pkgconfig/libjpeg.pc
%{_libdir}/pkgconfig/libturbojpeg.pc
%{_libdir}/cmake/libjpeg-turbo/*.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}
%{_libdir}/libjpeg.a
%{_libdir}/libturbojpeg.a
#----------------------------------------------------------------------------
%package -n jpeg-progs
Summary: Programs for manipulating JPEG format image files
Group: Graphics
%rename libjpeg-progs
%rename jpeg6-progs
%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
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}/*