File mbedtls.spec of Package mbedtls
%define realname mbedtls
%define realver 3.4.1
%define srcext tar.gz
%bcond_without ninja
%define crypto_so_ver 14
%define tls_so_ver 19
%define x509_so_ver 5
# turn off the generation of debuginfo rpm (RH9) ??
%global debug_package %{nil}
# Common info
Name: %{realname}
Version: %{realver}
Release: wiz%{?extraver:0.}1%{?dist}
License: Apache-2.0
Group: Productivity/Networking/Security
URL: https://www.trustedfirmware.org/projects/mbed-tls/
Summary: Implementation of Secure Sockets Layer (SSL) protocol
# Build-time parameters
BuildRequires: cmake >= 3.5.1
%if %{with ninja}
BuildRequires: ninja
%endif
BuildRequires: python3%{?suse_version:-base}
BuildRoot: %{_tmppath}/%{name}-root
Source: https://codeload.github.com/Mbed-TLS/mbedtls/%{srcext}/refs/tags/v%{realver}#/%{realname}-%{realver}%{?extraver}.%{srcext}
%description
Mbed TLS is a C library that implements cryptographic primitives, X.509
certificate manipulation and the SSL/TLS and DTLS protocols. Its small code
footprint makes it suitable for embedded systems.
%package -n libmbedcrypto%{crypto_so_ver}
Group: System/Libraries
Summary: Mbed TLS crypto API
# Install-time parameters
Provides: libmbedcrypto = %{version}-%{release}
%description -n libmbedcrypto%{crypto_so_ver}
Mbed TLS is a C library that implements cryptographic primitives, X.509
certificate manipulation and the SSL/TLS and DTLS protocols. Its small code
footprint makes it suitable for embedded systems.
This library provides the crypto API.
%package -n libmbedtls%{tls_so_ver}
Group: System/Libraries
Summary: Mbed TLS API
# Install-time parameters
Provides: libmbedtls = %{version}-%{release}
%description -n libmbedtls%{tls_so_ver}
Mbed TLS is a C library that implements cryptographic primitives, X.509
certificate manipulation and the SSL/TLS and DTLS protocols. Its small code
footprint makes it suitable for embedded systems.
This library provides the TLS API.
%package -n libmbedx509-%{x509_so_ver}
Group: System/Libraries
Summary: Mbed TLS X.509 API
# Install-time parameters
Provides: libmbedx509 = %{version}-%{release}
%description -n libmbedx509-%{x509_so_ver}
Mbed TLS is a C library that implements cryptographic primitives, X.509
certificate manipulation and the SSL/TLS and DTLS protocols. Its small code
footprint makes it suitable for embedded systems.
This library provides the X.509 API.
%package devel
Group: Development/Languages/C and C++
Summary: Development files for %{name}
Requires: libmbedcrypto%{crypto_so_ver} = %{version}-%{release}
Requires: libmbedtls%{tls_so_ver} = %{version}-%{release}
Requires: libmbedx509-%{x509_so_ver} = %{version}-%{release}
Provides: libmbedtls-devel = %{version}-%{release}
Provides: libmbedcrypto%{crypto_so_ver}-devel = %{version}-%{release}
Provides: libmbedtls%{tls_so_ver}-devel = %{version}-%{release}
Provides: libmbedx509-%{x509_so_ver}-devel = %{version}-%{release}
Provides: libmbedcrypto-devel = %{version}-%{release}
Provides: libmbedx509-devel = %{version}-%{release}
Obsoletes: libmbedtls-devel < %{version}-%{release}
%description devel
Development files for %{name}
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{version}
%build
_CFLAGS='%{optflags} %{?gcc_lto} -DMBEDTLS_THREADING_PTHREAD -DMBEDTLS_THREADING_C'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro %{?gcc_lto}'
_CMAKE_ARGS=(
-DCMAKE_INSTALL_PREFIX=%{_prefix}
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_FLAGS_RELEASE="$_CFLAGS"
-DCMAKE_EXE_LINKER_FLAGS_RELEASE="$_LDFLAGS"
-DCMAKE_MODULE_LINKER_FLAGS_RELEASE="$_LDFLAGS"
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$_LDFLAGS"
-DCMAKE_VERBOSE_MAKEFILE=YES
)
cmake -S . -B build \
%if %{with ninja}
-G Ninja \
%endif
"${_CMAKE_ARGS[@]}" \
\
-DLIB_INSTALL_DIR=%{_lib} \
-DENABLE_TESTING=OFF \
-DUSE_STATIC_MBEDTLS_LIBRARY=OFF \
-DUSE_SHARED_MBEDTLS_LIBRARY=ON \
-DMBEDTLS_FATAL_WARNINGS=ON
%if %{with ninja}
ninja -v -C build %{?_smp_mflags}
%else
%{__make} -C build %{?_smp_mflags}
%endif
%install
%if %{with ninja}
DESTDIR=%{buildroot} ninja -v -C build install
%else
%{__make} -C build install DESTDIR=%{buildroot}
%endif
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%files
%defattr(-,root,root)
%license LICENSE
%doc ChangeLog README.md
%{_bindir}/*
%files -n libmbedcrypto%{crypto_so_ver}
%defattr(-,root,root)
%{_libdir}/libmbedcrypto.so.%{crypto_so_ver}*
%{_libdir}/libmbedcrypto.so.%{version}
%files -n libmbedtls%{tls_so_ver}
%defattr(-,root,root)
%{_libdir}/libmbedtls.so.%{tls_so_ver}*
%{_libdir}/libmbedtls.so.%{version}
%files -n libmbedx509-%{x509_so_ver}
%defattr(-,root,root)
%{_libdir}/libmbedx509.so.%{x509_so_ver}*
%{_libdir}/libmbedx509.so.%{version}
# Development stuff
%files devel
%defattr(-,root,root)
%{_includedir}/%{realname}/
%{_includedir}/psa/
%{_libdir}/*.so
%dir %{_libdir}/cmake/MbedTLS
%dir %{_libdir}/cmake
%{_libdir}/cmake/MbedTLS/*.cmake
%post -n libmbedcrypto%{crypto_so_ver} -p /sbin/ldconfig
%postun -n libmbedcrypto%{crypto_so_ver} -p /sbin/ldconfig
%post -n libmbedtls%{tls_so_ver} -p /sbin/ldconfig
%postun -n libmbedtls%{tls_so_ver} -p /sbin/ldconfig
%post -n libmbedx509-%{x509_so_ver} -p /sbin/ldconfig
%postun -n libmbedx509-%{x509_so_ver} -p /sbin/ldconfig
%changelog