1*cd0cc2e3SAndroid Build Coastguard Workerdescription = 'Conscrypt: OpenJdk UberJAR' 2*cd0cc2e3SAndroid Build Coastguard Worker 3*cd0cc2e3SAndroid Build Coastguard Workerext { 4*cd0cc2e3SAndroid Build Coastguard Worker buildUberJar = Boolean.parseBoolean(System.getProperty('org.conscrypt.openjdk.buildUberJar', 'false')) 5*cd0cc2e3SAndroid Build Coastguard Worker uberJarClassifiers = (System.getProperty('org.conscrypt.openjdk.uberJarClassifiers', 6*cd0cc2e3SAndroid Build Coastguard Worker 'osx-x86_64,osx-aarch_64,linux-x86_64,windows-x86_64')).split(',') 7*cd0cc2e3SAndroid Build Coastguard Worker classesDir = "${buildDir}/classes" 8*cd0cc2e3SAndroid Build Coastguard Worker resourcesDir = "${buildDir}/resources" 9*cd0cc2e3SAndroid Build Coastguard Worker sourcesDir = "${buildDir}/sources" 10*cd0cc2e3SAndroid Build Coastguard Worker} 11*cd0cc2e3SAndroid Build Coastguard Worker 12*cd0cc2e3SAndroid Build Coastguard Workerif (buildUberJar) { 13*cd0cc2e3SAndroid Build Coastguard Worker apply plugin: libs.plugins.bnd.get().pluginId 14*cd0cc2e3SAndroid Build Coastguard Worker 15*cd0cc2e3SAndroid Build Coastguard Worker configurations { 16*cd0cc2e3SAndroid Build Coastguard Worker uberJar 17*cd0cc2e3SAndroid Build Coastguard Worker } 18*cd0cc2e3SAndroid Build Coastguard Worker 19*cd0cc2e3SAndroid Build Coastguard Worker // Point the jar task to the copied classes and resources directories. 20*cd0cc2e3SAndroid Build Coastguard Worker jar { 21*cd0cc2e3SAndroid Build Coastguard Worker from classesDir 22*cd0cc2e3SAndroid Build Coastguard Worker from resourcesDir 23*cd0cc2e3SAndroid Build Coastguard Worker } 24*cd0cc2e3SAndroid Build Coastguard Worker 25*cd0cc2e3SAndroid Build Coastguard Worker sourcesJar { 26*cd0cc2e3SAndroid Build Coastguard Worker from sourcesDir 27*cd0cc2e3SAndroid Build Coastguard Worker } 28*cd0cc2e3SAndroid Build Coastguard Worker 29*cd0cc2e3SAndroid Build Coastguard Worker // Add the dependencies for the uber jar. 30*cd0cc2e3SAndroid Build Coastguard Worker uberJarClassifiers.each { uberJarClassifier -> 31*cd0cc2e3SAndroid Build Coastguard Worker dependencies.uberJar "${group}:conscrypt-openjdk:${version}:${uberJarClassifier}" 32*cd0cc2e3SAndroid Build Coastguard Worker } 33*cd0cc2e3SAndroid Build Coastguard Worker 34*cd0cc2e3SAndroid Build Coastguard Worker /** 35*cd0cc2e3SAndroid Build Coastguard Worker * Copy the native libraries to the resources directory. 36*cd0cc2e3SAndroid Build Coastguard Worker */ 37*cd0cc2e3SAndroid Build Coastguard Worker def copySharedLibs = tasks.register("copySharedLibs", Copy) { 38*cd0cc2e3SAndroid Build Coastguard Worker dependsOn configurations.uberJar 39*cd0cc2e3SAndroid Build Coastguard Worker from { 40*cd0cc2e3SAndroid Build Coastguard Worker configurations.uberJar.collect { 41*cd0cc2e3SAndroid Build Coastguard Worker zipTree(it) 42*cd0cc2e3SAndroid Build Coastguard Worker } 43*cd0cc2e3SAndroid Build Coastguard Worker } 44*cd0cc2e3SAndroid Build Coastguard Worker include '/META-INF/native/**' 45*cd0cc2e3SAndroid Build Coastguard Worker into file(resourcesDir) 46*cd0cc2e3SAndroid Build Coastguard Worker duplicatesStrategy = DuplicatesStrategy.EXCLUDE 47*cd0cc2e3SAndroid Build Coastguard Worker } 48*cd0cc2e3SAndroid Build Coastguard Worker tasks.named("jar").configure { 49*cd0cc2e3SAndroid Build Coastguard Worker dependsOn copySharedLibs 50*cd0cc2e3SAndroid Build Coastguard Worker } 51*cd0cc2e3SAndroid Build Coastguard Worker 52*cd0cc2e3SAndroid Build Coastguard Worker /** 53*cd0cc2e3SAndroid Build Coastguard Worker * Copy the object files to the classes directory. 54*cd0cc2e3SAndroid Build Coastguard Worker */ 55*cd0cc2e3SAndroid Build Coastguard Worker def copyClasses = tasks.register("copyClasses", Copy) { 56*cd0cc2e3SAndroid Build Coastguard Worker dependsOn configurations.uberJar 57*cd0cc2e3SAndroid Build Coastguard Worker from { 58*cd0cc2e3SAndroid Build Coastguard Worker configurations.uberJar.collect { 59*cd0cc2e3SAndroid Build Coastguard Worker zipTree(it) 60*cd0cc2e3SAndroid Build Coastguard Worker } 61*cd0cc2e3SAndroid Build Coastguard Worker } 62*cd0cc2e3SAndroid Build Coastguard Worker exclude '/META-INF/**' 63*cd0cc2e3SAndroid Build Coastguard Worker into file(classesDir) 64*cd0cc2e3SAndroid Build Coastguard Worker duplicatesStrategy = DuplicatesStrategy.EXCLUDE 65*cd0cc2e3SAndroid Build Coastguard Worker } 66*cd0cc2e3SAndroid Build Coastguard Worker tasks.named("jar").configure { 67*cd0cc2e3SAndroid Build Coastguard Worker dependsOn copyClasses 68*cd0cc2e3SAndroid Build Coastguard Worker } 69*cd0cc2e3SAndroid Build Coastguard Worker 70*cd0cc2e3SAndroid Build Coastguard Worker def copySources = tasks.register("copySources", Copy) { 71*cd0cc2e3SAndroid Build Coastguard Worker dependsOn ":conscrypt-openjdk:sourcesJar" 72*cd0cc2e3SAndroid Build Coastguard Worker from { 73*cd0cc2e3SAndroid Build Coastguard Worker project(":conscrypt-openjdk").sourceSets.main.java 74*cd0cc2e3SAndroid Build Coastguard Worker } 75*cd0cc2e3SAndroid Build Coastguard Worker into file(sourcesDir) 76*cd0cc2e3SAndroid Build Coastguard Worker duplicatesStrategy = DuplicatesStrategy.EXCLUDE 77*cd0cc2e3SAndroid Build Coastguard Worker } 78*cd0cc2e3SAndroid Build Coastguard Worker tasks.named("sourcesJar").configure { 79*cd0cc2e3SAndroid Build Coastguard Worker dependsOn copySources 80*cd0cc2e3SAndroid Build Coastguard Worker } 81*cd0cc2e3SAndroid Build Coastguard Worker 82*cd0cc2e3SAndroid Build Coastguard Worker // Note that this assumes that the version of BoringSSL for each 83*cd0cc2e3SAndroid Build Coastguard Worker // artifact exactly matches the one on the current system. 84*cd0cc2e3SAndroid Build Coastguard Worker jar.manifest { 85*cd0cc2e3SAndroid Build Coastguard Worker attributes ('BoringSSL-Version': boringSslVersion, 86*cd0cc2e3SAndroid Build Coastguard Worker 'Automatic-Module-Name': 'org.conscrypt', 87*cd0cc2e3SAndroid Build Coastguard Worker 'Bundle-SymbolicName': 'org.conscrypt', 88*cd0cc2e3SAndroid Build Coastguard Worker '-exportcontents': 'org.conscrypt.*') 89*cd0cc2e3SAndroid Build Coastguard Worker } 90*cd0cc2e3SAndroid Build Coastguard Worker 91*cd0cc2e3SAndroid Build Coastguard Worker apply from: "$rootDir/gradle/publishing.gradle" 92*cd0cc2e3SAndroid Build Coastguard Worker publishing.publications.maven { 93*cd0cc2e3SAndroid Build Coastguard Worker artifact sourcesJar 94*cd0cc2e3SAndroid Build Coastguard Worker artifact javadocJar 95*cd0cc2e3SAndroid Build Coastguard Worker artifact jar 96*cd0cc2e3SAndroid Build Coastguard Worker } 97*cd0cc2e3SAndroid Build Coastguard Worker} else { 98*cd0cc2e3SAndroid Build Coastguard Worker // Not building an uber jar - disable all tasks. 99*cd0cc2e3SAndroid Build Coastguard Worker tasks.configureEach { 100*cd0cc2e3SAndroid Build Coastguard Worker it.enabled = false 101*cd0cc2e3SAndroid Build Coastguard Worker } 102*cd0cc2e3SAndroid Build Coastguard Worker} 103