libaom/libaom.spec

183 lines
4.6 KiB
RPMSpec

#
# spec file
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == ""
%define psuffix %{nil}
%else
%define psuffix -devel-doc
%endif
%define sover 3
%define __builder ninja
%define __builddir _build
Name: libaom%{psuffix}
Version: 3.7.1
Release: 0
%if "%{flavor}" == ""
Summary: AV1 codec library
Group: Productivity/Multimedia/Other
%endif
%if "%{flavor}" == "doc"
Summary: Documentation for the libaom API
Group: Documentation/HTML
BuildArch: noarch
%endif
License: BSD-2-Clause
URL: https://aomedia.googlesource.com/aom/
Source0: libaom-%{version}.tar.zst
Source99: baselibs.conf
Patch0: libaom-0001-Do-not-disable-_FORTIFY_SOURCE.patch
Patch1: system-gtest.patch
Patch2: system-yuv.patch
# CVE-2024-5171 [bsc#1226020], heap buffer overflow in img_alloc_helper() caused by integer overflow
Patch3: libaom-CVE-2024-5171.patch
BuildRequires: c++_compiler
BuildRequires: cmake >= 3.6
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: pkgconfig(libyuv)
%ifarch x86_64 %ix86
BuildRequires: yasm
%endif
%if "%{flavor}" == "doc"
BuildRequires: doxygen
BuildRequires: graphviz
BuildRequires: graphviz-gnome
%endif
%description
%if "%{flavor}" == ""
This is a library for AOMedia Video 1 (AV1), an open, royalty-free
video coding format designed for video transmissions over the Internet.
%endif
%if "%{flavor}" == "doc"
This package contains the API documentation for libaom, a library
for the AOMedia Video 1 (AV1) video coding format.
%endif
%if "%{flavor}" == ""
%package -n %{name}%{sover}
Summary: AV1 codec library
Group: System/Libraries
%description -n %{name}%{sover}
This is a library for AOMedia Video 1 (AV1), an open, royalty-free
video coding format designed for video transmissions over the Internet.
%package devel
Summary: Development files for libaom, an AV1 codec library
Group: Development/Languages/C and C++
Requires: %{name}%{sover}%{_isa} = %{version}
%description devel
This package contains the development headers and library files for
libaom, a library for the AOMedia Video 1 (AV1) video coding format.
%package -n aom-tools
Summary: AV1 Codec Library Tools
Group: Productivity/Multimedia/Other
%description -n aom-tools
This package contains tools included with libaom, a library for
the AOMedia Video 1 (AV1) video coding format.
%endif
%prep
%autosetup -n libaom-%{version} -p1
# Remove vendored dependencies
rm -rf third_party/{googletest,libyuv}
sed -E -i 's|#include "third_party/googletest/src/googletest/include/([^"]*)"|#include <\1>|' test/*.{cc,h}
%build
%cmake \
-DAOM_AS_FLAGS=-gdwarf2 \
%if "%{flavor}" == ""
-DENABLE_DOCS=OFF \
%endif
`# Do not build unit tests, they require non-free external files.` \
-DENABLE_TESTS=OFF \
-DENABLE_TESTDATA=OFF \
\
-DCONFIG_LOWBITDEPTH=1 \
-DCMAKE_INSTALL_LIBDIR:PATH=%{_lib} \
%ifnarch aarch64 %arm %ix86 x86_64 %x86_64 ppc %power64
-DAOM_TARGET_CPU=generic \
%endif
%ifarch %arm
`# see regex in build/cmake/rtcd.pl (this actually work for armv6hl too)` \
-DAOM_TARGET_CPU=armv7 \
`# Fix missing flag for neon code` \
`# See aom_ports/arm_cpudetect.c` \
-DENABLE_NEON=ON \
-DAOM_NEON_INTRIN_FLAG=-mfpu=neon \
%endif
%ifarch aarch64
-DAOM_TARGET_CPU=arm64 \
%endif
%ifarch ppc %power64
-DAOM_TARGET_CPU=ppc \
%endif
%ifarch %ix86
-DAOM_TARGET_CPU=x86 \
%endif
%ifarch x86_64 %x86_64
-DAOM_TARGET_CPU=x86_64 \
%endif
%{nil}
%if "%{flavor}" == ""
%cmake_build
%endif
%if "%{flavor}" == "doc"
%cmake_build docs
%endif
%install
%if "%{flavor}" == ""
%cmake_install
rm %{buildroot}%{_libdir}/%{name}.a
%ldconfig_scriptlets -n %{name}%{sover}
%files -n %{name}%{sover}
%license LICENSE PATENTS
%doc AUTHORS CHANGELOG
%{_libdir}/%{name}.so.*
%files devel
%{_includedir}/aom
%{_libdir}/%{name}.so
%{_libdir}/pkgconfig/aom.pc
%files -n aom-tools
%{_bindir}/aomdec
%{_bindir}/aomenc
%endif
%if "%{flavor}" == "doc"
%files
%doc %{__builddir}/docs/html/*
%endif
%changelog