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
openSUSE Build Service is sponsored by