blob: 51bc215bdac782a87e2944cc9f57b68a003b010d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
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 ~arm64 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/*
}
|