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

openSUSE Build Service is sponsored by