diff --git a/.gitignore b/.gitignore index 789cbdc..80b3e93 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ libwebp .DS_Store wolfssl-git var/ - +dist/ diff --git a/settings.gradle b/settings.gradle index 489f246..b65df5a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ //include ':wolfssl-lib' -include ':wolfssl-jni' +//include ':wolfssl-jni' //include ':ccc-jni' diff --git a/wolfssl-lib/build.gradle b/wolfssl-lib/build.gradle index e225219..0c79a41 100644 --- a/wolfssl-lib/build.gradle +++ b/wolfssl-lib/build.gradle @@ -1,5 +1,17 @@ apply plugin: 'com.android.library' +buildscript { + repositories { + google() + jcenter() + } + dependencies { + // gradle tools 2.2.2+ supports stable ndk + // classpath 'com.android.tools.build:gradle:2.3.0' + classpath 'com.android.tools.build:gradle:3.2.1' + } +} + android { compileSdkVersion 28 // a default can be used, but it is good practice to explicitly select build tools diff --git a/wolfssl-lib/build.sh b/wolfssl-lib/build.sh new file mode 100755 index 0000000..afb19bb --- /dev/null +++ b/wolfssl-lib/build.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# +# Building bugs with CMake and the Gradle externalNativeBuild plugin +# The STATIC build is not consistent and stopped compiling. So I found a work around. +# The SHARED build is consistent, and if I do that first, then STATIC will work **once** +# This following process will build repeated, but only release version (don't care to troublshoot) + + +# build SHARED library +build_shared() { + cp src/main/cpp/wolfssl-oem/CMakeLists_SHARED.txt src/main/cpp/wolfssl-oem/CMakeLists.txt + gradle clean + rm -rf ./externalNativeBuild + gradle build +} + +# build STATIC library +build_static() { + cp src/main/cpp/wolfssl-oem/CMakeLists_STATIC.txt src/main/cpp/wolfssl-oem/CMakeLists.txt + gradle build +} + +get_key_status() { + echo + echo $1 + echo "Press any key to continue..." + read -rsn1 +} + +make_dirs() { + # gen date stamp + UNIQ_DIR=`date +%Y-%m-%d.%H_%M_%S` + DEST_DIR="dist/wolfssl-lib_${UNIQ_DIR}/" + # release + mkdir -p ${DEST_DIR}/release/arm64-v8a + mkdir -p ${DEST_DIR}/release/armeabi-v7a + mkdir -p ${DEST_DIR}/release/x86 + mkdir -p ${DEST_DIR}/release/x86_64 + # debug + # mkdir -p ${DEST_DIR}/debug/arm64-v8a + # mkdir -p ${DEST_DIR}/debug/armeabi-v7a + # mkdir -p ${DEST_DIR}/debug/x86 + # mkdir -p ${DEST_DIR}/debug/x86_64 +} + +copy_files() { + cp .externalNativeBuild/cmake/release/arm64-v8a/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/release/arm64-v8a/ + cp .externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/release/armeabi-v7a/ + cp .externalNativeBuild/cmake/release/x86/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/release/x86/ + cp .externalNativeBuild/cmake/release/x86_64/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/release/x86_64/ + cp ./build/intermediates/cmake/release/obj/arm64-v8a/libwolfssl.so ${DEST_DIR}/release/arm64-v8a/ + cp ./build/intermediates/cmake/release/obj/armeabi-v7a/libwolfssl.so ${DEST_DIR}/release/armeabi-v7a/ + cp ./build/intermediates/cmake/release/obj/x86/libwolfssl.so ${DEST_DIR}/release/x86/ + cp ./build/intermediates/cmake/release/obj/x86_64/libwolfssl.so ${DEST_DIR}/release/x86_64/ + # + # debug not building right now...not sure I care so ignoring to move on... + # + # cp .externalNativeBuild/cmake/debug/arm64-v8a/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/debug/arm64-v8a/ + # cp .externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/debug/armeabi-v7a/ + # cp .externalNativeBuild/cmake/debug/x86/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/debug/x86/ + # cp .externalNativeBuild/cmake/debug/x86_64/src/main/cpp/wolfssl-oem/libwolfssl.a ${DEST_DIR}/debug/x86_64/ +} + + +build_shared +# get_key_status "Finished STATIC lib build." +build_static +# get_key_status "Finished SHARED lib build." +make_dirs +copy_files + diff --git a/wolfssl-lib/dist/README b/wolfssl-lib/dist/README deleted file mode 100644 index 4ee4487..0000000 --- a/wolfssl-lib/dist/README +++ /dev/null @@ -1,5 +0,0 @@ -DIST README -=========== - - -* This folder is *not* auto generated. As of right now files are copied from the ./bulld/intermediates/cmake/release/obj/... location. diff --git a/wolfssl-lib/proguard-rules.pro b/wolfssl-lib/proguard-rules.pro deleted file mode 100644 index b7420a7..0000000 --- a/wolfssl-lib/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Users/gfan/dev/sdk_current/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/wolfssl-lib/src/main/cpp/CMakeLists.txt b/wolfssl-lib/src/main/cpp/CMakeLists.txt deleted file mode 100644 index afa2fd2..0000000 --- a/wolfssl-lib/src/main/cpp/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -# this CMake file is the root, and is used to create the bin folder -add_subdirectory(wolfssl-oem) diff --git a/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists.txt b/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists.txt index e6b3b3d..4184008 100644 --- a/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists.txt +++ b/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists.txt @@ -1,7 +1,7 @@ # create a build target of "wolfssl" -# library is a SHARED (not STATIC) +# library is STATIC (.a not .so file) # add all the source code -add_library(wolfssl STATIC +add_library(wolfssl STATIC wolfssl-git/src/crl.c wolfssl-git/src/internal.c wolfssl-git/src/io.c @@ -65,8 +65,8 @@ add_library(wolfssl STATIC # therefore give the root of the search path to the find the files include_directories( wolfssl-git ) -set(distribution_DIR ${CMAKE_SOURCE_DIR}/dist) -set_target_properties(wolfssl - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY - "${CMAKE_SOURCE_DIR}/dist/lib/${ANDROID_ABI}") +# set(distribution_DIR ${CMAKE_SOURCE_DIR}/dist) +# set_target_properties(wolfssl +# PROPERTIES +# ARCHIVE_OUTPUT_DIRECTORY +# "${CMAKE_SOURCE_DIR}/dist/lib/${ANDROID_ABI}") diff --git a/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists_SHARED.txt b/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists_SHARED.txt new file mode 100644 index 0000000..9de1bc5 --- /dev/null +++ b/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists_SHARED.txt @@ -0,0 +1,72 @@ +# create a build target of "wolfssl" +# library is SHARED (.so file) +# add all the source code +add_library(wolfssl SHARED + wolfssl-git/src/crl.c + wolfssl-git/src/internal.c + wolfssl-git/src/io.c + wolfssl-git/src/keys.c + wolfssl-git/src/ocsp.c + wolfssl-git/src/sniffer.c + wolfssl-git/src/ssl.c + wolfssl-git/src/tls.c + wolfssl-git/wolfcrypt/src/aes.c + wolfssl-git/wolfcrypt/src/arc4.c + wolfssl-git/wolfcrypt/src/asm.c + wolfssl-git/wolfcrypt/src/asn.c + wolfssl-git/wolfcrypt/src/blake2b.c + wolfssl-git/wolfcrypt/src/camellia.c + wolfssl-git/wolfcrypt/src/chacha.c + wolfssl-git/wolfcrypt/src/chacha20_poly1305.c + wolfssl-git/wolfcrypt/src/coding.c + wolfssl-git/wolfcrypt/src/compress.c + wolfssl-git/wolfcrypt/src/curve25519.c + wolfssl-git/wolfcrypt/src/des3.c + wolfssl-git/wolfcrypt/src/dh.c + wolfssl-git/wolfcrypt/src/dsa.c + wolfssl-git/wolfcrypt/src/ecc.c + wolfssl-git/wolfcrypt/src/ecc_fp.c + wolfssl-git/wolfcrypt/src/ed25519.c + wolfssl-git/wolfcrypt/src/error.c + wolfssl-git/wolfcrypt/src/fe_low_mem.c + wolfssl-git/wolfcrypt/src/fe_operations.c + wolfssl-git/wolfcrypt/src/ge_low_mem.c + wolfssl-git/wolfcrypt/src/ge_operations.c + wolfssl-git/wolfcrypt/src/hash.c + wolfssl-git/wolfcrypt/src/hc128.c + wolfssl-git/wolfcrypt/src/hmac.c + wolfssl-git/wolfcrypt/src/idea.c + wolfssl-git/wolfcrypt/src/integer.c + wolfssl-git/wolfcrypt/src/logging.c + wolfssl-git/wolfcrypt/src/md2.c + wolfssl-git/wolfcrypt/src/md4.c + wolfssl-git/wolfcrypt/src/md5.c + wolfssl-git/wolfcrypt/src/memory.c + wolfssl-git/wolfcrypt/src/misc.c + wolfssl-git/wolfcrypt/src/pkcs7.c + wolfssl-git/wolfcrypt/src/pkcs12.c + wolfssl-git/wolfcrypt/src/poly1305.c + wolfssl-git/wolfcrypt/src/pwdbased.c + wolfssl-git/wolfcrypt/src/rabbit.c + wolfssl-git/wolfcrypt/src/random.c + wolfssl-git/wolfcrypt/src/ripemd.c + wolfssl-git/wolfcrypt/src/rsa.c + wolfssl-git/wolfcrypt/src/sha.c + wolfssl-git/wolfcrypt/src/sha256.c + wolfssl-git/wolfcrypt/src/sha512.c + wolfssl-git/wolfcrypt/src/srp.c + wolfssl-git/wolfcrypt/src/tfm.c + wolfssl-git/wolfcrypt/src/wc_encrypt.c + wolfssl-git/wolfcrypt/src/wc_port.c ) + +# .h files are located at wolfssl/wolfssl, wolfssl/wolfssl/wolfcrypt +# the source files are looking for wolfssl/wolfcrypt/settings.h +# wolfssl-git/wolfssl/wolfcrypt/settings.h +# therefore give the root of the search path to the find the files +include_directories( wolfssl-git ) + +# set(distribution_DIR ${CMAKE_SOURCE_DIR}/dist) +# set_target_properties(wolfssl +# PROPERTIES +# ARCHIVE_OUTPUT_DIRECTORY +# "${CMAKE_SOURCE_DIR}/dist/lib/${ANDROID_ABI}") diff --git a/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists_STATIC.txt b/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists_STATIC.txt new file mode 100644 index 0000000..4184008 --- /dev/null +++ b/wolfssl-lib/src/main/cpp/wolfssl-oem/CMakeLists_STATIC.txt @@ -0,0 +1,72 @@ +# create a build target of "wolfssl" +# library is STATIC (.a not .so file) +# add all the source code +add_library(wolfssl STATIC + wolfssl-git/src/crl.c + wolfssl-git/src/internal.c + wolfssl-git/src/io.c + wolfssl-git/src/keys.c + wolfssl-git/src/ocsp.c + wolfssl-git/src/sniffer.c + wolfssl-git/src/ssl.c + wolfssl-git/src/tls.c + wolfssl-git/wolfcrypt/src/aes.c + wolfssl-git/wolfcrypt/src/arc4.c + wolfssl-git/wolfcrypt/src/asm.c + wolfssl-git/wolfcrypt/src/asn.c + wolfssl-git/wolfcrypt/src/blake2b.c + wolfssl-git/wolfcrypt/src/camellia.c + wolfssl-git/wolfcrypt/src/chacha.c + wolfssl-git/wolfcrypt/src/chacha20_poly1305.c + wolfssl-git/wolfcrypt/src/coding.c + wolfssl-git/wolfcrypt/src/compress.c + wolfssl-git/wolfcrypt/src/curve25519.c + wolfssl-git/wolfcrypt/src/des3.c + wolfssl-git/wolfcrypt/src/dh.c + wolfssl-git/wolfcrypt/src/dsa.c + wolfssl-git/wolfcrypt/src/ecc.c + wolfssl-git/wolfcrypt/src/ecc_fp.c + wolfssl-git/wolfcrypt/src/ed25519.c + wolfssl-git/wolfcrypt/src/error.c + wolfssl-git/wolfcrypt/src/fe_low_mem.c + wolfssl-git/wolfcrypt/src/fe_operations.c + wolfssl-git/wolfcrypt/src/ge_low_mem.c + wolfssl-git/wolfcrypt/src/ge_operations.c + wolfssl-git/wolfcrypt/src/hash.c + wolfssl-git/wolfcrypt/src/hc128.c + wolfssl-git/wolfcrypt/src/hmac.c + wolfssl-git/wolfcrypt/src/idea.c + wolfssl-git/wolfcrypt/src/integer.c + wolfssl-git/wolfcrypt/src/logging.c + wolfssl-git/wolfcrypt/src/md2.c + wolfssl-git/wolfcrypt/src/md4.c + wolfssl-git/wolfcrypt/src/md5.c + wolfssl-git/wolfcrypt/src/memory.c + wolfssl-git/wolfcrypt/src/misc.c + wolfssl-git/wolfcrypt/src/pkcs7.c + wolfssl-git/wolfcrypt/src/pkcs12.c + wolfssl-git/wolfcrypt/src/poly1305.c + wolfssl-git/wolfcrypt/src/pwdbased.c + wolfssl-git/wolfcrypt/src/rabbit.c + wolfssl-git/wolfcrypt/src/random.c + wolfssl-git/wolfcrypt/src/ripemd.c + wolfssl-git/wolfcrypt/src/rsa.c + wolfssl-git/wolfcrypt/src/sha.c + wolfssl-git/wolfcrypt/src/sha256.c + wolfssl-git/wolfcrypt/src/sha512.c + wolfssl-git/wolfcrypt/src/srp.c + wolfssl-git/wolfcrypt/src/tfm.c + wolfssl-git/wolfcrypt/src/wc_encrypt.c + wolfssl-git/wolfcrypt/src/wc_port.c ) + +# .h files are located at wolfssl/wolfssl, wolfssl/wolfssl/wolfcrypt +# the source files are looking for wolfssl/wolfcrypt/settings.h +# wolfssl-git/wolfssl/wolfcrypt/settings.h +# therefore give the root of the search path to the find the files +include_directories( wolfssl-git ) + +# set(distribution_DIR ${CMAKE_SOURCE_DIR}/dist) +# set_target_properties(wolfssl +# PROPERTIES +# ARCHIVE_OUTPUT_DIRECTORY +# "${CMAKE_SOURCE_DIR}/dist/lib/${ANDROID_ABI}")