%global pkgvers 0
%global scdate0 20250128
%global sctags0 glibc-2.41
%global scfilt0 tags/.*^{}
%global source0 https://github.com/bminor/glibc.git

%define sysarch linux-gnu
%define targets aarch64;or1k;ppc64le;riscv32;riscv64

Name:           cross-%{sysarch}-glibc
Version:        %(curl -s https://raw.githubusercontent.com/bminor/glibc/%{sctags0}/version.h | grep VERSION | cut -d'"' -f2)
Release:        %{scdate0}.%{pkgvers}%{?dist}
Summary:        The GNU C Library for cross targets.
License:        LGPLv2+ and LGPLv2+ with exceptions and GPLv2+

URL:            https://www.gnu.org/software/libc

BuildRequires:  git bison make perl-interpreter python3

%undefine __strip
%global __strip /bin/true
%define debug_package %{nil}
%undefine _auto_set_build_flags
%global __provides_exclude_from ^(%{_prefix}/.*-%{sysarch}/.*$)
%global __requires_exclude_from ^(%{_prefix}/.*-%{sysarch}/.*$)
%define cpulist %(echo "%{targets}" | sed "s|%{_arch}||g")

%description
The glibc package contains the standard C libraries for cross targets.

%{lua:
for target in string.gmatch(rpm.expand("%{cpulist}"), "[%w_-]+")
do
  print("%package -n "..target.."-"..rpm.expand("%{sysarch}").."-glibc\n")
  print("Summary: The GNU C Library  for "..target.." target\n")
  print("Provides: "..target.."-glibc\n")
  print("Provides: "..target.."-libc\n")
  print("BuildRequires:  "..target.."-"..rpm.expand("%{sysarch}").."-gcc\n")
  print("BuildRequires:  "..target.."-kernel-headers\n")
  print("%description -n "..target.."-"..rpm.expand("%{sysarch}").."-glibc\n")
  print("The GNU C Library for "..target.." target.\n")
  print("\n")
end}


%prep
%setup -T -c -n %{name}
git clone --depth 1 -n -b %{sctags0} %{source0} .
git fetch --depth 1 origin %{sctags0}
git reset --hard %{sctags0}
git --no-pager log --format=fuller
%autosetup -D -p 0 -T -c -n %{name}


%build
for target in $(echo "%{cpulist}" | sed 's|;| |g');
do
  echo "Building for [$target]"
  mkdir -p build-$target-%{sysarch}
  pushd build-$target-%{sysarch}
  cargs=""
  case $target in
    or1k)
      cargs="$cargs --disable-multi-arch"
    ;;
  esac
  ../configure \
    --prefix=%{_prefix} --libdir=%{_libdir} \
    --mandir=%{_mandir} --infodir=%{_infodir} \
    --with-headers=%{_prefix}/$target-%{sysarch}/%{_includedir} \
    --build=%{_target_platform} \
    --host=$target-%{sysarch} \
    --enable-kernel=2.6.32 \
    --enable-multi-arch \
    --enable-shared \
    --enable-add-ons \
    --enable-crypt \
    --enable-tunables \
    --disable-profile \
    --disable-werror \
    --with-tls \
    --with-__thread \
    --without-cvs \
    --without-gd \
    $cargs
  %make_build
  popd
done


%install
for target in $(echo "%{cpulist}" | sed 's|;| |g');
do
  echo "Installing for [$target]"
  pushd build-$target-%{sysarch}
  %{__make} install install_root=%{buildroot}%{_prefix}/$target-%{sysarch}
  rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/var
  rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/sbin
  rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_bindir}
  rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_sbindir}
  rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_datadir}
  rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_sysconfdir}
  ln -sf lib64 %{buildroot}%{_prefix}/$target-%{sysarch}/%{_prefix}/lib
  popd
done


%{lua:
for target in string.gmatch(rpm.expand("%{cpulist}"), "[%w_-]+")
do
  print("%files -n "..target.."-"..rpm.expand("%{sysarch}").."-glibc\n")
  print("%doc MAINTAINERS NEWS README\n")
  print("%license COPYING* LICENSES\n")
  print("%dir "..rpm.expand("%{_prefix}").."/"..target.."-"..rpm.expand("%{sysarch}").."\n")
  print(rpm.expand("%{_prefix}").."/"..target.."-"..rpm.expand("%{sysarch}").."/*\n")
  print("\n")
end}


%changelog
* Fri Aug 07 2020 Cristian Balint <cristian.balint@gmail.com>
- git upstream releases