File x265.spec of Package x265

#
# spec file for package x265
#
# Copyright (c) 2019 Packman Team <packman@links2linux.de>
# Copyright (c) 2014 Torsten Gruner <t.gruner@katodev.de>
#
# 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.links2linux.org/
#


%define soname  176
%define libname lib%{name}
%define libsoname %{libname}-%{soname}
Name:           x265
Version:        3.1.2
Release:        0
Summary:        A free h265/HEVC encoder - encoder binary
License:        GPL-2.0-or-later
Group:          Productivity/Multimedia/Video/Editors and Convertors
URL:            https://bitbucket.org/multicoreware/x265/wiki/Home
Source0:        https://bitbucket.org/multicoreware/x265/downloads/%{name}_%{version}.tar.gz
Patch0:         arm.patch
Patch1:         x265.pkgconfig.patch
Patch2:         x265-fix_enable512.patch
BuildRequires:  cmake >= 2.8.8
BuildRequires:  gcc-c++
BuildRequires:  nasm >= 2.13
BuildRequires:  pkgconfig
%ifarch x86_64
BuildRequires:  libnuma-devel >= 2.0.9
%endif

%description
x265 is a free library for encoding next-generation H265/HEVC video
streams.

%package -n %{libsoname}
Summary:        A free H265/HEVC encoder - encoder binary
Group:          Productivity/Multimedia/Video/Editors and Convertors

%description -n %{libsoname}
x265 is a free library for encoding next-generation H265/HEVC video
streams.

%package -n %{libname}-devel
Summary:        Libraries and include file for the %{libname} encoder
Group:          Development/Libraries/C and C++
Requires:       %{buildrequires}
Requires:       %{libsoname} = %{version}
Provides:       %{name}-devel = %{version}
Obsoletes:      %{name}-devel < %{version}

%description -n %{libname}-devel
x265 is a free library for encoding next-generation H265/HEVC video
streams.

%prep
%setup -q -n %{name}_%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1

sed -i -e "s/0.0/%{soname}.0/g" source/cmake/version.cmake


%build
SOURCE_DIR="$PWD"/source
COMMON_FLAGS="-DENABLE_TESTS=OFF -DENABLE_PIC=ON"
HIGH_BIT_DEPTH_FLAGS="-DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DEXPORT_C_API=OFF -DHIGH_BIT_DEPTH=ON"

%if 0%{?suse_version} >= 1500
%define __sourcedir ./source

# Build 10bit depth version of the library
%define __builddir ./source/build-10bit
%cmake $COMMON_FLAGS $HIGH_BIT_DEPTH_FLAGS \
%ifarch i586
      -DENABLE_ASSEMBLY=OFF
%endif

make %{?_smp_mflags}
cd ../..

# Build 12bit depth version of the library
%define __builddir ./source/build-12bit
%cmake $COMMON_FLAGS $HIGH_BIT_DEPTH_FLAGS -DMAIN12=ON \
%ifarch i586
      -DENABLE_ASSEMBLY=OFF
%endif

make %{?_smp_mflags}
cd ../..

mv source/build-10bit/libx265.a source/build-10bit/libx265_main10.a
mv source/build-12bit/libx265.a source/build-12bit/libx265_main12.a

# Build general version of the library linking in the 10/12bit depth versions
%define __builddir ./source/build
%cmake -DENABLE_TESTS=OFF \
       -DENABLE_PIC=ON \
       -DENABLE_CLI=ON \
       -DLINKED_10BIT=ON \
       -DLINKED_12BIT=ON \
       -DEXTRA_LINK_FLAGS="-L$SOURCE_DIR/build-10bit -L$SOURCE_DIR/build-12bit" \
       -DEXTRA_LIB="x265_main10.a;x265_main12.a"

%else
cd source
%cmake $COMMON_FLAGS
%endif
make %{?_smp_mflags}
cd ../../

%install
%if 0%{?suse_version} < 1500
cd source
%endif
%cmake_install
rm -f %{buildroot}%{_libdir}/%{libname}.a
echo "%{libname}-%{soname}" > %{_sourcedir}/baselibs.conf

%post -n %{libsoname} -p /sbin/ldconfig
%postun -n %{libsoname} -p /sbin/ldconfig

%files -n %{libsoname}
%{_libdir}/%{libname}.so.%{soname}*

%files
%{_bindir}/%{name}

%files -n %{libname}-devel
%license COPYING
%doc readme.rst
%{_includedir}/%{name}.h
%{_includedir}/%{name}_config.h
%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/%{libname}.so

%changelog