From c8c40bca17183fcdf0ac11ec78e2f5d2af4dd7c2 Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Fri, 11 Feb 2022 02:58:45 -0800 Subject: [PATCH] openssl from prefab (google) (#3429) Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/3429 Instead of downloading/patching/building openssl, use the prefab package prepared by Google. changelog: Consume openssl from maven (prefab) Reviewed By: passy Differential Revision: D34143349 fbshipit-source-id: 0ca92be6628b1b27a59b3e4ad8278cf8fef6d5d8 --- android/CMakeLists.txt | 3 +- android/build.gradle | 1 + android/third-party/native.gradle | 43 ------------------- .../overrides/Folly/CMakeLists.txt | 10 +---- .../third-party/overrides/Folly/build.gradle | 9 +++- .../overrides/OpenSSL/ApplicationManifest.xml | 11 ----- .../overrides/OpenSSL/build.gradle | 39 ----------------- .../overrides/RSocket/CMakeLists.txt | 11 ++--- .../overrides/RSocket/build.gradle | 11 ++++- build.gradle | 2 + xplat/CMakeLists.txt | 6 +-- xplat/build.gradle | 7 ++- 12 files changed, 35 insertions(+), 118 deletions(-) delete mode 100644 android/third-party/overrides/OpenSSL/ApplicationManifest.xml delete mode 100644 android/third-party/overrides/OpenSSL/build.gradle diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt index 2cba8da42..ca202c935 100644 --- a/android/CMakeLists.txt +++ b/android/CMakeLists.txt @@ -41,7 +41,6 @@ set(external_DIR ${PROJECT_SOURCE_DIR}/third-party/external) set(libfolly_DIR ${external_DIR}/folly/) set(glog_DIR ${external_DIR}/glog) set(BOOST_DIR ${external_DIR}/boost/boost_1_63_0/) -set(OPENSSL_DIR ${external_DIR}/OpenSSL/openssl-1.1.1k/) set(LIBEVENT_DIR ${external_DIR}/LibEvent/libevent-2.1.11-stable/) set(build_DIR ${CMAKE_SOURCE_DIR}/build) @@ -51,6 +50,7 @@ set(libfolly_build_DIR ${build_DIR}/libfolly/${ANDROID_ABI}) file(MAKE_DIRECTORY ${build_DIR}) find_package(fbjni REQUIRED CONFIG) +find_package(openssl REQUIRED CONFIG) add_subdirectory(${libflipper_DIR} ${libflipper_build_DIR}) target_include_directories(${PACKAGE_NAME} PRIVATE @@ -65,7 +65,6 @@ target_include_directories(${PACKAGE_NAME} PRIVATE ${LIBEVENT_DIR}/ ${LIBEVENT_DIR}/include/ ${LIBEVENT_DIR}/include/event2 - ${OPENSSL_DIR}/include ) target_link_libraries(${PACKAGE_NAME} fbjni::fbjni flippercpp) diff --git a/android/build.gradle b/android/build.gradle index 29ab329d4..ba7e90750 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -62,6 +62,7 @@ android { dependencies { compileOnly deps.proguardAnnotations + implementation deps.openssl implementation deps.fbjni implementation deps.soloader implementation deps.jsr305 diff --git a/android/third-party/native.gradle b/android/third-party/native.gradle index c977810b7..5e8fd7684 100644 --- a/android/third-party/native.gradle +++ b/android/third-party/native.gradle @@ -193,48 +193,6 @@ task finalizeLibEvent(dependsOn: [prepareLibEvent2], type: Copy) { into "$externalDir/LibEvent/libevent-2.1.11-stable/" } -task downloadOpenSSLSource(dependsOn: [], type: Download) { - onlyIf { isCacheOutOfDate(CACHE_REVISION) } - src 'https://github.com/passy/openssl-android/releases/download/1.1.1k/openssl-1.1.1k.tar.gz' - onlyIfNewer true - overwrite false - dest new File(downloadsDir, getDownloadFileName(src)) -} - -task downloadOpenSSLLibs(dependsOn: [], type: Download) { - onlyIf { isCacheOutOfDate(CACHE_REVISION) } - src 'https://github.com/passy/openssl-android/releases/download/1.1.1k/openssl-1.1.1k-prebuilt.tar.gz' - onlyIfNewer true - overwrite false - dest new File(downloadsDir, getDownloadFileName(src)) -} - -task prepareOpenSSL(dependsOn: [downloadOpenSSLSource, downloadOpenSSLLibs], type: Copy) { - onlyIf { isCacheOutOfDate(CACHE_REVISION) } - from tarTree(downloadOpenSSLSource.dest) - from tarTree(downloadOpenSSLLibs.dest) - from './overrides/OpenSSL/' - include 'openssl-1.1.1k/**/*' - include 'libs/**/*' - includeEmptyDirs = false - into "$externalDir/OpenSSL/" -} - -task configureOpenSSL(dependsOn: [prepareOpenSSL], type: Exec) { - onlyIf { isCacheOutOfDate(CACHE_REVISION) } - workingDir "$externalDir/OpenSSL/openssl-1.1.1k/" - // This is only to generate a buildconfig.h in the next step. I **believe** - // that the options here don't really matter for that file. - commandLine './Configure', 'linux-generic64' -} - -task finalizeOpenSSL(dependsOn: [configureOpenSSL], type: Exec) { - onlyIf { isCacheOutOfDate(CACHE_REVISION) } - workingDir "$externalDir/OpenSSL/openssl-1.1.1k/" - commandLine 'make', 'build_generated' - onlyIf { !file("$externalDir/OpenSSL/openssl-1.1.1k/include/openssl/opensslconf.h").exists() } -} - task downloadRSocket(dependsOn: [], type: Download) { onlyIf { isCacheOutOfDate(CACHE_REVISION) } src 'https://github.com/priteshrnandgaonkar/rsocket-cpp/archive/0.10.7.tar.gz' @@ -265,7 +223,6 @@ def allTasks = [ prepareBoost, finalizeFolly, finalizeLibEvent, - finalizeOpenSSL, prepareRSocket, writeCacheRevision, ] diff --git a/android/third-party/overrides/Folly/CMakeLists.txt b/android/third-party/overrides/Folly/CMakeLists.txt index cc1c5a3b4..053c970f9 100644 --- a/android/third-party/overrides/Folly/CMakeLists.txt +++ b/android/third-party/overrides/Folly/CMakeLists.txt @@ -16,7 +16,6 @@ list(APPEND dir_list ${FOLLY_DIR}/memory/detail) set(BOOST_DIR ../boost/boost_1_63_0/) set(GLOG_DIR ../glog/) -set(OPENSSL_DIR ../OpenSSL/openssl-1.1.1k/) set(LIBEVENT_DIR ../LibEvent/libevent-2.1.11-stable/) set(DOUBLECONVERSION_DIR ../double-conversion/double-conversion-3.0.0/) @@ -24,7 +23,6 @@ list(APPEND dir_list ${BOOST_DIR}) list(APPEND dir_list ${BOOST_DIR}/../) list(APPEND dir_list ${LIBEVENT_DIR}/) list(APPEND dir_list ${LIBEVENT_DIR}/include/) -list(APPEND dir_list ${OPENSSL_DIR}/include/) include_directories(${dir_list}) @@ -121,22 +119,18 @@ set(libevent_build_DIR ${build_DIR}/libevent/${ANDROID_ABI}) file(MAKE_DIRECTORY ${build_DIR}) +find_package(openssl REQUIRED CONFIG) add_subdirectory(${GLOG_DIR} ${libglog_build_DIR}) add_subdirectory(${DOUBLECONVERSION_DIR} ${doubleconversion_build_DIR}) add_subdirectory(${LIBEVENT_DIR} ${libevent_build_DIR}) target_include_directories(${PACKAGE_NAME} PRIVATE - ${OPENSSL_DIR}/include/ ${BOOST_DIR} ${BOOST_DIR}/../ ${GLOG_DIR}/../ ${GLOG_DIR}/glog-0.3.5/src/ ${DOUBLECONVERSION_DIR}) - -set(OPENSSL_LINK_DIRECTORIES ${PROJECT_SOURCE_DIR}/../OpenSSL/libs/${ANDROID_ABI}/) -find_path(OPENSSL_LIBRARY libssl.a HINTS ${OPENSSL_LINK_DIRECTORIES}) - install(TARGETS ${PACKAGE_NAME} DESTINATION ./build/) -target_link_libraries(${PACKAGE_NAME} glog double-conversion ${OPENSSL_LINK_DIRECTORIES}/libssl.a ${OPENSSL_LINK_DIRECTORIES}/libcrypto.a event event_extra event_core) +target_link_libraries(${PACKAGE_NAME} glog double-conversion openssl::ssl openssl::crypto event event_extra event_core) diff --git a/android/third-party/overrides/Folly/build.gradle b/android/third-party/overrides/Folly/build.gradle index 9e6da5bd9..576ca74b3 100644 --- a/android/third-party/overrides/Folly/build.gradle +++ b/android/third-party/overrides/Folly/build.gradle @@ -23,23 +23,30 @@ android { } } } + lintOptions { abortOnError false } + sourceSets { main { manifest.srcFile './ApplicationManifest.xml' } } + externalNativeBuild { cmake { path './CMakeLists.txt' } } + buildFeatures { + prefab true + } + dependencies { implementation project(':glog') implementation project(':doubleconversion') - + implementation deps.openssl } } diff --git a/android/third-party/overrides/OpenSSL/ApplicationManifest.xml b/android/third-party/overrides/OpenSSL/ApplicationManifest.xml deleted file mode 100644 index eecdcb834..000000000 --- a/android/third-party/overrides/OpenSSL/ApplicationManifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/android/third-party/overrides/OpenSSL/build.gradle b/android/third-party/overrides/OpenSSL/build.gradle deleted file mode 100644 index 91e60d7b9..000000000 --- a/android/third-party/overrides/OpenSSL/build.gradle +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -apply plugin: 'com.android.library' - -android { - compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion - ndkVersion rootProject.ndkVersion - - defaultConfig { - minSdkVersion rootProject.minSdkVersion - targetSdkVersion rootProject.targetSdkVersion - externalNativeBuild { - ndkBuild { - arguments "NDK_APPLICATION_MK:=$projectDir/jni/Application.mk", - "NDK_TOOLCHAIN_VERSION:=clang" - cppFlags "-std=c++11" - } - } - } - externalNativeBuild { - ndkBuild { - path "$projectDir/jni/Android.mk" - } - } - lintOptions { - abortOnError false - } - sourceSets { - main { - manifest.srcFile './ApplicationManifest.xml' - } - } -} diff --git a/android/third-party/overrides/RSocket/CMakeLists.txt b/android/third-party/overrides/RSocket/CMakeLists.txt index 7963ce6ca..9608701bc 100644 --- a/android/third-party/overrides/RSocket/CMakeLists.txt +++ b/android/third-party/overrides/RSocket/CMakeLists.txt @@ -12,7 +12,6 @@ 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-2.1.11-stable/) set(DOUBLECONVERSION_DIR ${third_party_ndk}/double-conversion/double-conversion-3.0.0/) -set(OPENSSL_DIR ${third_party_ndk}/OpenSSL/openssl-1.1.1k/) set(RSOCKET_ROOT_DIR ${PROJECT_SOURCE_DIR}/rsocket-cpp-${RSOCKET_VERSION}) set(RSOCKET_DIR ${PROJECT_SOURCE_DIR}/rsocket-cpp-${RSOCKET_VERSION}/rsocket) @@ -61,6 +60,8 @@ add_compile_options( -Wno-tautological-constant-compare ) +find_package(openssl REQUIRED CONFIG) + add_library(${PACKAGE_NAME} STATIC ${SRC_FILES}) set(build_DIR ${CMAKE_SOURCE_DIR}/build) @@ -77,15 +78,9 @@ target_include_directories(${PACKAGE_NAME} PRIVATE ${LIBEVENT_DIR}/ ${LIBEVENT_DIR}/include/ ${LIBEVENT_DIR}/include/event2 - ${OPENSSL_DIR}/include/ ${glog_DIR} ${glog_DIR}/../ ${glog_DIR}/glog-0.3.5/src/ ) - -set(OPENSSL_LINK_DIRECTORIES ${third_party_ndk}/OpenSSL/libs/${ANDROID_ABI}/) - -find_path(OPENSSL_LIBRARY libssl.a HINTS ${OPENSSL_LINK_DIRECTORIES}) - -target_link_libraries(${PACKAGE_NAME} folly glog double-conversion log event ${OPENSSL_LINK_DIRECTORIES}/libssl.a ${OPENSSL_LINK_DIRECTORIES}/libcrypto.a) +target_link_libraries(${PACKAGE_NAME} folly glog double-conversion log event openssl::ssl openssl::crypto) diff --git a/android/third-party/overrides/RSocket/build.gradle b/android/third-party/overrides/RSocket/build.gradle index 71460b2c0..bc67a9ba6 100644 --- a/android/third-party/overrides/RSocket/build.gradle +++ b/android/third-party/overrides/RSocket/build.gradle @@ -17,7 +17,7 @@ android { targetSdkVersion rootProject.targetSdkVersion externalNativeBuild { cmake { - arguments '-DANDROID_TOOLCHAIN=clang' + arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared' } } } @@ -29,9 +29,18 @@ android { manifest.srcFile './ApplicationManifest.xml' } } + externalNativeBuild { cmake { path './CMakeLists.txt' } } + + buildFeatures { + prefab true + } + + dependencies { + implementation deps.openssl + } } diff --git a/build.gradle b/build.gradle index 34ff6aeed..67848f78d 100644 --- a/build.gradle +++ b/build.gradle @@ -69,7 +69,9 @@ ext.deps = [ fbjni : 'com.facebook.fbjni:fbjni:0.3.0', screenshot : 'com.facebook.testing.screenshot:core:0.15.0', boltsTasks : 'com.parse.bolts:bolts-tasks:1.4.0', + // Third-party websocket : 'org.java-websocket:Java-WebSocket:1.5.2', + openssl : 'com.android.ndk.thirdparty:openssl:1.1.1g-alpha-1', // Annotations jsr305 : 'com.google.code.findbugs:jsr305:3.0.2', inferAnnotations : 'com.facebook.infer.annotation:infer-annotation:0.18.0', diff --git a/xplat/CMakeLists.txt b/xplat/CMakeLists.txt index e02d5ef70..fcb3e5291 100644 --- a/xplat/CMakeLists.txt +++ b/xplat/CMakeLists.txt @@ -42,6 +42,7 @@ add_compile_options(-DFOLLY_NO_CONFIG -Wno-tautological-constant-compare ) +find_package(openssl REQUIRED CONFIG) file(GLOB SOURCES Flipper/*.cpp) add_library(${PACKAGE_NAME} STATIC ${SOURCES}) @@ -70,7 +71,4 @@ target_include_directories(${PACKAGE_NAME} PRIVATE ${glog_DIR}/glog-0.3.5/src/ ) -set(OPENSSL_LINK_DIRECTORIES ${external_DIR}/OpenSSL/libs/${ANDROID_ABI}/) -find_path(OPENSSL_LIBRARY libssl.a HINTS ${OPENSSL_LINK_DIRECTORIES}) - -target_link_libraries(${PACKAGE_NAME} folly rsocket glog double-conversion log event ${OPENSSL_LINK_DIRECTORIES}/libssl.a ${OPENSSL_LINK_DIRECTORIES}/libcrypto.a) +target_link_libraries(${PACKAGE_NAME} folly rsocket glog double-conversion log event openssl::ssl openssl::crypto) diff --git a/xplat/build.gradle b/xplat/build.gradle index c2b7f22e2..521a47955 100644 --- a/xplat/build.gradle +++ b/xplat/build.gradle @@ -17,7 +17,7 @@ android { targetSdkVersion rootProject.targetSdkVersion externalNativeBuild { cmake { - arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static' + arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared' } } } @@ -33,10 +33,15 @@ android { } } + buildFeatures { + prefab true + } + dependencies { implementation project(':third-party') implementation project(':rsocket') implementation project(':folly') + implementation deps.openssl } }