%define dotests 1
Summary: A utility for determining file types
Name: jq
Version: 1.6
Release: 1
License: MIT
Group: Productivity/Text/Utilities
Source0: https://github.com/stedolan/jq/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
URL: https://github.com/stedolan/%{name}/releases
Patch0: %{name}-%{version}-jv.patch
Patch1: %{name}-%{version}-builtin.patch
Patch2: %{name}-%{version}-testcase.patch
Patch3: %{name}-%{version}-aix.patch

BuildRequires: oniguruma-devel >= 6.9.2
Requires: oniguruma >= 6.9.2
Requires: libgcc >= 6.3.0

BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root

%define _libdir64 %{_prefix}/lib64

%description
A lightweight and flexible command-line JSON processor. jq is like sed for
JSON data – you can use it to slice and filter and map and transform
structured data with the same ease that sed, awk, grep and friends let
you play with text.

%package -n jq-devel
Summary:        Development files for jq
Group:          Development/Languages/C and C++
Requires:       %{name} = %{version}

%description -n jq-devel
Development files (headers and libraries for jq).

%prep
# Don't use -b -- it will lead to poblems when compiling magic file
%setup -q
%patch0
%patch1
%patch2
%patch3
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
# setup environment for 32-bit and 64-bit
export AR="/usr/bin/ar -X32_64"        
#export CC="/usr/vac/bin/xlc"
export CC="/opt/freeware/bin/gcc"

# first build the 64-bit version
cd 64bit
export OBJECT_MODE=64 
export LDFLAGS="-pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib "
export CFLAGS="-maix64 -O2 -I/opt/freeware/include -pthread"
./configure --prefix=%{_prefix} \
	   --mandir=%{_mandir} \
           --libdir=%{_libdir64}
gmake V=1

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

# now build the 32-bit version
cd ../32bit
export OBJECT_MODE=32
export LDFLAGS="-pthread -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000"
export CFLAGS="-maix32 -D_LARGE_FILES -O2 -I/opt/freeware/include -pthread"
./configure --prefix=%{_prefix} \
	   --mandir=%{_mandir} \
	   --libdir=%{_libdir}
gmake V=1

# add the 64-bit shared objects to the shared library containing already the
# 32-bit shared objects
${AR} -q  .libs/libjq.a ../64bit/.libs/libjq.so.1
if [ "%{dotests}" == 1 ]
then
    (gmake -k check || true)
fi

%install
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}
export OBJECT_MODE=64 
cd 64bit
gmake DESTDIR=${RPM_BUILD_ROOT} install

(
  cd ${RPM_BUILD_ROOT}%{_bindir}
  for f in *
  do
    mv ${f} ${f}_64
  done
)

export OBJECT_MODE=32
cd ../32bit
gmake DESTDIR=${RPM_BUILD_ROOT} install
/usr/bin/strip -X32_64 ${RPM_BUILD_ROOT}%{_bindir}/* || :
(
    cd  ${RPM_BUILD_ROOT}%{_bindir}
    for f in $(ls -1| grep -v -e _32 -e _64)
    do
        mv $f "$f"_32
        ln -sf "$f"_64 $f
    done
)
(
  cd ${RPM_BUILD_ROOT}
  for dir in include bin lib lib64
  do
    mkdir -p usr/linux/${dir}
    cd usr/linux/${dir}
    ln -sf ../../..%{_prefix}/${dir}/* .
    cd -
  done
)

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

%files
%defattr(-,root,system,-)
%doc 32bit/AUTHORS 32bit/COPYING 32bit/ChangeLog 32bit/README 32bit/NEWS 32bit/README.md
%{_bindir}/%{name}*
%{_mandir}/man1/*
/usr/linux/bin/%{name}*
%{_libdir}/*.a
%{_libdir64}/*.a
/usr/linux/lib/*.a
/usr/linux/lib64/*.a

%files -n jq-devel
%defattr(-,root,system,-)
%{_includedir}/*
/usr/linux/include/*

%changelog
* Tue May 28 2019 Reshma V Kumar <reskumar@in.ibm.com> - 1.6-1
- Update to latest version
- Build with oniguruma support

* Wed Sep 26 2018 Reshma V Kumar <reskumar@in.ibm.com>
- Initial port for AIX toolbox


