diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..0e126bf --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + static + diff --git a/gflags.changes b/gflags.changes index fb0be8a..148e4a4 100644 --- a/gflags.changes +++ b/gflags.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sun Aug 28 19:42:22 UTC 2022 - Stefan BrĂ¼ns + +- Fix (uncritical) libdir error in pkgconfig file. +- Use default RelWithDebInfo build type. +- Use separate _multibuilds for static and dynamic libraries, + otherwise CMake config depends on the static library. + ------------------------------------------------------------------- Wed Apr 27 09:04:01 UTC 2022 - Jan Engelhardt diff --git a/gflags.spec b/gflags.spec index ea928ea..585df0a 100644 --- a/gflags.spec +++ b/gflags.spec @@ -1,7 +1,7 @@ # -# spec file for package gflags +# spec file # -# Copyright (c) 2022 SUSE LLC +# 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 @@ -16,17 +16,34 @@ # -Name: gflags +%global flavor @BUILD_FLAVOR@%{nil} + +%global pname gflags + +%if "%{flavor}" == "static" +%define psuffix -%{flavor} +%bcond_with build_shared +%bcond_without build_static +%else +%define psuffix %{nil} +%bcond_without build_shared +%bcond_with build_static +%endif + +%define soversion 2_2 + +Name: gflags%{psuffix} Version: 2.2.2 Release: 0 Summary: Library for commandline flag processing License: BSD-3-Clause +Group: Development/Libraries/C and C++ URL: https://github.com/gflags/gflags -Source0: https://github.com/%{name}/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source0: https://github.com/%{pname}/%{pname}/archive/v%{version}.tar.gz#/%{pname}-%{version}.tar.gz BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: pkgconfig -Requires: libgflags2_2 = %{version} +Requires: libgflags%{soversion} = %{version} %description The gflags package contains a library that implements commandline @@ -35,11 +52,11 @@ increased flexibility, including built-in support for C++ types like string, and the ability to define flags in the source file in which they're used. -%package -n libgflags2_2 +%package -n libgflags%{soversion} Summary: Library for commandline flag processing Conflicts: libgflags2 -%description -n libgflags2_2 +%description -n libgflags%{soversion} The gflags package contains a library that implements commandline flags processing. As such, it is a replacement for getopt(). It has increased flexibility, including built-in support for C++ types like @@ -47,67 +64,83 @@ string, and the ability to define flags in the source file in which they're used. %package devel -Summary: Development files for gflags library -Requires: libgflags2_2 = %{version} +Summary: Development files for the dynamic gflags library +Requires: libgflags%{soversion} = %{version} %description devel -This package contains headers and build system meta files. +This package contains all necessary include files and the dynamic libraries +needed for developing applications. -%package devel-static -Summary: Statically linked development libraries for gflags -Requires: %{name}-devel = %{version} +%package -n gflags-devel-static +Summary: Development files for the static gflags library +# CMake config for static and shared differ, but use the same export file name +Conflicts: %{pname}-devel -%description devel-static -This package contains the static libraries for gflags. +%description -n gflags-devel-static +This package contains all necessary include files and the static libraries +needed for developing applications. %prep -%autosetup +%autosetup -n gflags-%{version} +# Fix prefix duplication, _libdir is absolute +sed -i -e 's@libdir=.*@libdir=%{_libdir}@' cmake/package.pc.in %build +%if %{with build_static} %global _lto_cflags %{_lto_cflags} -ffat-lto-objects -CFLAGS="%{optflags} -pthread" -CXXFLAGS="%{optflags} -pthread" -export CFLAGS CXXFLAGS - +%endif %cmake \ - -DBUILD_STATIC_LIBS:BOOL=ON \ - -DBUILD_TESTING:BOOL=ON \ - -DCMAKE_BUILD_TYPE=Release + -DBUILD_STATIC_LIBS:BOOL=%{?with_build_static:ON}%{!?with_build_static:OFF} \ + -DBUILD_SHARED_LIBS:BOOL=%{?with_build_shared:ON}%{!?with_build_shared:OFF} \ + -DBUILD_TESTING:BOOL=ON \ + %{nil} -%make_build +%cmake_build %install %cmake_install +%if "%{flavor}" == "static" +rm %{buildroot}%{_bindir}/%{pname}_completions.sh +mv %{buildroot}%{_libdir}/pkgconfig/%{pname}{,_static}.pc +%endif + # Installs a file on $HOME, remove it rm -rf %{buildroot}/home/ %check -export LD_LIBRARY_PATH=`pwd`/build/lib +export LD_LIBRARY_PATH=`pwd`/%{__builddir}/lib %ctest -%post -n libgflags2_2 -p /sbin/ldconfig -%postun -n libgflags2_2 -p /sbin/ldconfig +%post -n libgflags%{soversion} -p /sbin/ldconfig +%postun -n libgflags%{soversion} -p /sbin/ldconfig +%if "%{flavor}" == "" %files %license COPYING.txt %doc AUTHORS.txt ChangeLog.txt README.md -%{_bindir}/%{name}_completions.sh +%{_bindir}/%{pname}_completions.sh -%files -n libgflags2_2 +%files -n libgflags%{soversion} %license COPYING.txt %{_libdir}/libgflags.so.* %{_libdir}/libgflags_nothreads.so.* %files devel -%{_includedir}/%{name}/ +%{_includedir}/%{pname}/ %{_libdir}/libgflags.so %{_libdir}/libgflags_nothreads.so -%{_libdir}/cmake/%{name}/ -%{_libdir}/pkgconfig/%{name}.pc +%{_libdir}/cmake/%{pname}/ +%{_libdir}/pkgconfig/%{pname}.pc +%endif -%files devel-static +%if "%{flavor}" == "static" +%files -n gflags-devel-static +%{_includedir}/%{pname}/ +%{_libdir}/cmake/%{pname}/ +%{_libdir}/pkgconfig/%{pname}_static.pc %{_libdir}/libgflags.a %{_libdir}/libgflags_nothreads.a +%endif %changelog