File annobin.spec of Package annobin
%define realname annobin
%define realver 12.88
%define srcext tar.xz
# turn off the generation of debuginfo rpm (RH9) ??
%global debug_package %{nil}
%define gcc_triplet %(gcc -dumpmachine)
%define gcc_version %(gcc -dumpversion)
# Common info
Name: %{realname}
Version: %{realver}
Release: wiz%{?extraver:0.}1%{?dist}
License: GPL-3.0
Group: Development/Tools/Other
URL: https://sourceware.org/annobin/
Summary: Binary annotation and examination package
# Install-time parameters
Provides: gcc-plugin-annobin = %{version}-%{release}
Obsoletes: gcc-plugin-annobin < %{version}-%{release}
# Build-time parameters
BuildRequires: pkg-config
BuildRequires: meson >= 0.59
BuildRequires: ninja
BuildRequires: gcc-c++ gcc-objc gdc
BuildRequires: libstdc++-devel
## BuildRequires: clang clang-devel
## BuildRequires: llvm-devel
%if 0%{?suse_version}
BuildRequires: libelf-devel
BuildRequires: libdw-devel
%else
BuildRequires: elfutils-devel
%endif
BuildRequires: rpm-devel
BuildRequires: gmp-devel
# Documentation
## BuildRequires: perl(Pod::Man)
## BuildRequires: makeinfo
Source: https://nickc.fedorapeople.org/%{realname}-%{realver}.%{srcext}
%description
Annobin is a binary annotation and examination package. It consists of
two main parts:
* plugins - for various compilers, current GCC, Clang and LLVM.
* annocheck - a tool for examining the annotation inside binary files.
%prep
%setup -q -n %{realname}-%{realver}%{?extraver}
%build
# Meson build is buggy
%if 0
_CFLAGS='%{optflags} -I%{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin/include -DHAVE_STRING_H -DHAVE_STDLIB_H'
_LDFLAGS='-Wl,--strip-all -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro'
meson setup build \
--buildtype=release \
--strip \
\
--prefix=%{_prefix} \
--default-library=shared \
\
-Dclang-plugin=false \
-Dllvm-plugin=false \
-Dannocheck=false \
-Ddocs=false \
-Ddebuginfod=disabled \
\
-Db_lto=%{?gcc_lto:true}%{!?gcc_lto:false} \
-Db_ndebug=if-release \
-Dc_args="$_CFLAGS" \
-Dc_link_args="$_LDFLAGS"
cp annobin-common.h build/
ninja -v -C build %{?_smp_mflags}
%else
_CFLAGS='%{optflags} %{?gcc_lto}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro %{?gcc_lto}'
%configure \
--without-annocheck \
--without-clang-plugin \
--without-llvm-plugin \
--without-docs \
--with-debuginfod=no \
--with-gcc-plugin-dir=%{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin \
CLAGS="$_CFLAGS" \
LDFLAGS="$_LDFLAGS"
%{__make} %{?_smp_mflags}
%endif
%install
%if 0
DESTDIR=%{buildroot} ninja -v -C build install
%else
%{__make} -C gcc-plugin install-pluginLTLIBRARIES DESTDIR=%{buildroot}
%endif
%{__ln_s} annobin.so %{buildroot}%{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin/gcc-annobin.so
%check
%if 0
ninja -v -C build test
%endif
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}%{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin/gcc-annobin.so
%files
%defattr(-,root,root)
%license COPYING3
%doc LICENSE README.md SECURITY.md
%{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin/annobin.so*
%{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin/gcc-annobin.so
%exclude %{_libdir}/gcc/%{gcc_triplet}/%{gcc_version}/plugin/annobin.la
%changelog