Files
flipper/android/third-party/native.gradle
Pascal Hartig 608b9182ce Add version headers
Summary: Last big batch of adding license headers in Java code where they were missing.

Reviewed By: jknoxville

Differential Revision: D15164860

fbshipit-source-id: 4c0a61eec7b5659fdc674ebed85f2ade60dd0aa0
2019-05-01 08:14:55 -07:00

252 lines
8.4 KiB
Groovy

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the LICENSE file
* in the root directory of this source tree.
*/
import org.apache.tools.ant.filters.ReplaceTokens
// !!!
// Increment this when making changes to any of the native
// dependencies.
// !!!
final def CACHE_REVISION = 3
final def externalDir = new File("$projectDir/external")
final def downloadsDir = new File("$externalDir/downloads")
final def revisionFile = new File("$buildDir/external_cache_revision.txt")
final def getDownloadFileName = { final URL src ->
final def i = src.file.lastIndexOf('/')
return src.file.substring(i + 1)
}
final def isCacheOutOfDate = { final Integer revision ->
if (!revisionFile.exists()) {
return true
} else {
final def content = revisionFile.text
return !content.isInteger() || content as Integer != revision
}
}
task createNativeDepsDirectories {
buildDir.mkdirs()
downloadsDir.mkdirs()
externalDir.mkdirs()
}
task cleanNative(type: Delete) {
delete externalDir
}
task downloadGlog(dependsOn: createNativeDepsDirectories, type: Download) {
src 'https://github.com/google/glog/archive/v0.3.5.tar.gz'
onlyIfNewer true
overwrite false
dest new File(downloadsDir, 'glog-' + getDownloadFileName(src))
}
task prepareGlog(dependsOn: [downloadGlog], type: Copy) {
onlyIf { isCacheOutOfDate(CACHE_REVISION) }
from tarTree(downloadGlog.dest)
from './overrides/glog/'
include 'glog-0.3.5/src/**/*', 'Android.mk', 'config.h', 'build.gradle', 'CMakeLists.txt', 'ApplicationManifest.xml'
includeEmptyDirs = false
filesMatching('**/*.h.in') {
filter(ReplaceTokens, tokens: [
ac_cv_have_unistd_h: '1',
ac_cv_have_stdint_h: '1',
ac_cv_have_systypes_h: '1',
ac_cv_have_inttypes_h: '1',
ac_cv_have_libgflags: '0',
ac_google_start_namespace: 'namespace google {',
ac_cv_have_uint16_t: '1',
ac_cv_have_u_int16_t: '1',
ac_cv_have___uint16: '0',
ac_google_end_namespace: '}',
ac_cv_have___builtin_expect: '1',
ac_google_namespace: 'google',
ac_cv___attribute___noinline: '__attribute__ ((noinline))',
ac_cv___attribute___noreturn: '__attribute__ ((noreturn))',
ac_cv___attribute___printf_4_5: '__attribute__((__format__ (__printf__, 4, 5)))'
])
it.path = (it.name - '.in')
}
into "$externalDir/glog"
}
task finalizeGlog(dependsOn: [prepareGlog], type: Copy) {
from './overrides/glog/'
include 'logging.cc'
includeEmptyDirs = false
into "$externalDir/glog/glog-0.3.5/src/"
}
task downloadDoubleConversion(dependsOn: createNativeDepsDirectories, type: Download) {
src 'https://github.com/google/double-conversion/archive/v3.0.0.tar.gz'
onlyIfNewer true
overwrite false
dest new File(downloadsDir, 'double-conversion-' + getDownloadFileName(src))
}
task prepareDoubleConversion(dependsOn: [downloadDoubleConversion], type: Copy) {
from tarTree(downloadDoubleConversion.dest)
from './overrides/DoubleConversion/'
include 'double-conversion-3.0.0/**/*', 'build.gradle', 'CMakeLists.txt', 'ApplicationManifest.xml'
includeEmptyDirs = false
into "$externalDir/double-conversion"
}
task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) {
src 'https://github.com/react-native-community/boost-for-react-native/releases/download/v1.63.0-0/boost_1_63_0.tar.gz'
onlyIfNewer true
overwrite true
dest new File(downloadsDir, getDownloadFileName(src))
}
task prepareBoost(dependsOn: [downloadBoost], type: Copy) {
from tarTree(resources.gzip(downloadBoost.dest))
include 'boost_1_63_0/boost/**/*.hpp', 'boost_1_63_0/boost/**/*.h', 'boost/boost/**/*.hpp', 'boost/boost/**/*.h'
includeEmptyDirs = false
into "$externalDir/boost"
doLast {
file("$externalDir/boost/boost").renameTo("$externalDir/boost/boost_1_63_0")
}
}
task downloadFolly(dependsOn: createNativeDepsDirectories, type: Download) {
src 'https://github.com/facebook/folly/archive/v2018.09.10.00.tar.gz'
onlyIfNewer true
overwrite false
dest new File(downloadsDir, 'folly-' + getDownloadFileName(src))
}
task prepareFolly(dependsOn: [downloadFolly], type: Copy) {
onlyIf { isCacheOutOfDate(CACHE_REVISION) }
from tarTree(downloadFolly.dest)
from './overrides/Folly/'
include 'folly-2018.09.10.00/folly/**/*', 'build.gradle', 'CMakeLists.txt', 'ApplicationManifest.xml'
eachFile { it.path = it.path - "folly-2018.09.10.00/" }
includeEmptyDirs = false
into "$externalDir/folly"
}
//TODO: Get rid off this hack.
task finalizeFollyWithDemangle(dependsOn: [prepareFolly], type: Copy) {
from './overrides/Folly/'
include 'Demangle.h'
into "$externalDir/folly/folly/detail/"
}
//TODO: Get rid off this hack.
task finalizeFolly(dependsOn: [finalizeFollyWithDemangle], type: Copy) {
from './overrides/Folly/'
include 'AsyncServerSocket.cpp'
into "$externalDir/folly/folly/io/async/"
}
task downloadLibEvent(dependsOn: [], type: Download) {
src 'https://github.com/priteshrnandgaonkar/libevent/archive/release-2.1.9.tar.gz'
onlyIfNewer true
overwrite false
dest new File(downloadsDir, 'libevent-' + getDownloadFileName(src))
}
task prepareLibEvent(dependsOn: [downloadLibEvent], type: Copy) {
onlyIf { isCacheOutOfDate(CACHE_REVISION) }
from tarTree(downloadLibEvent.dest)
from './overrides/LibEvent/'
include 'libevent-release-2.1.9/**/*', 'build.gradle', 'ApplicationManifest.xml'
includeEmptyDirs = false
into "$externalDir/LibEvent"
}
task finalizeLibEvent(dependsOn: [prepareLibEvent], type: Copy) {
from './overrides/LibEvent/'
include 'event-config.h'
includeEmptyDirs = false
into "$externalDir/LibEvent/libevent-release-2.1.9/include/event2/"
}
task downloadOpenSSLSource(dependsOn: [], type: Download) {
src 'https://github.com/passy/openssl-android/releases/download/1.1.0h/openssl-1.1.0h.tar.gz'
onlyIfNewer true
overwrite false
dest new File(downloadsDir, getDownloadFileName(src))
}
task downloadOpenSSLLibs(dependsOn: [], type: Download) {
src 'https://github.com/passy/openssl-android/releases/download/1.1.0h-r2/openssl-1.1.0h-r2-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.0h/**/*'
include 'libs/**/*'
includeEmptyDirs = false
into "$externalDir/OpenSSL/"
}
task configureOpenSSL(dependsOn: [prepareOpenSSL], type: Exec) {
onlyIf { isCacheOutOfDate(CACHE_REVISION) }
workingDir "$externalDir/OpenSSL/openssl-1.1.0h/"
// 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', 'dist'
}
task finalizeOpenSSL(dependsOn: [configureOpenSSL], type: Exec) {
workingDir "$externalDir/OpenSSL/openssl-1.1.0h/"
commandLine 'make', 'build_generated'
onlyIf { !file("$externalDir/OpenSSL/openssl-1.1.0h/include/openssl/opensslconf.h").exists() }
}
task downloadRSocket(dependsOn: [], type: Download) {
src 'https://github.com/priteshrnandgaonkar/rsocket-cpp/archive/0.10.3.tar.gz'
onlyIfNewer true
overwrite false
dest new File(downloadsDir, 'rsocket-' + getDownloadFileName(src))
}
task prepareRSocket(dependsOn: [downloadRSocket], type: Copy) {
from tarTree(downloadRSocket.dest)
from './overrides/RSocket/'
include 'rsocket-cpp-0.10.3/**/*', 'build.gradle', 'ApplicationManifest.xml', 'CMakeLists.txt'
includeEmptyDirs = false
into "$externalDir/RSocket"
}
task writeCacheRevision() {
doLast {
revisionFile.text = CACHE_REVISION.toString()
}
}
def allTasks = [
finalizeGlog,
prepareDoubleConversion,
prepareBoost,
finalizeFolly,
finalizeLibEvent,
finalizeOpenSSL,
prepareRSocket,
writeCacheRevision,
]
allTasks.each { i ->
i.onlyIf { isCacheOutOfDate(CACHE_REVISION) }
}
task prepareAllLibs() {
onlyIf { isCacheOutOfDate(CACHE_REVISION) }
dependsOn allTasks
}