# rpm -ba --define 'dotests 0' libunistring-0.9.9-1-release.spec ...
%{!?dotests:%define DO_TESTS 1}
%{?dotests:%define DO_TESTS 0}

%define _libdir64 %{_prefix}/lib64

Name: libunistring
Version: 1.1
Release: 1
Group: System Environment/Libraries
Summary: GNU Unicode string library
License: GPL-2.0-or-later OR LGPL-3.0-or-later
URL: https://www.gnu.org/software/libunistring/
Source0: https://ftp.gnu.org/gnu/libunistring/%{name}-%{version}.tar.gz
Source1: https://ftp.gnu.org/gnu/libunistring/%{name}-%{version}.tar.gz.sig
Source2: libunistring.so.2-aix32
Source3: libunistring.so.2-aix64
Patch0: libunistring-0.9.10-1-iconv.patch

Requires: info
Requires : libiconv >= 1.17
Requires : libgcc >= 10.3.0
%description
This portable C library implements Unicode string types in three flavours:
(UTF-8, UTF-16, UTF-32), together with functions for character processing
(names, classifications, properties) and functions for string processing
(iteration, formatted output, width, word breaks, line breaks, normalization,
case folding and regular expressions).

The library is available as 32-bit and 64-bit.


%package devel
Group: Development/Libraries
Summary: GNU Unicode string library - development files
Requires: %{name} = %{version}-%{release}
#Requires : libiconv >=  1.17 
%description devel
Development files for programs using libunistring.

If you are compiling a 32-bit program, no special compiler options are
needed.

If you are compiling a 64-bit program, you have to compile and link your
application with "cc -q64" or "gcc -maix64".


%prep
%setup -q
%patch0 

# Duplicate source for 32 & 64 bits
rm -rf /tmp/%{name}-%{version}-32bit
mkdir  /tmp/%{name}-%{version}-32bit
mv *   /tmp/%{name}-%{version}-32bit
mkdir 32bit
mv     /tmp/%{name}-%{version}-32bit/* 32bit
rm -rf /tmp/%{name}-%{version}-32bit
mkdir 64bit
cp -pr 32bit/* 64bit/


%build
export PATH=/usr/bin:/opt/freeware/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:.

# setup environment for 32-bit and 64-bit builds
export AR="/usr/bin/ar -X32_64"
export NM="/usr/bin/nm -X32_64"
export RM="/usr/bin/rm -f"

export CFLAGS="-O3"

#export LIBS="/usr/lib/libiconv.a"
cd 64bit
# first build the 64-bit version
export CC="gcc -O2 -maix64"
export OBJECT_MODE=64

export LDFLAGS="-L%{_builddir}/%{name}-%{version}/64bit/lib/.libs -L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib "

./configure \
    --prefix=%{_prefix} \
    --libdir=%{_libdir64} \
    --infodir=%{_infodir} \
    --enable-shared --disable-static \
    --with-libiconv-prefix=/opt/freeware

gmake %{?_smp_mflags}

if [ "%{DO_TESTS}" == 1 ]
then
     (gmake -k check || true ) 
    /usr/sbin/slibclean
fi


cd ../32bit
# now build the 32-bit version
export CC="gcc -O2 -maix32 -D_LARGE_FILES"
export OBJECT_MODE=32

export LDFLAGS="-L%{_builddir}/%{name}-%{version}/32bit/lib/.libs -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib "
export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib:/usr/lib -Wl,-bmaxdata:0x80000000"

./configure \
    --prefix=%{_prefix} \
    --libdir=%{_libdir} \
    --infodir=%{_infodir} \
    --enable-shared --disable-static \
    --with-libiconv-prefix=/opt/freeware

gmake %{?_smp_mflags}

if [ "%{DO_TESTS}" == 1 ]
then
     (gmake -k check || true )
    /usr/sbin/slibclean
fi


%install
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}

export PATH=/usr/bin:/opt/freeware/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:.

# setup environment for 32-bit and 64-bit builds
export AR="/usr/bin/ar -X32_64"
export NM="/usr/bin/nm -X32_64"
export RM="/usr/bin/rm -f"

cd 64bit
export OBJECT_MODE=64
make DESTDIR=${RPM_BUILD_ROOT} install

cd ../32bit
export OBJECT_MODE=32
make DESTDIR=${RPM_BUILD_ROOT} install
cd ..

(
  cd ${RPM_BUILD_ROOT}%{_libdir64}
  for f in *.a ; do
    /usr/bin/ar -X64 -x ${f}
  done

  cd ${RPM_BUILD_ROOT}%{_libdir}
  for f in *.a ; do
    /usr/bin/ar -X32 -x ${f}
  done
)

rm   -f ${RPM_BUILD_ROOT}%{_infodir}/dir
gzip -9 ${RPM_BUILD_ROOT}%{_infodir}/*info*

# Add the 64-bit shared objects to the shared libraries containing already the
# 32-bit shared objects
/usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/%{name}.a ${RPM_BUILD_ROOT}%{_libdir64}/%{name}.so*

(
  cd ${RPM_BUILD_ROOT}
  for dir in include lib lib64
  do
    mkdir -p usr/${dir}
    cd usr/${dir}
    ln -sf ../..%{_prefix}/${dir}/* .
    cd -
  done
)

#libunistring 32bit
cp %{SOURCE2}                                                                 libunistring.so.2 
/usr/bin/strip -X32 -e                                                        libunistring.so.2
/usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libunistring.a                libunistring.so.2

#libunistring 64bit
cp %{SOURCE3}                                                                 libunistring.so.2
/usr/bin/strip -X64 -e                                                        libunistring.so.2
/usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libunistring.a                libunistring.so.2

%post devel
/sbin/install-info %{_infodir}/%{name}.info.gz %{_infodir}/dir || :


%preun devel
if [ $1 = 0 ]; then
   /sbin/install-info --delete %{_infodir}/%{name}.info.gz %{_infodir}/dir || :
fi


%clean
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}


%files
%defattr(-,root,system,-)
%license 32bit/COPYING 32bit/COPYING.LIB
%doc 32bit/AUTHORS 32bit/NEWS 32bit/README
%{_libdir}/*.a


%files devel
%defattr(-,root,system,-)
%doc 32bit/HACKING 32bit/DEPENDENCIES 32bit/THANKS 32bit/ChangeLog
%doc %{_datadir}/doc/%{name}/*.html
%{_includedir}/*
%{_infodir}/*info*


%changelog
* Thu Nov 09 2023 Harshith K A <harshith.k.a@ibm.com> - 1.1-1
- Update to version 1.1

* Fri Oct 30 2020 Rishita Saha <risaha16@in.ibm.com> -0.9.10-1
- Update to latest version 
- No longer shipping files in /usr directory 

* Mon Nov 19 2018 Harshita Jain <harjain9@in.ibm.com> -0.9.9-2
- Built with libiconv support 

* Fri Jun 08 2018 Ravi Hirekurabar <rhirekur@in.ibm.com> - 0.9.9-1
- Added build.log.
- Built with gcc-6.3.0
- Updated to 0.9.9 Removed compatibility as we 
- dont have approval for older version

* Fri Apr 29 2016 Tony Reix <tony.reix@bull.net> - 0.9.6-2
- Initial port on AIX 6.1 - Add compatibility

* Fri Apr 29 2016 Tony Reix <tony.reix@bull.net> - 0.9.3-2
- Fix bug with 64bits : add -q64 for xlc

* Thu Nov 13 2014 Gerard Visiedo <gerard.visiedo@bull.net> - 0.9.3-1
- First version for Aix6.1
