xref: /aosp_15_r20/external/conscrypt/openjdk-uber/build.gradle (revision cd0cc2e34ba52cdf454361820a14d744e4bd531d)
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