%bcond bootstrap 1 %global git_date 20250926 %global git_hash 0e043e64 %global git_ver 1.21.0 %global src_name %{name}-%{git_date}-%{git_hash}.tar.xz %global rel 1 %global somajor 1 Name: libheif Version: %{git_ver}^%{git_date}g%{git_hash} Release: %{rel}%{?dist} Summary: HEIF and AVIF file format decoder and encoder License: LGPL-3.0-or-later and MIT URL: https://github.com/strukturag/%{name} Source0: %{url}/%{src_name} BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: ninja-build BuildRequires: pkgconfig(aom) BuildRequires: libaom-static aom BuildRequires: pkgconfig(libbrotlidec) BuildRequires: pkgconfig(dav1d) BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libsharpyuv) BuildRequires: pkgconfig(rav1e) BuildRequires: pkgconfig(SvtAv1Enc) BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libde265) BuildRequires: pkgconfig(x265) %ifnarch %{ix86} # openh264 is not available for i686, see: # https://bugzilla.redhat.com/show_bug.cgi?id=2393742 BuildRequires: pkgconfig(openh264) BuildRequires: pkgconfig(openjph) >= 0.18.0 %endif BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(libopenjp2) %if !%{with bootstrap} #BuildRequires: pkgconfig(sdl2) %endif ##Obsoletes: libheif-freeworld <= %{version} ##Obsoletes: libheif <= %{version} %description libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder. %files %license COPYING %doc README.md %{_libdir}/*.so.%{somajor}{,.*} %dir %{_libdir}/%{name} %{_libdir}/%{name}/%{name}-*.so # ---------------------------------------------------------------------- %if !%{with bootstrap} %package -n heif-pixbuf-loader Summary: HEIF image loader for GTK+ applications BuildRequires: pkgconfig(gdk-pixbuf-2.0) Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gdk-pixbuf2%{?_isa} %description -n heif-pixbuf-loader This package provides a plugin to load HEIF files in GTK+ applications. %files -n heif-pixbuf-loader %{_libdir}/gdk-pixbuf-2.0/*/loaders/libpixbufloader-heif.so %endif # ---------------------------------------------------------------------- %package tools Summary: Tools for manipulating HEIF files License: MIT Requires: %{name}%{?_isa} = %{version}-%{release} Requires: shared-mime-info %description tools This package provides tools for manipulating HEIF files. %files tools %{_bindir}/heif-* %{_mandir}/man1/heif-* %{_datadir}/thumbnailers/heif.thumbnailer # ---------------------------------------------------------------------- # #%package hevc #Summary: HEVC codec support for HEIC files #BuildRequires: pkgconfig(libde265) #BuildRequires: pkgconfig(x265) #Supplements: %{name} # #%description hevc #This package adds support for HEVC-encoded HEIC files to applications #that use %{name} to read HEIF image files. # #%files hevc #%{_libdir}/%{name}/%{name}-libde265.so #%{_libdir}/%{name}/%{name}-x265.so # # ---------------------------------------------------------------------- %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %files devel %{_includedir}/%{name}/ %{_libdir}/cmake/%{name}/ %{_libdir}/pkgconfig/%{name}.pc %{_libdir}/*.so # ---------------------------------------------------------------------- %prep %autosetup -p1 -n %{name} rm -rf third-party/ %build %cmake \ --preset=release \ -GNinja \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TESTING=ON \ -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ -DPLUGIN_DIRECTORY=%{_libdir}/%{name} \ -DWITH_DAV1D=ON \ -DWITH_DAV1D_PLUGIN=OFF \ -DWITH_JPEG_DECODER=ON \ -DWITH_JPEG_ENCODER=ON \ -DWITH_OpenJPEG_DECODER=ON \ -DWITH_OpenJPEG_DECODER_PLUGIN=OFF \ -DWITH_OpenJPEG_ENCODER=ON \ -DWITH_OpenJPEG_ENCODER_PLUGIN=OFF \ %ifnarch %{ix86} -DWITH_OpenH264_DECODER=ON \ -DWITH_OpenH264_ENCODER=ON \ -DWITH_OPENJPH_DECODER=ON \ -DWITH_OPENJPH_ENCODER=ON \ -DWITH_OPENJPH_ENCODER_PLUGIN=OFF \ %endif -DWITH_RAV1E=ON \ -DWITH_RAV1E_PLUGIN=OFF \ -DWITH_SvtEnc=ON \ -DWITH_SvtEnc_PLUGIN=OFF \ %if %{with bootstrap} -DWITH_EXAMPLE_HEIF_VIEW=OFF \ %endif -DWITH_UNCOMPRESSED_CODEC=ON \ -DWITH_FFMPEG_DECODER=ON \ -DWITH_FFMPEG_DECODER_PLUGIN=OFF \ -DWITH_LIBDE265_PLUGIN:BOOL=OFF \ -DWITH_UNCOMPRESSED_CODEC=ON \ -DWITH_X265_PLUGIN:BOOL=OFF \ -Wno-dev %cmake_build %install %cmake_install # fix multilib issues: Rename the provided file with platform-bits in name. # Create platform independent file inplace of the provided one and conditionally # include the required one. # $1 - filename.h to process. function multilibFileVersions(){ mv $1 ${1%%.h}-%{__isa_bits}.h local basename=$(basename $1) cat >$1 < #if __WORDSIZE == 32 # include "${basename%%.h}-32.h" #elif __WORDSIZE == 64 # include "${basename%%.h}-64.h" #else # error "unexpected value for __WORDSIZE macro" #endif EOF } multilibFileVersions %{buildroot}%{_includedir}/%{name}/heif_version.h %check # Tests are not yet ported to CMake %ctest %changelog %autochangelog