File sparse.spec of Package sparse

#
# spec file for package sparse
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           sparse
Version:        0.6.3
Release:        0
Summary:        A semantic parser of source files
License:        MIT
Group:          Development/Tools/Building
URL:            https://sparse.wiki.kernel.org/index.php/Main_Page
Source:         https://mirrors.edge.kernel.org/pub/software/devel/sparse/dist/%{name}-%{version}.tar.xz
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  ncurses-devel
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(gtk+-2.0)
BuildRequires:  pkgconfig(libxml-2.0)
%if 0%{?suse_version} > 1320 || 0%{?is_opensuse}
%ifarch         x86_64
BuildRequires:  clang
BuildRequires:  llvm-devel
%endif
%endif

%description
Sparse is a semantic parser of source files: it's neither a compiler
(although it could be used as a front-end for one) nor is it a
preprocessor (although it contains as a part of it a preprocessing
phase).

It is meant to be a small - and simple - library.  Scanty and meager,
and partly because of that easy to use.  It has one mission in life:
create a semantic parse tree for some arbitrary user for further
analysis.  It's not a tokenizer, nor is it some generic context-free
parser.  In fact, context (semantics) is what it's all about - figuring
out not just what the grouping of tokens are, but what the _types_ are
that the grouping implies.

Sparse is primarily used in the development and debugging of the Linux
kernel.

%package inspect
Summary:        Inspect binary from sparse
Group:          Development/Libraries/C and C++

%description inspect
test-inspect is a gtk frontend for sparse.

%package llvm
Summary:        LLVM backed sparse
Group:          Development/Libraries/C and C++

%description llvm
LLVM backend for sparse, including sparsec

%prep
%autosetup -p1

%build
%make_build \
  PREFIX=%{_prefix} \
  LIBDIR=%{_libdir} \
  MANDIR=%{_mandir} \
  PKGCONFIGDIR=%{_libdir}/pkgconfig \
  CFLAGS="%{optflags}" \
  V=1

%install
make \
  %{?_smp_mflags} \
  DESTDIR=%{buildroot} \
  PREFIX=%{_prefix} \
  LIBDIR=%{_libdir} \
  MANDIR=%{_mandir} \
  PKGCONFIGDIR=%{_libdir}/pkgconfig \
  install

%files
%license LICENSE
%doc README FAQ
%{_bindir}/cgcc
%{_bindir}/c2xml
%{_bindir}/sparse
%{_mandir}/man1/cgcc.1%{?ext_man}
%{_mandir}/man1/sparse.1%{?ext_man}

%if 0%{?suse_version} > 1320 || 0%{?is_opensuse}
%ifarch x86_64
%files llvm
%{_bindir}/sparsec
%{_bindir}/sparse-llvm
%endif
%endif

%files inspect
%{_bindir}/test-inspect

%changelog
openSUSE Build Service is sponsored by