Improvements to packaging scripts

This commit is contained in:
Joseph Henry
2018-09-06 15:30:34 -07:00
parent 84fcfd3baf
commit f9e83bcb59
3 changed files with 14 additions and 54 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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