From ff7dc5cb3726e9906d1e50dc8c18e7977a296638 Mon Sep 17 00:00:00 2001 From: Pritesh Nandgaonkar Date: Thu, 14 Jun 2018 19:55:29 +0100 Subject: [PATCH] Added Rsocket --- android/build.gradle | 16 ++++ .../RSocket/ApplicationManifest.xml | 4 + android/third-party/RSocket/CMakeLists.txt | 96 +++++++++++++++++++ android/third-party/RSocket/build.gradle | 35 +++++++ settings.gradle | 2 + 5 files changed, 153 insertions(+) create mode 100644 android/third-party/RSocket/ApplicationManifest.xml create mode 100644 android/third-party/RSocket/CMakeLists.txt create mode 100644 android/third-party/RSocket/build.gradle diff --git a/android/build.gradle b/android/build.gradle index 9a0ebd5d9..4e420bf1e 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -155,6 +155,21 @@ task finalizeOpenSSL(dependsOn: [prepareOpenSSL], type: Copy) { into "$thirdPartyNdkDir/OpenSSL/openssl-android-1.0.0/" } +task downloadRSocket(dependsOn: [], type: Download) { + src 'https://github.com/priteshrnandgaonkar/rsocket-cpp/archive/0.10.1.tar.gz' + onlyIfNewer true + overwrite false + dest new File(downloadsDir, 'rsocket-cpp-0.10.1.tar.gz'); +} + +task prepareRSocket(dependsOn: [downloadRSocket], type: Copy) { + from tarTree(downloadRSocket.dest) + from './third-party/RSocket/' + include 'rsocket-cpp-0.10.1/**/*', 'build.gradle', 'ApplicationManifest.xml', 'CMakeLists.txt' + includeEmptyDirs = false + into "$thirdPartyNdkDir/RSocket" +} + task prepareAllLibs() { dependsOn finalizeGlog dependsOn prepareDoubleConversion @@ -162,6 +177,7 @@ task prepareAllLibs() { dependsOn prepareFolly dependsOn finalizeEvent dependsOn finalizeOpenSSL + dependsOn prepareRSocket } android { diff --git a/android/third-party/RSocket/ApplicationManifest.xml b/android/third-party/RSocket/ApplicationManifest.xml new file mode 100644 index 000000000..4e5fbde5b --- /dev/null +++ b/android/third-party/RSocket/ApplicationManifest.xml @@ -0,0 +1,4 @@ + + + diff --git a/android/third-party/RSocket/CMakeLists.txt b/android/third-party/RSocket/CMakeLists.txt new file mode 100644 index 000000000..526c072ef --- /dev/null +++ b/android/third-party/RSocket/CMakeLists.txt @@ -0,0 +1,96 @@ +cmake_minimum_required (VERSION 3.6.0) + +PROJECT(rsocket CXX) +set(PACKAGE_NAME rsocket) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(third_party_ndk ${PROJECT_SOURCE_DIR}/../) +set(libfolly_DIR ${third_party_ndk}/folly/) +set(glog_DIR ${third_party_ndk}/glog) +set(BOOST_DIR ${third_party_ndk}/boost/boost_1_63_0/) +set(LIBEVENT_DIR ${third_party_ndk}/LibEvent/libevent-release-2.1.9/) +set(DOUBLECONVERSION_DIR ${third_party_ndk}/double-conversion/double-conversion-3.0.0/) +set(OPENSSL_DIR ${third_party_ndk}/OpenSSL/openssl-android-1.0.0/) + +set(RSOCKET_DIR ${PROJECT_SOURCE_DIR}/rsocket-cpp-0.10.1) + +list(APPEND dir_list ${RSOCKET_DIR}/) +list(APPEND dir_list ${RSOCKET_DIR}/benchmarks) +list(APPEND dir_list ${RSOCKET_DIR}/framing) +list(APPEND dir_list ${RSOCKET_DIR}/internal) +list(APPEND dir_list ${RSOCKET_DIR}/statemachine) +list(APPEND dir_list ${RSOCKET_DIR}/transports) +list(APPEND dir_list ${RSOCKET_DIR}/transports/tcp) +list(APPEND dir_list ${RSOCKET_DIR}/yarpl/flowable) +list(APPEND dir_list ${RSOCKET_DIR}/yarpl/observable) + + +file(GLOB SRC_FILES ${RSOCKET_DIR}/*.cpp + ${RSOCKET_DIR}/benchmarks/*.cpp + ${RSOCKET_DIR}/framing/*.cpp + ${RSOCKET_DIR}/statemachine/*.cpp + ${RSOCKET_DIR}/transports/*.cpp + ${RSOCKET_DIR}/transports/tcp/*.cpp + ${FOLLY_DIR}/hash/detail/*.cpp + ${RSOCKET_DIR}/yarpl/observable/*.cpp + ) + +include_directories(${dir_list}) + +add_compile_options( + -DFOLLY_HAVE_CLOCK_GETTIME=1 + -DFOLLY_HAVE_PTHREAD=1 + -DFOLLY_NO_CONFIG=1 + -DFOLLY_HAVE_MEMRCHR + -DFOLLY_MOBILE=1 + -DFOLLY_USE_LIBCPP=1 + -DFOLLY_HAVE_LIBJEMALLOC=0 + -DFOLLY_HAVE_PREADV=0 + -frtti + -fexceptions + -Wno-error + -Wno-unused-local-typedefs + -Wno-unused-variable + -Wno-sign-compare + -Wno-comment + -Wno-return-type + -Wno-tautological-constant-compare + ) + +message(STATUS "DIR LIST RSocket => " ${dir_list} ) +#file(GLOB_RECURSE SRCFILES ${RSOCKET_DIR}/*.cpp) + +add_library(${PACKAGE_NAME} SHARED ${SRC_FILES}) + +set(build_DIR ${CMAKE_SOURCE_DIR}/build) +set(libfolly_build_DIR ${build_DIR}/libfolly/${ANDROID_ABI}) + +file(MAKE_DIRECTORY ${build_DIR}) + +add_subdirectory(${libfolly_DIR} ${libfolly_build_DIR}) + +target_include_directories(${PACKAGE_NAME} PRIVATE + ${libfolly_DIR} + ${BOOST_DIR} + ${BOOST_DIR}/../ + ${LIBEVENT_DIR}/ + ${LIBEVENT_DIR}/include/ + ${LIBEVENT_DIR}/include/event2 + ${OPENSSL_DIR}/jni/openssl-android/ + ${OPENSSL_DIR}/jni/openssl-android/include + ${OPENSSL_DIR}/jni/openssl-android/include/openssl + ${glog_DIR} + ${glog_DIR}/../ + ${glog_DIR}/glog-0.3.5/src/ + ${easywsclient_DIR} + ) + + +#install(TARGETS ${PACKAGE_NAME} DESTINATION ./build/) +set(OPENSSL_LINK_DIRECTORIES ${third_party_ndk}/OpenSSL/libs/${ANDROID_ABI}/) +message(STATUS "OPENSSL_LINK_DIRECTORIES RSocket => " ${OPENSSL_LINK_DIRECTORIES} ) + +find_path(OPENSSL_LIBRARY libssl.so HINTS ${OPENSSL_LINK_DIRECTORIES}) + +target_link_libraries(${PACKAGE_NAME} folly glog double-conversion log event ${OPENSSL_LINK_DIRECTORIES}/libssl.so ${OPENSSL_LINK_DIRECTORIES}/libcrypto.so) diff --git a/android/third-party/RSocket/build.gradle b/android/third-party/RSocket/build.gradle new file mode 100644 index 000000000..21f83b739 --- /dev/null +++ b/android/third-party/RSocket/build.gradle @@ -0,0 +1,35 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.minSdkVersion + targetSdkVersion rootProject.targetSdkVersion + ndk { + abiFilters 'arm64-v8a', 'x86', 'armeabi-v7a' + } + + externalNativeBuild { + cmake { + arguments '-DANDROID_TOOLCHAIN=clang' + } + } + } + lintOptions { + abortOnError false + } + sourceSets { + main { + manifest.srcFile './ApplicationManifest.xml' + } + } + externalNativeBuild { + cmake { + path './CMakeLists.txt' + //'rsocket-cpp-0.10.0/CMakeLists.txt' + } + } +} +//'x86', 'x86_64', 'armeabi-v7a', diff --git a/settings.gradle b/settings.gradle index 89dca32b6..409b707b2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,6 +19,7 @@ include ':doubleconversion' include ':glog' include ':libevent' include ':openssl' +include ':rsocket' @@ -32,3 +33,4 @@ project(':glog').projectDir = file('android/build/third-party-ndk/glog/') project(':folly').projectDir = file('android/build/third-party-ndk/folly/') project(':libevent').projectDir = file('android/build/third-party-ndk/LibEvent/') project(':openssl').projectDir = file('android/build/third-party-ndk/OpenSSL/openssl-android-1.0.0') +project(':rsocket').projectDir = file('android/build/third-party-ndk/RSocket')