File libadalang.spec of Package libadalang

%define _pkg_ver_ 26.0.0
%define _src_ver_ 26.0.0
%define pythons python3

Name:          libadalang
Version:       %{_pkg_ver_}
Release:       9.1
Summary:       Ada semantic analysis library
License:       Apache-2.0
Group:         Development/Languages/Ada
Url:           https://github.com/AdaCore/libadalang
Source0:       %{name}-%{_src_ver_}.tar.gz
BuildRequires: gcc-ada
BuildRequires: gprbuild
BuildRequires: gnatcoll_core-devel
BuildRequires: gnatcoll_iconv-devel
BuildRequires: gnatcoll_gmp-devel
BuildRequires: langkit_support-devel >= 26.0
BuildRequires: libgpr2-devel >= 26.0
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildRequires: python3-base >= 3.11
BuildRequires: python3-pip
BuildRequires: python3-wheel
BuildRequires: python3-e3-core
BuildRequires: python3-Mako
BuildRequires: python3-PyYAML
BuildRequires: python3-docutils
BuildRequires: python3-funcy
BuildRequires: python3-Sphinx
BuildRequires: python3-sphinx_rtd_theme
BuildRequires: python3-langkit >= 26.0
BuildRequires: python3-setuptools
# BuildRequires: python3-sphinxcontrib-adadomain

%description
Libadalang is a library for parsing and semantic analysis of Ada code. It is
meant as a building block for integration into other tools (IDE, static
analyzers, etc.)

%package devel
Summary:  Ada semantic analysis library
Requires: %{name} = %{version}
Requires: gcc-ada
Requires: gprbuild
Requires: gnatcoll_core-devel
Requires: gnatcoll_iconv-devel
Requires: gnatcoll_gmp-devel
Requires: langkit_support-devel >= 26.0
Requires: libgpr2-devel >= 26.0

%description devel
Libadalang is a library for parsing and semantic analysis of Ada code. It is
meant as a building block for integration into other tools (IDE, static
analyzers, etc.)

This package contains the development files for Libadalang.

%package -n python3-%{name}
Summary:  Ada semantic analysis library
Group:    Development/Languages/Python
Requires: %{name} = %{version}

%description -n python3-%{name}
Libadalang is a library for parsing and semantic analysis of Ada code. It is
meant as a building block for integration into other tools (IDE, static
analyzers, etc.)

This package contains the python binding for Libadalang.

# %package doc
# Summary:   Documentation for Libadalang
# Group:     Documentation/HTML
# BuildArch: noarch
#
# %description doc
# Libadalang is a library for parsing and semantic analysis of Ada code. It is
# meant as a building block for integration into other tools (IDE, static
# analyzers, etc.)
#
# This package provides the documentation for Libadalang in HTML.

%prep
%setup -q -n %{name}-%{_src_ver_}

# type Build_Mode_Type is ("dev", "prod", "prof");
%define build_mode prod

%build
# generating the code and building
python3 -m langkit.scripts.lkm make  --build-modes=%{build_mode} --library-types=static,static-pic,relocatable --disable-all-mains
# build python bindings for the libadalang
pushd build/python
%pyproject_wheel
popd
# build docs
# %__make -C dev_manual html
# eval `python3 -m langkit.scripts.lkm printenv`
# %__make -C user_manual html

%install
# install libadalang
# python3 -m langkit.scripts.lkm install --build-modes=%{build_mode} --library-types=static,static-pic,relocatable %{buildroot} --disable-all-mains
for kind in static static-pic relocatable; do
  gprinstall -p \
    -XBUILD_MODE=%{build_mode} \
    -XLIBRARY_TYPE=$kind \
    -XGPR_BUILD=$kind \
    -XXMLADA_BUILD=$kind \
    --build-name=$kind \
    --build-var=LIBRARY_TYPE \
    --build-var=LIBADALANG_LIBRARY_TYPE \
    --prefix=%{buildroot}%{_prefix} \
    --lib-subdir=%{_lib}/libadalang.$kind \
    --link-lib-subdir=%{_lib} \
    --sources-subdir=include/libadalang \
    --no-manifest \
    build/libadalang.gpr
done
# install python bindings for the libadalang
pushd build/python
%pyproject_install
popd
%python_expand %fdupes %{buildroot}%{$python_sitelib}
# # install docs
# %__install -m 0755 -d %{buildroot}%{_datadir}/doc/%{name}/user_manual
# %__rm user_manual/_build/html/.buildinfo
# %__cp -r user_manual/_build/html %{buildroot}%{_datadir}/doc/%{name}/user_manual

%post
%run_ldconfig

%postun
%run_ldconfig

%files
%defattr(-,root,root)
%license LICENSE.txt
%dir %{_libdir}/libadalang.relocatable
%{_libdir}/libadalang.relocatable/libadalang.so
%{_libdir}/libadalang.so

%files devel
%defattr(-,root,root)
%doc README.md
%dir %{_includedir}/libadalang
%{_includedir}/libadalang/*
%dir %{_libdir}/libadalang.*
%{_libdir}/libadalang.static/*.ali
%{_libdir}/libadalang.static/libadalang.a
%{_libdir}/libadalang.static-pic/*.ali
%{_libdir}/libadalang.static-pic/libadalang.a
%{_libdir}/libadalang.relocatable/*.ali
#{_libdir}/libadalang.relocatable/libadalang.so
%{_datadir}/gpr/libadalang.gpr

%files -n python3-%{name}
%defattr(-,root,root)
%{python_sitelib}/*

# %files doc
# %defattr(-,root,root)
# %{_datadir}/doc/libadalang

%changelog
openSUSE Build Service is sponsored by