%define dotests 1
Summary: ODBC driver manager and drivers for PostgreSQL, MySQL, etc.
Name: unixODBC
Version:	2.3.14
Release:	1
%global major_version 2
%global minor_version 3.14


License: LGPL and GPL
Group: Applications/Databases

Source0:	https://github.com/lurcher/unixODBC/releases/download/%{version}/unixODBC-%{version}.tar.gz
Source1: unixodbc_conf.h
Source2: odbcinst.ini
# Source3: libodbc.so-aix32
# Source4: libodbc.so.2.0.0-aix32
# Source5: libodbccr.so-aix32
# Source6: libodbccr.so.2.0.0-aix32
# Source7: libodbcinst.so-aix32
# Source8: libodbcinst.so.2.0.0-aix32
# Source9: libodbc.so-aix64
# Source10: libodbc.so.2.0.0-aix64
# Source11: libodbccr.so-aix64
# Source12: libodbccr.so.2.0.0-aix64
# Source13: libodbcinst.so-aix64
# Source14: libodbcinst.so.2.0.0-aix64
Patch0:  unixODBC-2.3.9-libiconv_hardcode.patch
URL: https://www.unixodbc.org/


BuildRequires:	readline-devel >= 8.2
BuildRequires:	automake >= 1.16.5
Requires:	readline >= 8.2
%if %{toolchain} == "gcc"
Requires:	libgcc >= 10.3.0
%endif
Requires:	libiconv >= 1.17
Requires:	libtool-ltdl >= 2.4.7

%define _libdir64 %{_prefix}/lib64


%description
unixODBC aims to provide a complete ODBC solution for the Linux platform.
All programs are GPL.
All libs are LGPL (except nn which is GPL?).


%package devel
Summary: Includes and static libraries for ODBC development
Group: Development/Libraries
Requires: %{name} = %{version}

%description devel
unixODBC aims to provide a complete ODBC solution for the Linux platform.
All programs are GPL.
All libs are LGPL (except nn which is GPL?).
This package contains the include files and static libraries
for development.


%prep
export PATH=/opt/freeware/bin:$PATH
%setup -q
%patch0

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


%build
export RM="/usr/bin/rm -f"

# first build the 64-bit version
cd 64bit

export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib"

export CC="%{__cc__} -maix64 -O2"
export CXX="%{__cxx__} -maix64 -O2"
export OBJECT_MODE=64

./configure \
    --prefix=%{_prefix} \
    --libdir=%{_libdir64} \
    --disable-gui

gmake %{?_smp_mflags} -j16

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


# now build the 32-bit version
cd ../32bit

export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000"

export CC="%{__cc__} -maix32 -D_LARGE_FILES -O2"
export CXX="%{__cxx__} -maix32 -D_LARGE_FILES -O2"
export OBJECT_MODE=32

./configure \
    --prefix=%{_prefix} \
    --disable-gui

gmake %{?_smp_mflags} -j16

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


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

export RM="/usr/bin/rm -f"

