Package castxml: Specfile

%define _unpackaged_files_terminate_build 1
%define _stripped_files_terminate_build 1

%ifarch loongarch64
# XXX: as of llvm 17 lld does not support some common LoongArch relocations
# XXX: As a result linking with glibc (and/or GCC C++ runtime) often fails
# XXX: with `unknown relocation' errors, like this
# XXX: ld.lld: error: /usr/lib64/Scrt1.o:(.text+0x0): unknown relocation (102) against symbol
%def_without lld
%else
%def_with lld
%endif

Name:    castxml
Version: 0.6.5
Release: alt1

Summary: C-family abstract syntax tree XML output tool

Group:   Development/Other
License: Apache-2.0
URL:     https://github.com/CastXML/CastXML

Source:	%name-%version.tar

BuildRequires(pre): rpm-macros-cmake

BuildRequires: cmake ctest gcc-c++
BuildRequires: llvm-devel
%if_with lld
BuildRequires: lld
%endif
BuildRequires: clang-devel
# requires clang-format, which is in clang-tools
BuildRequires: clang-tools
BuildRequires: libedit-devel
BuildRequires: zlib-devel
BuildRequires: python3-module-sphinx python3-module-sphinx-sphinx-build-symlink
BuildRequires: libxml2-devel libtinfo-devel libffi-devel
BuildRequires: /proc

Requires: /proc

Obsoletes: gccxml

%description
Parse C-family source files and optionally write a subset of the
Abstract Syntax Tree (AST) to a representation in XML.

Source files are parsed as complete translation units using the clang
compiler. XML output is enabled by the --castxml-gccxml option and
produces a format close to that of gccxml. Future versions of castxml
may support alternative output formats.

%prep
%setup

%build
export CC=clang
export CXX=clang++

%cmake \
       -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
       -DCLANG_LINK_CLANG_DYLIB:BOOL=ON \
       -DCastXML_INSTALL_DOC_DIR:STRING=share/doc/%name \
       -DCastXML_INSTALL_MAN_DIR:STRING=share/man \
       -DCLANG_RESOURCE_DIR:PATH=$(clang -print-file-name=include)/.. \
       -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
       -DBUILD_TESTING:BOOL=ON \
       -DSPHINX_MAN:BOOL=ON \
%if_with lld
       -DCMAKE_EXE_LINKER_FLAGS:STRING=-fuse-ld=lld \
%endif
       -DLLVM_DIR=$(llvm-config --cmakedir) \
       %nil

%cmake_build

%install
%cmake_install

rm -f %buildroot%_datadir/doc/%name/LICENSE
rm -f %buildroot%_datadir/doc/%name/NOTICE

%check
pushd %_cmake__builddir
ctest
popd

%files
%doc LICENSE
%doc NOTICE README.rst
%_bindir/castxml
%_man1dir/castxml.1*
%dir %_datadir/%name
%_datadir/%name/clang
%_datadir/%name/detect_vs.c
%_datadir/%name/detect_vs.cpp
%_datadir/%name/empty.c
%_datadir/%name/empty.cpp

%changelog
* Wed Apr 17 2024 L.A. Kostis <lakostis@altlinux.ru> 0.6.5-alt1
- NMU: Updated to upstream release version 0.6.5.

* Mon Feb 26 2024 Ilya Kurdyukov <ilyakurdyukov@altlinux.org> 0.6.2-alt3
- Fixed build for Elbrus (missing BR).

* Wed Nov 01 2023 Alexey Sheplyakov <asheplyakov@altlinux.org> 0.6.2-alt2
- NMU: Fixed FTBFS on LoongArch

* Fri Oct 27 2023 Mikhail Tergoev <fidel@altlinux.org> 0.6.2-alt1
- NMU: Updated to upstream release version 0.6.2

* Tue Dec 14 2021 Aleksei Nikiforov <darktemplar@altlinux.org> 0.4.4-alt1
- Updated to upstream release version 0.4.4.

* Mon Aug 30 2021 Aleksei Nikiforov <darktemplar@altlinux.org> 0.4.3-alt2
- Disabled LTO.

* Tue Apr 27 2021 Arseny Maslennikov <arseny@altlinux.org> 0.4.3-alt1.1
- NMU: spec: adapted to new cmake macros.

* Tue Mar 09 2021 Aleksei Nikiforov <darktemplar@altlinux.org> 0.4.3-alt1
- Updated to upstream release version 0.4.3.

* Fri Feb 12 2021 Aleksei Nikiforov <darktemplar@altlinux.org> 0.4.2-alt2
- Fixed build with llvm-11.

