Skip to content

Commit 56d94a6

Browse files
committed
Add support for JDK9/10
1 parent 40e6fae commit 56d94a6

3 files changed

Lines changed: 82 additions & 29 deletions

File tree

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
language: java
22
sudo: false
33
jdk:
4-
- oraclejdk8
54
- oraclejdk7
5+
- oraclejdk8
6+
- oraclejdk9
7+
- oraclejdk10
68
env:
79
- NODE_VERSION=7 CC=clang CXX=clang++
810
- NODE_VERSION=6 CC=clang CXX=clang++

binding.gyp

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,8 @@
2424
['OS=="mac"', {
2525
'javaver%' : "<!(awk -F/ -v h=`node findJavaHome.js` 'BEGIN {n=split(h, a); print a[2]; exit}')"
2626
}],
27-
['OS=="linux" and target_arch=="arm"', {
28-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/arm/classic\" ]; then echo $h/jre/arm/i386/classic; else echo $h/jre/lib/arm/server; fi')"
29-
}],
30-
['OS=="linux" and target_arch=="ia32"', {
31-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/i386/classic\" ]; then echo $h/jre/lib/i386/classic; else echo $h/jre/lib/i386/server; fi')"
32-
}],
33-
['OS=="linux" and target_arch=="x64"', {
34-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/amd64/classic\" ]; then echo $h/jre/lib/amd64/classic; else echo $h/jre/lib/amd64/server; fi')"
35-
}],
36-
['OS=="linux" and (target_arch=="s390x" or target_arch=="s390")', {
37-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/s390x/classic\" ]; then echo $h/jre/lib/s390x/classic; else echo $h/jre/lib/s390/classic; fi')"
38-
}],
39-
['OS=="linux" and (target_arch=="ppc64" or target_arch=="ppc")', {
40-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/ppc64/classic\" ]; then echo $h/jre/lib/ppc64/classic; fi')"
41-
}],
42-
['OS=="solaris" and target_arch=="ia32"', {
43-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/i386/classic\" ]; then echo $h/jre/lib/i386/classic; else echo $h/jre/lib/i386/server; fi')"
44-
}],
45-
['OS=="solaris" and target_arch=="x64"', {
46-
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/amd64/classic\" ]; then echo $h/jre/lib/amd64/classic; else echo $h/jre/lib/amd64/server; fi')"
27+
['OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
28+
'javalibdir%': "<!(./find_java_libdir.sh <(target_arch) <(OS))"
4729
}],
4830
]
4931
},
@@ -92,8 +74,8 @@
9274
'<(javahome)/include/solaris',
9375
],
9476
'libraries': [
95-
'-L<(javahome)/jre/lib/<(arch)/server/',
96-
'-Wl,-rpath,<(javahome)/jre/lib/<(arch)/server/',
77+
'-L<(javalibdir)',
78+
'-Wl,-rpath,<(javalibdir)',
9779
'-ljvm'
9880
]
9981
}
@@ -104,8 +86,8 @@
10486
'<(javahome)/include/freebsd',
10587
],
10688
'libraries': [
107-
'-L<(javahome)/jre/lib/<(arch)/server/',
108-
'-Wl,-rpath,<(javahome)/jre/lib/<(arch)/server/',
89+
'-L<(javalibdir)',
90+
'-Wl,-rpath,<(javalibdir)',
10991
'-ljvm'
11092
]
11193
}
@@ -116,8 +98,8 @@
11698
'<(javahome)/include/openbsd',
11799
],
118100
'libraries': [
119-
'-L<(javahome)/jre/lib/<(arch)/server/',
120-
'-Wl,-rpath,<(javahome)/jre/lib/<(arch)/server/',
101+
'-L<(javalibdir)',
102+
'-Wl,-rpath,<(javalibdir)',
121103
'-ljvm'
122104
]
123105
}
@@ -135,8 +117,8 @@
135117
'<(javahome)/include/darwin'
136118
],
137119
'libraries': [
138-
'-L<(javahome)/jre/lib/server',
139-
'-Wl,-rpath,<(javahome)/jre/lib/server',
120+
'-L<(javalibdir)',
121+
'-Wl,-rpath,<(javalibdir)',
140122
'-ljvm'
141123
],
142124
},

