File leveldb.spec of Package leveldb
%define realname leveldb
%define srcext tar.bz2
%define so_ver 1
# turn off the generation of debuginfo rpm (RH9) ??
%global debug_package %{nil}
%if 0%{?suse_version} < 1500
%define cxx11abi -D_GLIBCXX_USE_CXX11_ABI=0
%endif
# Common info
%if 0%{?suse_version}
Name: lib%{realname}%{?so_ver}
%else
Name: %{realname}
%endif
Version: 0
Release: wiz%{?extraver:0.}1%{?dist}
License: BSD-3-Clause
Group: Productivity/Databases/Tools
URL: https://github.com/google/leveldb/
Summary: Fast key-value storage library
# Install-time parameters
%if 0%{?suse_version}
Provides: %{realname}
%else
Provides: lib%{realname}%{?so_ver}
%endif
# Build-time parameters
BuildRequires: cmake >= 3.9
BuildRequires: gcc-c++
BuildRequires: libsnappy-devel
BuildRequires: gperftools-devel
BuildRoot: %{_tmppath}/%{name}-root
Source: %{realname}-%{version}%{?extraver}.%{srcext}
%description
LevelDB is a fast key-value storage library written at Google that provides
an ordered mapping from string keys to string values.
%package %{?suse_version:-n lib%{realname}-}devel
Group: Development/Languages/C and C++
Summary: Development files for %{name}
Requires: %{name} = %{version}
%if 0%{?suse_version}
Provides: %{realname}-devel
%else
Provides: lib%{realname}-devel
%endif
Provides: lib%{realname}%{?so_ver}-devel
%description %{?suse_version:-n lib%{realname}-}devel
Development files for %{name}
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{version}%{?extraver}
%{__sed} -i '/add_library/ a\set_target_properties(leveldb PROPERTIES SOVERSION %{so_ver})' CMakeLists.txt
%build
_CFLAGS='%{optflags} %{?gcc_lto}'
_CXXFLAGS='%{optflags} %{?gcc_lto} %{?cxx11abi}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,now -Wl,-z,relro %{?gcc_lto}'
mkdir tmp_build
cd tmp_build
cmake .. \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_INSTALL_LIBDIR=%{_libdir} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS_RELEASE="$_CXXFLAGS" \
-DCMAKE_CXX_FLAGS="$_CXXFLAGS" \
-DCMAKE_C_FLAGS_RELEASE="$_CFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
-DCMAKE_MODULE_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
-DCMAKE_SKIP_RPATH=YES \
-DCMAKE_VERBOSE_MAKEFILE=YES \
\
-DBUILD_SHARED_LIBS=YES \
-DLEVELDB_BUILD_BENCHMARKS=NO
%{__make} %{?_smp_mflags}
%install
%{__make} -C tmp_build install DESTDIR=%{buildroot}
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%files
%defattr(-,root,root)
%doc AUTHORS LICENSE NEWS README.md
%{_libdir}/lib%{realname}.so.%{so_ver}*
# Development stuff
%files %{?suse_version:-n lib%{realname}-}devel
%defattr(-,root,root)
%doc AUTHORS LICENSE NEWS README.md CONTRIBUTING.md
%doc doc/*.html doc/*.md
%{_libdir}/cmake/leveldb/*.cmake
%dir %{_includedir}/%{realname}/
%{_includedir}/%{realname}/*.h
%{_libdir}/lib%{realname}.so
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%changelog