* Mon Jan 18 2021 Aleksei Nikiforov <darktemplar@altlinux.org> 0.4.2-alt1
- Updated to upstream release version 0.4.2.

* Fri Aug 28 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 0.3.6-alt1
- Updated to upstream release version 0.3.6.

* Mon Aug 10 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 0.3.4-alt2
- Fixed linking with dynamic clang libraries.

* Thu Jun 04 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 0.3.4-alt1
- Updated to upstream release version 0.3.4.

* Thu Feb 27 2020 Aleksei Nikiforov <darktemplar@altlinux.org> 0.3.1-alt1
- Updated to upstream release version 0.3.1.

* Thu Jul 04 2019 Aleksei Nikiforov <darktemplar@altlinux.org> 0.2.0-alt1
- Updated to upstream release version 0.2.0.

* Sat Dec 29 2018 Aleksei Nikiforov <darktemplar@altlinux.org> 0.0.1.20181115-alt1.gitc3a239d
- Updated to upstream snapshot c3a239d.

* Fri Apr 20 2018 L.A. Kostis <lakostis@altlinux.ru> 0.0.1.20180321-alt2
- Use LLD as linker (as ld doesn't understand LTO code generated by LLVM).

* Mon Apr 09 2018 Aleksei Nikiforov <darktemplar@altlinux.org> 0.0.1.20180321-alt1
- Updated to new version from VCS.

* Tue Sep 19 2017 Aleksei Nikiforov <darktemplar@altlinux.org> 0.0.1.20170823-alt2
- Rebuilt with support of %%ubt macro.

* Thu Sep 07 2017 Aleksei Nikiforov <darktemplar@altlinux.org> 0.0.1.20170823-alt1
- Initial build for ALT.

* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1-0.19.20170301gitfab9c47
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1-0.18.20170301gitfab9c47
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Fri Mar 24 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.1-0.17.20170301gitfab9c47
- Rebuild for LLVM4

* Wed Mar 15 2017 Mattias Ellert <mattias.ellert@physics.uu.se> - 0.1-0.16.20170301gitfab9c47
- New git snapshot
- Remove bundled provides for kwsys components - no longer used
- Rebuild for LLVM 3.9 (Fedora 25)

* Wed Feb 08 2017 Mattias Ellert <mattias.ellert@physics.uu.se> - 0.1-0.15.20170113gite7252f5
- New git snapshot

* Mon Nov 07 2016 Mattias Ellert <mattias.ellert@physics.uu.se> - 0.1-0.14.20161006git05db76f
- Rebuild for LLVM 3.9 (Fedora 26)

* Tue Oct 25 2016 Mattias Ellert <mattias.ellert@physics.uu.se> - 0.1-0.13.20161006git05db76f
- New git snapshot

* Fri Jul 01 2016 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.12.20160617gitd5934bd
- New git snapshot

* Thu May 26 2016 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.11.20160510git9a83414
- New git snapshot

* Thu Feb 25 2016 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.10.20160125gitfc71eb9
- Adjust to llvm library changes again (the split was revoked)

* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.1-0.9.20160125gitfc71eb9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Thu Jan 28 2016 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.8.20160125gitfc71eb9
- New git snapshot
- Properly adjust to the new llvm library split

* Wed Jan 27 2016 Adam Jackson <ajax@redhat.com> 0.1-0.7.20150924git552dd69
- Rebuild for llvm 3.7.1 library split

* Fri Sep 25 2015 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.6.20150924git552dd69
- Adjust gccxml obsolete version

* Thu Sep 24 2015 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.5.20150924git552dd69
- New git snapshot
- Allow warnings about guessing the float ABI during tests (fixes tests on arm)

* Thu Sep 17 2015 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.4.20150902git7acd634
- New git snapshot

* Fri Aug 21 2015 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.3.20150820git2e55b35
- New git snapshot
- Upstream has deleted the parts of the bundled kwsys sources that are not
  used by castxml from the source repository
- Add bundled provides for the remaining kwsys components according to
  revised FPC decision 2015-08-20
  https://fedorahosted.org/fpc/ticket/555

* Fri Aug 07 2015 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.2.20150807git8a08a44
- New git snapshot
- Unbundle kwsys library according to FPC decision 2015-08-06
  https://fedorahosted.org/fpc/ticket/555

* Tue Apr 14 2015 Mattias Ellert <mattias.ellert@fysast.uu.se> - 0.1-0.1.20150414git43fa139
- First packaging for Fedora