Improvements to packaging scripts
This commit is contained in:
@@ -1,25 +0,0 @@
|
|||||||
OSTYPE=$(shell uname -s | tr '[A-Z]' '[a-z]')
|
|
||||||
BUILD=build/$(OSTYPE)
|
|
||||||
|
|
||||||
ifeq ($(OSTYPE),darwin)
|
|
||||||
SHARED_LIB=libzt.dylib
|
|
||||||
endif
|
|
||||||
ifeq ($(OSTYPE),linux)
|
|
||||||
SHARED_LIB=libzt.so
|
|
||||||
endif
|
|
||||||
|
|
||||||
example_java_app:
|
|
||||||
javac *.java
|
|
||||||
|
|
||||||
example_java_app_1.6:
|
|
||||||
javac -source 1.6 -bootclasspath /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.41.x86_64/jre/lib/rt.jar -target 1.6 *.java
|
|
||||||
|
|
||||||
copy_dynamic_lib:
|
|
||||||
cp ../../bin/lib/$(SHARED_LIB) .
|
|
||||||
|
|
||||||
jar:
|
|
||||||
jar cf libzt.jar libzt.dylib zerotier/ZeroTier.class
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -rf *.jar *.dylib *.so
|
|
||||||
-find . -type f \( -name '*.class' \) -delete
|
|
||||||
@@ -1,27 +1,8 @@
|
|||||||
## ZeroTier with Java via JNI
|
## ZeroTier with Java via JNI
|
||||||
***
|
***
|
||||||
|
|
||||||
### Example App
|
### ExampleApp
|
||||||
|
|
||||||
- From libzt main directory, build shared library: `make shared_jni_lib`
|
Copy `zt.jar` file into this directory
|
||||||
- Copy the resultant dynamic library (`*.so` or `*.dylib`) from `build/` to this current directory
|
Extract shared library from JAR file: `jar xf zt.jar libzt.dylib`
|
||||||
- Change to this directory and `make example_java_app`
|
Build ExampleApp: `javac -cp ".:zt.jar" ExampleApp.java`
|
||||||
- Run: `java -cp "." ExampleApp`
|
|
||||||
|
|
||||||
### JAR file (with embedded C++ dynamic library)
|
|
||||||
|
|
||||||
```
|
|
||||||
make example_java_app
|
|
||||||
make copy_dynamic_lib
|
|
||||||
make jar
|
|
||||||
```
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
|
|
||||||
Upon execution, it will load the libzt dynamic library via the `loadLibrary` method and begin generating an identity.
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
More resources on JNI usage:
|
|
||||||
|
|
||||||
http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/index.html
|
|
||||||
@@ -38,6 +38,7 @@ XCODE_IOS_PROJ_DIR=$(pwd)/"packages/xcode_ios"
|
|||||||
XCODE_MACOS_PROJ_DIR=$(pwd)/"packages/xcode_macos"
|
XCODE_MACOS_PROJ_DIR=$(pwd)/"packages/xcode_macos"
|
||||||
|
|
||||||
mkdir $FINISHED_PRODUCTS_DIR
|
mkdir $FINISHED_PRODUCTS_DIR
|
||||||
|
mkdir $STAGING_DIR
|
||||||
|
|
||||||
# Check that projects exist, generate them and exit if they don't exist
|
# Check that projects exist, generate them and exit if they don't exist
|
||||||
generate_projects_if_necessary()
|
generate_projects_if_necessary()
|
||||||
@@ -124,6 +125,7 @@ build_all_products()
|
|||||||
fi
|
fi
|
||||||
# Java Archive (JAR)
|
# Java Archive (JAR)
|
||||||
if true; then
|
if true; then
|
||||||
|
CURR_BUILD_PRODUCTS_DIR=$LIB_PRODUCTS_DIR
|
||||||
CMAKE_FLAGS=$CMAKE_FLAGS" -DJNI=1"
|
CMAKE_FLAGS=$CMAKE_FLAGS" -DJNI=1"
|
||||||
CURR_TMP_PRODUCT_DIR=$STAGING_DIR/$CONFIG/macos-$(uname -m)
|
CURR_TMP_PRODUCT_DIR=$STAGING_DIR/$CONFIG/macos-$(uname -m)
|
||||||
mkdir -p $CURR_TMP_PRODUCT_DIR
|
mkdir -p $CURR_TMP_PRODUCT_DIR
|
||||||
@@ -132,16 +134,17 @@ build_all_products()
|
|||||||
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=$CONFIG "-DJNI=1 -DBUILD_TESTS=0"
|
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=$CONFIG "-DJNI=1 -DBUILD_TESTS=0"
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cd $PROJROOT/packages/java
|
cd $PROJROOT/packages/java
|
||||||
#cp $CURR_BUILD_PRODUCTS_DIR/libzt.dylib .
|
cp $CURR_BUILD_PRODUCTS_DIR/libzt.dylib .
|
||||||
javac com/zerotier/libzt/*.java
|
javac com/zerotier/libzt/*.java
|
||||||
jar cf zt.jar $CURR_BUILD_PRODUCTS_DIR/libzt.dylib com/zerotier/libzt/*.class
|
jar cf zt.jar libzt.dylib com/zerotier/libzt/*.class
|
||||||
|
rm libzt.dylib
|
||||||
mv zt.jar $CURR_TMP_PRODUCT_DIR
|
mv zt.jar $CURR_TMP_PRODUCT_DIR
|
||||||
cd -
|
cd -
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Linux targets
|
# Linux targets
|
||||||
if [[ $OSNAME = *"linux"* ]]; then
|
if [[ $OSNAME = *"linux"* ]]; then
|
||||||
CURR_BUILD_PRODUCTS_DIR=$LIB_PRODUCTS_DIR/
|
CURR_BUILD_PRODUCTS_DIR=$LIB_PRODUCTS_DIR
|
||||||
# Ordinary libraries
|
# Ordinary libraries
|
||||||
if true; then
|
if true; then
|
||||||
rm -rf $LIB_PRODUCTS_DIR
|
rm -rf $LIB_PRODUCTS_DIR
|
||||||
@@ -150,7 +153,7 @@ build_all_products()
|
|||||||
# -j $BUILD_CONCURRENCY
|
# -j $BUILD_CONCURRENCY
|
||||||
CURR_TMP_PRODUCT_DIR=$STAGING_DIR/$CONFIG/linux-$(uname -m)
|
CURR_TMP_PRODUCT_DIR=$STAGING_DIR/$CONFIG/linux-$(uname -m)
|
||||||
mkdir -p $CURR_TMP_PRODUCT_DIR
|
mkdir -p $CURR_TMP_PRODUCT_DIR
|
||||||
mv ${CURR_BUILD_PRODUCTS_DIR}libzt.* $CURR_TMP_PRODUCT_DIR
|
mv $CURR_BUILD_PRODUCTS_DIR/libzt.* $CURR_TMP_PRODUCT_DIR
|
||||||
fi
|
fi
|
||||||
# Java JAR file
|
# Java JAR file
|
||||||
if true; then
|
if true; then
|
||||||
@@ -161,9 +164,10 @@ build_all_products()
|
|||||||
CURR_TMP_PRODUCT_DIR=$STAGING_DIR/$CONFIG/linux-$(uname -m)
|
CURR_TMP_PRODUCT_DIR=$STAGING_DIR/$CONFIG/linux-$(uname -m)
|
||||||
mkdir -p $CURR_TMP_PRODUCT_DIR
|
mkdir -p $CURR_TMP_PRODUCT_DIR
|
||||||
cd $PROJROOT/packages/java
|
cd $PROJROOT/packages/java
|
||||||
#cp $CURR_BUILD_PRODUCTS_DIR/libzt.so .
|
cp $CURR_BUILD_PRODUCTS_DIR/libzt.so .
|
||||||
javac com/zerotier/libzt/*.java
|
javac com/zerotier/libzt/*.java
|
||||||
jar cf zt.jar $CURR_BUILD_PRODUCTS_DIR/libzt.so com/zerotier/libzt/*.class
|
jar cf zt.jar libzt.dylib com/zerotier/libzt/*.class
|
||||||
|
rm libzt.dylib
|
||||||
mv zt.jar $CURR_TMP_PRODUCT_DIR
|
mv zt.jar $CURR_TMP_PRODUCT_DIR
|
||||||
cd -
|
cd -
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user