Skip to content

Commit bbb0a9a

Browse files
committed
Merge pull request joeferner#154 from curasystems/master
Changes for SmartOS
2 parents dfe86e9 + e05fe0c commit bbb0a9a

2 files changed

Lines changed: 60 additions & 4 deletions

File tree

binding.gyp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
['OS=="win"', {
1919
'javahome%': '<!(node findJavaHome.js)'
2020
}],
21-
['OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="openbsd"', {
21+
['OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"' , {
2222
'javahome%': '<!(node findJavaHome.js)'
2323
}],
2424
['OS=="mac"', {
@@ -35,7 +35,13 @@
3535
}],
3636
['OS=="linux" and (target_arch=="ppc64" or target_arch=="ppc")', {
3737
'javalibdir%': "<!(h=\"`node findJavaHome.js`\" sh -c 'if [ -d \"$h/jre/lib/ppc64/classic\" ]; then echo $h/jre/lib/ppc64/classic; fi')"
38-
}]
38+
}],
39+
['OS=="solaris" and target_arch=="ia32"', {
40+
'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')"
41+
}],
42+
['OS=="solaris" and target_arch=="x64"', {
43+
'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')"
44+
}],
3945
]
4046
},
4147
'targets': [
@@ -77,6 +83,18 @@
7783
]
7884
}
7985
],
86+
['OS=="solaris"',
87+
{
88+
'include_dirs': [
89+
'<(javahome)/include/solaris',
90+
],
91+
'libraries': [
92+
'-L<(javahome)/jre/lib/<(arch)/server/',
93+
'-Wl,-rpath,<(javahome)/jre/lib/<(arch)/server/',
94+
'-ljvm'
95+
]
96+
}
97+
],
8098
['OS=="freebsd"',
8199
{
82100
'include_dirs': [

postInstall.js

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
var glob = require('glob');
22
var fs = require('fs');
33
var path = require('path');
4+
var os = require('os');
45

56
require('find-java-home')(function(err, home){
67
var dll;
78
var dylib;
8-
var so;
9+
var so,soFiles;
910
var binary;
1011

1112
if(home){
1213
dll = glob.sync('**/jvm.dll', {cwd: home})[0];
13-
so = glob.sync('**/libjvm.so', {cwd: home})[0];
1414
dylib = glob.sync('**/libjvm.dylib', {cwd: home})[0];
15+
soFiles = glob.sync('**/libjvm.so', {cwd: home});
16+
so = getCorrectSoForPlatform(soFiles);
17+
1518
binary = dll || dylib || so;
1619

1720
fs.writeFileSync(
@@ -25,3 +28,38 @@ require('find-java-home')(function(err, home){
2528
);
2629
}
2730
});
31+
32+
function getCorrectSoForPlatform(soFiles){
33+
var so = _getCorrectSoForPlatform(soFiles);
34+
return removeDuplicateJre(so);
35+
}
36+
37+
function removeDuplicateJre(filePath){
38+
while(filePath.indexOf('jre/jre')>=0){
39+
filePath = filePath.replace('jre/jre','jre');
40+
}
41+
return filePath;
42+
}
43+
44+
function _getCorrectSoForPlatform(soFiles){
45+
46+
var architectureFolderNames = {
47+
'ia32': 'i386',
48+
'x64': 'amd64'
49+
};
50+
51+
if(os.platform() != 'sunos')
52+
return soFiles[0];
53+
54+
var requiredFolderName = architectureFolderNames[os.arch()];
55+
56+
for (var i = 0; i < soFiles.length; i++) {
57+
var so = soFiles[i];
58+
59+
if(so.indexOf('server')>0)
60+
if(so.indexOf(requiredFolderName)>0)
61+
return so;
62+
}
63+
64+
return soFiles[0];
65+
}

0 commit comments

Comments
 (0)