131 lines
3.1 KiB
Bash
131 lines
3.1 KiB
Bash
# 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/*
|
|
}
|