#
# capstone spec file
#

# GUTHUB INFO ABOUT USER
%global gituser     aquynh
%global gitname     capstone
%global _javadir    /usr/share/java

%{!?python2_sitelib: %global python2_sitelib %(python2 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(1))")}
%{!?python3_sitelib: %global python3_sitelib %(python3 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(1))")}

# PREAMBLE
# SHORT DESCRIPTION
summary:   A disassembly framework
# NAME OF THE PACKAGE
name:      capstone
# VERSION OF THE SOFTWARE BEING PACKAGED
version:   3.0.4
release:   alt1
# SOFTWARE LICENSE INFORMATION
license:   BSD
# GROUP
group:     Development/Tools
# URL
url:       http://capstone-engine.org/
# SOURCE
source:    http://capstone-engine.org/download/%{version}/%{name}-%{version}.tar.gz
# PACKAGER
packager:  Nikita Ermakov <arei@altlinux.org>

buildrequires: /proc java-devel jna python-devel python3-module-yieldfrom

%description
An ultimate disassembly framework for binary analysis and reversing.

# DEVELOPMENT VERSION
%package     devel
summary:     Development files for %{name}
requires:    %{name} = %{version}-%{release}
group:       Development/Tools
%description devel
This package contains libraries and headers for developing.

# PYTHON 2 BINDINGS
%package -n     python-module-%{name}-%{version}-%{release}
summary:        Python bindings for %{name}
requires:       %{name} = %{version}-%{release}
group:          Development/Tools
%description -n python-module-%{name}-%{version}-%{release}
The %{name}-python package contains python bindings for %{name}

# PYTHON 3 BINDINGS
%package -n     python3-module-%{name}-%{version}-%{release}
summary:        Python 3 bindings for %{name}
requires:       %{name} = %{version}-%{release}
group:          Development/Tools
%description -n python3-module-%{name}-%{version}-%{release}
The %{name}-python3 package contains python 3 bindings for %{name}

# JAVA BINDINGS
%package     java
summary:     Java bindings for %{name}
requires:    %{name} = %{version}-%{release}
group:       Development/Tools
%description java
The %{name}-java package contains java bindings for %{name}

# PREPARATION
%prep
%setup

# BUILD
%build
DESTDIR=%{buildroot} CFLAGS="%{optflags}" LIBDIRARCH=%{_lib} INCDIR="%{_includedir}" make %{?_smp_mflags}

# fix pkgconfig file
sed -i 's;%{buildroot};;' capstone.pc
grep -v archive capstone.pc > capstone.pc.tmp
mv capstone.pc.tmp capstone.pc

# python bindings
pushd bindings/python
CFLAGS="%{optflags}" python2 setup.py build
CFLAGS="%{optflags}" python3 setup.py build
popd

# java bindings
pushd bindings/java
ldd /usr/bin/javac
make CFLAGS="%{optflags}"
popd

# INSTALL
%install
DESTDIR=%{buildroot} LIBDIRARCH=%{_lib} INCDIR=%{_includedir} make install

# python bindings
pushd bindings/python
python2 setup.py install --skip-build --root %{buildroot} --install-lib %{python2_sitelib}
python3 setup.py install --skip-build --root %{buildroot} --install-lib %{python3_sitelib}
popd

# java bindings
install -D -p -m 0644 bindings/java/%{name}.jar %{buildroot}/%{_javadir}/%{name}.jar

%check
ln -s libcapstone.so libcapstone.so.3
make check LD_LIBRARY_PATH="`pwd`"

# FILES
%files
%doc LICENSE.TXT LICENSE_LLVM.TXT
%doc README ChangeLog
%{_libdir}/*.so*

# FILES FOR DEVELOPMENT VERSION
%files devel
%{_includedir}/*
%{_libdir}/*.a
%{_libdir}/pkgconfig/*

# FIELS FOR PYTHON 2 BINDINGS
%files -n python-module-%{name}-%{version}-%{release}
%{python2_sitelib}/*egg-info
%{python2_sitelib}/%{name}
# FIELS FOR PYTHON 3 BINDINGS
%files -n python3-module-%{name}-%{version}-%{release}
%{python3_sitelib}/*egg-info
%{python3_sitelib}/%{name}
# FIELS FOR JAVA BINDINGS
%files java
%{_javadir}/

# CHANGE LOG
%changelog
* Fri Jun 01 2018 Nikita Ermakov <arei@altlinux.org> %{version}-%{release}
- Initial build for ALT Linux Sisyphus
