summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.gitignore2
-rw-r--r--java/CMakeLists.txt13
-rw-r--r--java/build.xml20
-rw-r--r--java/src/com/zerotier/sdk/Node.java4
4 files changed, 37 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 66a9e748..18fd1dcb 100755
--- a/.gitignore
+++ b/.gitignore
@@ -46,3 +46,5 @@ java/doc/
windows/ZeroTierOne/Debug/
java/build_win64/
java/build_win32/
+
+/java/mac32_64/
diff --git a/java/CMakeLists.txt b/java/CMakeLists.txt
index 81345f1d..9c06ce45 100644
--- a/java/CMakeLists.txt
+++ b/java/CMakeLists.txt
@@ -5,7 +5,13 @@ project(ZeroTierOneJNI)
find_package(Java COMPONENTS Development)
message("JAVA_HOME: $ENV{JAVA_HOME}")
+if(WIN32)
set(Java_INCLUDE_DIRS $ENV{JAVA_HOME}/include)
+endif()
+
+if(APPLE)
+set(Java_INCLUDE_DIRS "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/JavaVM.framework/Headers")
+endif()
message("Java Include Dirs: ${Java_INCLUDE_DIRS}")
@@ -14,6 +20,11 @@ if(WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /W3 /MP")
endif()
+if(APPLE)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch i386 -arch x86_64 -Wall -O3 -flto -fPIE -fvectorize -fstack-protector -mmacosx-version-min=10.7 -Wno-unused-private-field")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS} -fno-rtti")
+endif()
+
set(src_files
../ext/lz4/lz4.c
../ext/json-parser/json.c
@@ -62,6 +73,8 @@ include_directories(
add_library(${PROJECT_NAME} SHARED ${src_files})
+set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".jnilib")
+
set(link_libs )
if(WIN32)
diff --git a/java/build.xml b/java/build.xml
index 5668894e..0f1b311a 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -5,11 +5,16 @@
<os family="windows"/>
</condition>
+ <condition property="isMac">
+ <os family="mac"/>
+ </condition>
+
<target name="clean">
<delete dir="bin" failonerror="false"/>
<delete dir="classes" failonerror="false"/>
<delete dir="build_win32" failonerror="false"/>
<delete dir="build_win64" failonerror="false"/>
+ <delete dir="mac32_64" failonerror="false"/>
<delete dir="libs" failonerror="false"/>
<delete dir="obj" failonerror="false"/>
</target>
@@ -72,7 +77,20 @@
overwrite="true"/>
</target>
- <target name="build" depends="build_java,build_android,windows">
+ <target name="mac" if="isMac">
+ <mkdir dir="mac32_64"/>
+ <exec dir="mac32_64/" executable="cmake" failonerror="true">
+ <arg line=".. -DCMAKE_BUILD_TYPE=Release"/>
+ </exec>
+ <exec dir="mac32_64/" executable="cmake" failonerror="true">
+ <arg line="--build . --config Release"/>
+ </exec>
+ <copy file="mac32_64/libZeroTierOneJNI.jnilib"
+ tofile="classes/lib/libZeroTierOneJNI.jnilib"
+ overwrite="true"/>
+ </target>
+
+ <target name="build" depends="build_java,build_android,windows,mac">
<jar destfile="bin/ZeroTierOneSDK.jar" basedir="classes"/>
</target>
diff --git a/java/src/com/zerotier/sdk/Node.java b/java/src/com/zerotier/sdk/Node.java
index 8484ab59..c7581ca4 100644
--- a/java/src/com/zerotier/sdk/Node.java
+++ b/java/src/com/zerotier/sdk/Node.java
@@ -47,8 +47,10 @@ public class Node {
} else {
NativeUtils.loadLibraryFromJar("/lib/ZeroTierOneJNI_win32.dll");
}
+ } else if(System.getProperty("os.name").startsWith("Mac")) {
+ NativeUtils.loadLibraryFromJar("/lib/libZeroTierOneJNI.jnilib");
} else {
- // TODO: Mac
+ // TODO: Linux
}
} catch (IOException ioe) {
ioe.printStackTrace();