From 7395dd0d8037b596a19c63989ce1cb44ca6aff1b Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Tue, 12 Mar 2013 09:37:22 +0300 Subject: [PATCH] Added support of Linux ARM and *.jnilib->*.dylib MacOS X 10.8 fix --- src/java/jssc/SerialNativeInterface.java | 34 ++++++++++++++++++++++- src/java/libs/linux/libjSSC-0.9_armhf.so | Bin 0 -> 10523 bytes src/java/libs/linux/libjSSC-0.9_armsf.so | Bin 0 -> 10431 bytes 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/java/libs/linux/libjSSC-0.9_armhf.so create mode 100644 src/java/libs/linux/libjSSC-0.9_armsf.so diff --git a/src/java/jssc/SerialNativeInterface.java b/src/java/jssc/SerialNativeInterface.java index 2dcfbce..2c3965b 100644 --- a/src/java/jssc/SerialNativeInterface.java +++ b/src/java/jssc/SerialNativeInterface.java @@ -1,5 +1,5 @@ /* jSSC (Java Simple Serial Connector) - serial port communication library. - * © Alexey Sokolov (scream3r), 2010-2011. + * © Alexey Sokolov (scream3r), 2010-2013. * * This file is part of jSSC. * @@ -24,9 +24,11 @@ */ package jssc; +import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; +import java.io.InputStreamReader; /** * @@ -53,6 +55,8 @@ public class SerialNativeInterface { String userHome = System.getProperty("user.home"); String fileSeparator = System.getProperty("file.separator"); + String javaLibPath = System.getProperty("java.library.path");//since 2.1.0 + if(osName.equals("Linux")){ osName = "linux"; osType = OS_LINUX; @@ -76,11 +80,39 @@ public class SerialNativeInterface { else if(architecture.equals("amd64")){ architecture = "x86_64"; } + else if(architecture.equals("arm")) {//since 2.1.0 + String floatStr = "sf"; + if(javaLibPath.toLowerCase().contains("gnueabihf") || javaLibPath.toLowerCase().contains("armhf")){ + floatStr = "hf"; + } + else { + try { + Process readelfProcess = Runtime.getRuntime().exec("readelf -A /proc/self/exe"); + BufferedReader reader = new BufferedReader(new InputStreamReader(readelfProcess.getInputStream())); + String buffer = ""; + while((buffer = reader.readLine()) != null && !buffer.isEmpty()){ + if(buffer.toLowerCase().contains("Tag_ABI_VFP_args".toLowerCase())){ + floatStr = "hf"; + break; + } + } + reader.close(); + } + catch (Exception ex) { + //Do nothing + } + } + architecture = "arm" + floatStr; + } libFolderPath = userHome + fileSeparator + ".jssc" + fileSeparator + osName; libName = "jSSC-" + libVersion + "_" + architecture; libName = System.mapLibraryName(libName); + if(libName.endsWith(".dylib")){//Since 2.1.0 MacOSX 10.8 fix + libName = libName.replace(".dylib", ".jnilib"); + } + boolean loadLib = false; if(isLibFolderExist(libFolderPath)){ diff --git a/src/java/libs/linux/libjSSC-0.9_armhf.so b/src/java/libs/linux/libjSSC-0.9_armhf.so new file mode 100644 index 0000000000000000000000000000000000000000..27fbe6551463de089fe5eeee30dc5d61ccdc0ea2 GIT binary patch literal 10523 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 literal 0 HcmV?d00001 diff --git a/src/java/libs/linux/libjSSC-0.9_armsf.so b/src/java/libs/linux/libjSSC-0.9_armsf.so new file mode 100644 index 0000000000000000000000000000000000000000..937c3a0371c9cc92133311269fa3593e7fa0ba18 GIT binary patch literal 10431 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 literal 0 HcmV?d00001