blob: 45e4240a66424a2e64440f4d73d013ebd9c2e240 [file] [log] [blame]
buildscript {
repositories {
mavenCentral()
mavenLocal()
jcenter()
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
// Add dependency for build script,
// so we can access Git from our
// build script.
classpath 'org.ajoberstar:grgit:1.1.0'
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.9'
}
}
subprojects {
def androidProject = project.name == 'conscrypt-android'
if (!androidProject) {
apply plugin: 'java'
apply plugin: 'cpp'
model {
toolChains {
visualCpp(VisualCpp) {
// Temporary hack for https://github.com/gradle/gradle/issues/929
installDir "file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2014.0"
windowsSdkDir "file:///C:/Program%20Files%20(x86)/Windows%20Kits/8.1"
}
// Prefer Clang over Gcc (order here matters!)
clang(Clang)
gcc(Gcc)
}
}
}
apply plugin: "maven"
apply plugin: "signing"
apply plugin: "idea"
apply plugin: "jacoco"
apply plugin: "net.ltgt.errorprone"
group = "org.conscrypt"
description = 'Conscrypt is an alternate Java Security Provider that uses BoringSSL'
version = "1.1.0-SNAPSHOT"
ext {
os = org.gradle.internal.os.OperatingSystem.current();
if (os.isLinux()) {
osName = "linux"
} else if (os.isMacOsX()) {
osName = "osx"
} else if (os.isWindows()) {
osName = "windows"
} else {
throw new GradleException("Unsupported os: " + os.name)
}
boringsslHome = "$System.env.BORINGSSL_HOME"
boringsslIncludeDir = "$boringsslHome/include"
boringssl32BuildDir = "$boringsslHome/build32"
boringssl64BuildDir = "$boringsslHome/build64"
jdkHome = "$System.env.JAVA_HOME"
jdkIncludeDir = "$jdkHome/include"
// Needs to be binary compatible with androidMinSdkVersion
androidMinJavaVersion = JavaVersion.VERSION_1_7
build32Bit = file("$boringssl32BuildDir").exists()
build64Bit = file("$boringssl64BuildDir").exists()
// Ensure the environment is configured properly.
assert file("$boringsslHome").exists()
assert file("$boringsslIncludeDir").exists()
assert build32Bit || build64Bit
assert file("$jdkHome").exists()
assert file("$jdkIncludeDir").exists()
// Get the commit hash for BoringSSL.
boringSslGit = org.ajoberstar.grgit.Grgit.open(file("$boringsslHome"))
boringSslVersion = boringSslGit.head().id
jmhVersion = '1.17.4'
libraries = [
roboelectric: 'org.robolectric:android-all:5.0.0_r2-robolectric-1',
// Test dependencies.
guava : 'com.google.guava:guava:19.0',
junit : 'junit:junit:4.12',
mockito: 'org.mockito:mockito-core:1.9.5',
truth : 'com.google.truth:truth:0.28',
bouncycastle_provider: 'org.bouncycastle:bcprov-jdk15on:1.55',
bouncycastle_apis: 'org.bouncycastle:bcpkix-jdk15on:1.55',
// Benchmark dependencies
jmh_core: "org.openjdk.jmh:jmh-core:${jmhVersion}",
jmh_generator_annprocess: "org.openjdk.jmh:jmh-generator-annprocess:${jmhVersion}",
jmh_generator_asm: "org.openjdk.jmh:jmh-generator-asm:${jmhVersion}",
jmh_generator_bytecode: "org.openjdk.jmh:jmh-generator-bytecode:${jmhVersion}",
jmh_generator_reflection: "org.openjdk.jmh:jmh-generator-reflection:${jmhVersion}",
netty_handler: 'io.netty:netty-handler:4.1.8.Final',
netty_tcnative: 'io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26',
]
}
repositories {
mavenCentral()
mavenLocal()
jcenter()
}
signing {
required false
sign configurations.archives
}
if (!androidProject) {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
[compileJava, compileTestJava].each() {
it.options.compilerArgs += ["-Xlint:all", "-Xlint:-options", '-Xmaxwarns', '9999999']
it.options.encoding = "UTF-8"
if (rootProject.hasProperty('failOnWarnings') && rootProject.failOnWarnings.toBoolean()) {
it.options.compilerArgs += ["-Werror"]
}
}
compileTestJava {
// serialVersionUID is basically guaranteed to be useless in our tests
options.compilerArgs += ["-Xlint:-serial"]
}
jar.manifest {
attributes('Implementation-Title': name,
'Implementation-Version': version,
'Built-By': System.getProperty('user.name'),
'Built-JDK': System.getProperty('java.version'),
'Source-Compatibility': sourceCompatibility,
'Target-Compatibility': targetCompatibility)
}
javadoc.options {
encoding = 'UTF-8'
links 'https://docs.oracle.com/javase/8/docs/api/'
}
// Disable JavaDoc doclint on Java 8. It's annoying.
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}
task javadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
archives javadocJar
}
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"
}
}
}
}
// At a test failure, log the stack trace to the console so that we don't
// have to open the HTML in a browser.
test {
testLogging {
exceptionFormat = 'full'
showExceptions true
showCauses true
showStackTraces true
}
maxHeapSize = '1500m'
}
}
}