cd 64bit
export OBJECT_MODE=64
gmake DESTDIR=${RPM_BUILD_ROOT} install-strip
for f in ${RPM_BUILD_ROOT}%{_bindir}/* ; do
    mv ${f} ${f}_64
done
mv ${RPM_BUILD_ROOT}%{_includedir}/unixODBC/unixodbc_conf.h ${RPM_BUILD_ROOT}%{_includedir}/unixodbc_conf-ppc64.h

cd ../32bit
export OBJECT_MODE=32
gmake DESTDIR=${RPM_BUILD_ROOT} install-strip

#setting 64 bit as default 
(
    cd  ${RPM_BUILD_ROOT}/%{_prefix}/bin
    for fic in $(ls -1| grep -v -e _32 -e _64)
    do
	mv $fic "$fic"_32
	ln -sf "$fic"_64 $fic
    done
)

mv ${RPM_BUILD_ROOT}%{_includedir}/unixODBC/unixodbc_conf.h ${RPM_BUILD_ROOT}%{_includedir}/unixodbc_conf-ppc32.h

cp %{SOURCE1} ${RPM_BUILD_ROOT}%{_includedir}/unixodbc_conf.h

cp %{SOURCE2} ${RPM_BUILD_ROOT}%{_sysconfdir}

(
cd ${RPM_BUILD_ROOT}%{_libdir64}
for f in libodbc libodbccr libodbcinst; do
	# Extract .so from 64bit .a libraries and add them to the 32bit .a libraries.
	/usr/bin/ar -x -X64 ${f}.a
	/usr/bin/ar -q -X64 ${RPM_BUILD_ROOT}%{_libdir}/${f}.a ${f}.so.%{major_version}
done
)

#Archive old *.so and *.so.2.0.0
# (
#  cd ${RPM_BUILD_ROOT}%{_libdir}	
#  cp %{SOURCE3} libodbc.so
#  cp %{SOURCE4} libodbc.so.2.0.0
#  cp %{SOURCE5} libodbccr.so
#  cp %{SOURCE6} libodbccr.so.2.0.0
#  cp %{SOURCE7} libodbcinst.so
#  cp %{SOURCE8} libodbcinst.so.2.0.0
#  for f in libodbc libodbccr libodbcinst;do
#   /usr/bin/strip -X32 -e ${f}.so
#   /usr/bin/strip -X32 -e ${f}.so.2.0.0
#   /usr/bin/ar -q -X32 ${f}.a ${f}.so ${f}.so.2.0.0
#  done
#  cp %{SOURCE9} libodbc.so
#  cp %{SOURCE10} libodbc.so.2.0.0
#  cp %{SOURCE11} libodbccr.so
#  cp %{SOURCE12} libodbccr.so.2.0.0
#  cp %{SOURCE13} libodbcinst.so
#  cp %{SOURCE14} libodbcinst.so.2.0.0
#  for f in libodbc libodbccr libodbcinst;do
#   /usr/bin/strip -X64 -e ${f}.so
#   /usr/bin/strip -X64 -e ${f}.so.2.0.0
#   /usr/bin/ar -q -X64 ${f}.a ${f}.so ${f}.so.2.0.0
#   /usr/bin/ar -q -X64 ../lib64/${f}.a ${f}.so ${f}.so.2.0.0 
#  done
# )


%pre
if [ -f %{sysconfdir}/odbc.ini ]; then
    mv -f %{sysconfdir}/odbc.ini %{sysconfdir}/odbc.ini.rpmpresave
fi
if [ -f %{sysconfdir}/odbcinst.ini ]; then
    mv -f %{sysconfdir}/odbcinst.ini %{sysconfdir}/odbcinst.ini.rpmpresave
fi


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


%files
%defattr(-,root,system)
%doc 32bit/AUTHORS 32bit/COPYING 32bit/ChangeLog 32bit/NEWS 32bit/README 32bit/README.AIX 32bit/doc
%config(noreplace) %{_sysconfdir}/odbc*
%{_bindir}/*
%{_libdir}/*.a
%{_libdir64}/*.a


%files devel
%defattr(-,root,system)
%{_includedir}/*


%changelog
* Mon Dec 29 2025 Kushal Verma <Kushal.verma1@ibm.com> - 2.3.14-1
- Update to version 2.3.14

* Sun Nov 10 2024 SANGAMESH MALLAYYA <sangamesh.swamy@in.ibm.com> - 2.3.12-1 
- Update to version 2.3.12

* Thu Dec 17 2020 Reshma V Kumar <reskumar@in.ibm.com> - 2.3.9-1
- Update to 2.3.9
- Stop shipping files in /usr directory

* Sat Aug 31 2019 Ravi Hirekurabar <rhirekur@in.ibm.com> - 2.3.7
- Updated to 2.3.7

* Thu Apr 26 2018 Ravi Hirekurabar<rhirekur@in.ibm.com> - 2.3.5-2
- Built with GCC compiler

* Wed Feb 07 2018 Ravi Hirekurabar<rhirekur@in.ibm.com> - 2.3.5-1
- Updated to 2.3.5

* Mon Jun 11 2012 Patricia Cugny <patricia.cugny@bull.net> 2.3.1
- update to 2.3.1, initial port on AIX 6.1

* Wed Jun 15 2011 Gerard Visiedo <gerard.visiedo@bull.net> 2.3.0
- Initial port on Aix5.3
