| # Copyright 1999-2016 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="5" |
| |
| JAVA_PKG_IUSE="doc source test" |
| |
| inherit eutils java-pkg-2 java-ant-2 versionator |
| |
| DESCRIPTION="An optimized Java interface to libffi" |
| HOMEPAGE="https://github.com/jnr/jffi" |
| SRC_URI="https://github.com/jnr/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" |
| |
| LICENSE="|| ( Apache-2.0 LGPL-3 )" |
| SLOT="1.2" |
| KEYWORDS="amd64 ppc64 x86 ~ppc-macos ~x64-macos ~x86-macos" |
| |
| CDEPEND="virtual/libffi:0" |
| |
| RDEPEND="${CDEPEND} |
| >=virtual/jre-1.6" |
| |
| DEPEND="${CDEPEND} |
| >=virtual/jdk-1.6 |
| virtual/pkgconfig |
| test? ( |
| dev-java/ant-junit4:0 |
| dev-java/junit:4 |
| )" |
| |
| PATCHES=( |
| "${FILESDIR}"/${PN}-1.2.8-makefile.patch |
| "${FILESDIR}"/${PN}-1.2.8-junit-4.11.patch |
| ) |
| |
| RESTRICT="test" |
| |
| java_prepare() { |
| cp "${FILESDIR}"/${PN}_maven-build.xml build.xml || die |
| |
| epatch "${PATCHES[@]}" |
| |
| # misc fixes for Darwin |
| if [[ ${CHOST} == *-darwin* ]] ; then |
| local uarch |
| # don't do multiarch |
| # avoid using Xcode stuff |
| # use Prefix' headers |
| # don't mess with deployment target |
| # set install_name |
| use x64-macos && uarch=x86_64 |
| use x86-macos && uarch=i386 |
| use ppc-macos && uarch=ppc |
| sed -i \ |
| -e "/ARCHES +=/s/=.*$/= ${uarch}/" \ |
| -e "/XCODE=/s:=.*$:=${EPREFIX}:" \ |
| -e "/MACSDK/s/^/#/" \ |
| -e "/MACOSX_DEPLOYMENT_TARGET=/s/MAC/NOMAC/" \ |
| -e "/SOFLAGS =/s:=.*:= -install_name ${EPREFIX}/usr/lib/jffi-${SLOT}/libjffi-${SLOT}.jnilib:" \ |
| jni/GNUmakefile || die |
| fi |
| |
| find "${WORKDIR}" -iname '*.jar' -delete || die |
| } |
| |
| JAVA_ANT_REWRITE_CLASSPATH="yes" |
| EANT_EXTRA_ARGS="-Dmaven.build.finalName=${PN}" |
| |
| src_compile() { |
| # generate Version.java |
| cat > src/main/java/com/kenai/jffi/Version.java <<-EOF |
| package com.kenai.jffi; |
| public final class Version { |
| private Version() {} |
| public static final int MAJOR = $(get_version_component_range 1); |
| public static final int MINOR = $(get_version_component_range 2); |
| public static final int MICRO = $(get_version_component_range 3); |
| } |
| EOF |
| |
| java-pkg-2_src_compile |
| |
| # generate headers |
| mkdir -p build/jni |
| javah -d build/jni -classpath target/classes \ |
| com.kenai.jffi.Foreign \ |
| com.kenai.jffi.ObjectBuffer \ |
| com.kenai.jffi.Version \ |
| || die |
| |
| #build native library. |
| local args=( |
| SRC_DIR=jni |
| JNI_DIR=jni |
| BUILD_DIR=build/jni |
| VERSION=$(get_version_component_range 1-2) |
| USE_SYSTEM_LIBFFI=1 |
| CCACHE= |
| -f jni/GNUmakefile |
| ) |
| emake "${args[@]}" |
| } |
| |
| EANT_TEST_GENTOO_CLASSPATH="ant-junit4,junit-4" |
| |
| src_test() { |
| # build native test library |
| emake BUILD_DIR=build -f libtest/GNUmakefile |
| |
| _JAVA_OPTIONS="-Djffi.boot.library.path=${S}/build/jni" \ |
| java-pkg-2_src_test |
| } |
| |
| src_install() { |
| local libname=".so" |
| |
| [[ ${CHOST} == *-darwin* ]] && libname=.jnilib |
| java-pkg_doso build/jni/lib${PN}-$(get_version_component_range 1-2)${libname} |
| |
| # must by after _doso to have JAVA_PKG_LIBDEST set |
| cat > boot.properties <<-EOF |
| jffi.boot.library.path = ${JAVA_PKG_LIBDEST} |
| EOF |
| jar -uf target/${PN}.jar boot.properties || die |
| |
| java-pkg_dojar target/${PN}.jar |
| |
| use doc && java-pkg_dojavadoc target/site/apidocs |
| use source && java-pkg_dosrc src/main/java/* |
| } |