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
This commit is contained in:
Lorenzo Blasa
2022-02-11 02:58:45 -08:00
committed by Facebook GitHub Bot
parent 9973014116
commit c8c40bca17
12 changed files with 35 additions and 118 deletions

View File

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

View File

@@ -62,6 +62,7 @@ android {
dependencies {
compileOnly deps.proguardAnnotations
implementation deps.openssl
implementation deps.fbjni
implementation deps.soloader
implementation deps.jsr305

View File

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

View File

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

View File

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

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ 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.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.openssl">
</manifest>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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