diff options
-rwxr-xr-x | .gitignore | 2 | ||||
-rw-r--r-- | java/CMakeLists.txt | 13 | ||||
-rw-r--r-- | java/build.xml | 20 | ||||
-rw-r--r-- | java/src/com/zerotier/sdk/Node.java | 4 |
4 files changed, 37 insertions, 2 deletions
@@ -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(); |