find_java_libdir.sh

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env bash
2+
3+
set -eu
4+
5+
error() {
6+
echo "error: $*" >&2
7+
exit 1
8+
}
9+
10+
main () {
11+
local target_arch=$1
12+
local os=$2
13+
14+
local java_home full_java_version java_version
15+
java_home=$(node findJavaHome.js)
16+
full_java_version=$(${java_home}/bin/java -version 2>&1 | grep version | sed -e 's/.*version "\(.*\)"\(.*\)/\1/; 1q')
17+
18+
if [[ "${full_java_version}" = "1."* ]]
19+
then
20+
java_version=$(echo "${full_java_version}" | sed -e 's/1\.\([0-9]*\)\(.*\)/\1/; 1q')
21+
else
22+
java_version=$(echo "${full_java_version}" | sed -e 's/\([0-9]*\)\(.*\)/\1/; 1q')
23+
fi
24+
25+
local jre_dir
26+
if [[ "${java_version}" =~ (6|7|8) ]]; then
27+
jre_dir="${java_home}/jre/lib"
28+
else
29+
jre_dir="${java_home}/lib"
30+
fi
31+
32+
local lib_dir
33+
if [[ "${os}" == "linux" && ! "${java_version}" =~ (6|7|8) ]]; then
34+
# no arch on JDK 9+
35+
lib_dir="${jre_dir}/server"
36+
elif [[ "${os}" == "linux" && "${target_arch}" == "arm" ]]; then
37+
if [[ -d ${jre_dir}/arm/classic ]]; then lib_dir="${jre_dir}"/arm/classic; else lib_dir="${jre_dir}"/arm/server; fi
38+
elif [[ "${os}" == "linux" && "${target_arch}" == "ia32" ]]; then
39+
if [[ -d ${jre_dir}/i386/classic ]]; then lib_dir="${jre_dir}"/i386/classic; else lib_dir="${jre_dir}"/i386/server; fi
40+
elif [[ "${os}" == "linux" && "${target_arch}" == "x64" ]]; then
41+
if [[ -d ${jre_dir}/amd64/classic ]]; then lib_dir="${jre_dir}"/amd64/classic; else lib_dir="${jre_dir}"/amd64/server; fi
42+
elif [[ "${os}" == "linux" ]] && [[ "${target_arch}" == "s390x" || "${target_arch}" == "s390" ]]; then
43+
if [[ -d ${jre_dir}/s390x/classic ]]; then lib_dir="${jre_dir}"/s390x/classic; else lib_dir="${jre_dir}"/s390/classic; fi
44+
elif [[ "${os}" == "linux" ]] && [[ "${target_arch}" == "ppc64" || "${target_arch}" == "ppc" ]]; then
45+
if [[ -d ${jre_dir}/ppc64/classic ]]; then lib_dir="${jre_dir}"/ppc64/classic; fi
46+
elif [[ "${os}" == "mac" ]]; then
47+
lib_dir="${jre_dir}/server"
48+
else
49+
local arch
50+
if [[ "${target_arch}" =~ (32|386) ]]; then
51+
arch=i386
52+
else
53+
arch=amd64
54+
fi
55+
if [[ "${os}" == "solaris" ]]; then
56+
lib_dir="${jre_dir}/${arch}/server"
57+
elif [[ "${os}" == "freebsd" ]]; then
58+
lib_dir="${jre_dir}/${arch}/server"
59+
elif [[ "${os}" == "openbsd" ]]; then
60+
lib_dir="${jre_dir}/${arch}/server"
61+
fi
62+
fi
63+
if [[ -z "${lib_dir}" ]]; then
64+
error "Can't find lib dir for ${os} ${target_arch}, java home: ${java_home}"
65+
fi
66+
echo "${lib_dir}"
67+
}
68+
69+
main "$@"

0 commit comments

Comments
 (0)