blob: d7648451eafa2d9618596eff3273b624f7c34db9 [file] [log] [blame]
buildscript {
repositories {
mavenCentral()
mavenLocal()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3' // jcenter has the latest
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
}
}
description = 'Conscrypt: Android'
ext {
androidHome = "$System.env.ANDROID_HOME"
androidSdkInstalled = file("$androidHome").exists()
androidVersionCode = 1
androidVersionName = "$version"
androidMinSdkVersion = 9
androidTargetSdkVersion = 25
androidBuildToolsVersion = "25.0.0"
}
if (androidSdkInstalled) {
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
// Since we're not taking a direct dependency on the constants module, we need to add an
// explicit task dependency to make sure the code is generated.
evaluationDependsOn(':conscrypt-constants')
android {
compileSdkVersion androidTargetSdkVersion
buildToolsVersion androidBuildToolsVersion
compileOptions {
sourceCompatibility androidMinJavaVersion;
targetCompatibility androidMinJavaVersion
}
defaultConfig {
minSdkVersion androidMinSdkVersion
targetSdkVersion androidTargetSdkVersion
versionCode androidVersionCode
versionName androidVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'proguard-rules.pro'
externalNativeBuild {
cmake {
arguments '-DANDROID=True',
'-DANDROID_STL=c++_static',
"-DBORINGSSL_HOME=$boringsslHome"
cFlags '-fvisibility=hidden',
'-DBORINGSSL_SHARED_LIBRARY',
'-DBORINGSSL_IMPLEMENTATION',
'-DOPENSSL_SMALL',
'-D_XOPEN_SOURCE=700',
'-Wno-unused-parameter'
}
}
ndk {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets.main {
java {
srcDirs = [
"${rootDir}/common/src/main/java",
"src/main/java"
]
// Requires evaluationDependsOn(':conscrypt-constants') above.
srcDirs += project(':conscrypt-constants').sourceSets.main.java.srcDirs
}
}
externalNativeBuild {
cmake {
path 'CMakeLists.txt'
}
}
lintOptions {
lintConfig file('lint.xml')
}
}
configurations {
publicApiDocs
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
publicApiDocs project(':conscrypt-api-doclet')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
provided project(':conscrypt-android-stub')
// Adds the constants module as a dependency so that we can include its generated source
provided project(':conscrypt-constants')
}
task javadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + project(':conscrypt-android-stub').sourceSets.main.output
// TODO(nmittler): Fix the javadoc errors.
failOnError false
options {
encoding = 'UTF-8'
links "https://docs.oracle.com/javase/7/docs/api/"
doclet = "org.conscrypt.doclet.FilterDoclet"
docletpath = configurations.publicApiDocs.files as List
// Disable JavaDoc doclint on Java 8. It's annoying.
if (JavaVersion.current().isJava8Compatible()) {
addStringOption('Xdoclint:none', '-quiet')
}
}
}
task javadocsJar(type: Jar, dependsOn: javadocs) {
classifier = 'javadoc'
from javadocs.destinationDir
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives sourcesJar
archives javadocsJar
}
uploadArchives.repositories.mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
String stagingUrl
if (rootProject.hasProperty('repositoryId')) {
stagingUrl = 'https://oss.sonatype.org/service/local/staging/deployByRepositoryId/' +
rootProject.repositoryId
} else {
stagingUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
}
def configureAuth = {
if (rootProject.hasProperty('ossrhUsername') && rootProject.hasProperty('ossrhPassword')) {
authentication(userName: rootProject.ossrhUsername, password: rootProject.ossrhPassword)
}
}
repository(url: stagingUrl, configureAuth)
snapshotRepository(url: 'https://oss.sonatype.org/content/repositories/snapshots/', configureAuth)
}
[
install.repositories.mavenInstaller,
uploadArchives.repositories.mavenDeployer,
]*.pom*.whenConfigured { pom ->
pom.project {
name "$project.group:$project.name"
description project.description
url 'https://conscrypt.org/'
scm {
connection 'scm:git:https://github.com/google/conscrypt.git'
developerConnection 'scm:git:git@github.com:google/conscrypt.git'
url 'https://github.com/google/conscrypt'
}
licenses {
license {
name 'Apache 2'
url 'https://www.apache.org/licenses/LICENSE-2.0'
}
}
developers {
developer {
id "conscrypt"
name "Conscrypt Contributors"
email "conscrypt@googlegroups.com"
url "https://conscrypt.org/"
organization = "Google, Inc."
organizationUrl "https://www.google.com"
}
}
}
}
} else {
logger.warn('Android SDK has not been detected. The Android module will not be built.')
// Disable all tasks
tasks.collect {
it.enabled = false
}
}