xref: /aosp_15_r20/external/google-smali/build.gradle (revision 37f5703ca959d1ce24046e7595880d209e15c133)
1*37f5703cSAndroid Build Coastguard Worker/*
2*37f5703cSAndroid Build Coastguard Worker * Copyright 2012, Google LLC
3*37f5703cSAndroid Build Coastguard Worker *
4*37f5703cSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without
5*37f5703cSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are
6*37f5703cSAndroid Build Coastguard Worker * met:
7*37f5703cSAndroid Build Coastguard Worker *
8*37f5703cSAndroid Build Coastguard Worker *     * Redistributions of source code must retain the above copyright
9*37f5703cSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer.
10*37f5703cSAndroid Build Coastguard Worker *     * Redistributions in binary form must reproduce the above
11*37f5703cSAndroid Build Coastguard Worker * copyright notice, this list of conditions and the following disclaimer
12*37f5703cSAndroid Build Coastguard Worker * in the documentation and/or other materials provided with the
13*37f5703cSAndroid Build Coastguard Worker * distribution.
14*37f5703cSAndroid Build Coastguard Worker *     * Neither the name of Google LLC nor the names of its
15*37f5703cSAndroid Build Coastguard Worker * contributors may be used to endorse or promote products derived from
16*37f5703cSAndroid Build Coastguard Worker * this software without specific prior written permission.
17*37f5703cSAndroid Build Coastguard Worker *
18*37f5703cSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19*37f5703cSAndroid Build Coastguard Worker * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20*37f5703cSAndroid Build Coastguard Worker * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21*37f5703cSAndroid Build Coastguard Worker * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22*37f5703cSAndroid Build Coastguard Worker * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23*37f5703cSAndroid Build Coastguard Worker * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24*37f5703cSAndroid Build Coastguard Worker * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25*37f5703cSAndroid Build Coastguard Worker * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26*37f5703cSAndroid Build Coastguard Worker * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27*37f5703cSAndroid Build Coastguard Worker * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28*37f5703cSAndroid Build Coastguard Worker * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29*37f5703cSAndroid Build Coastguard Worker */
30*37f5703cSAndroid Build Coastguard Worker
31*37f5703cSAndroid Build Coastguard Workerapply plugin: 'idea'
32*37f5703cSAndroid Build Coastguard Worker
33*37f5703cSAndroid Build Coastguard Workerversion = '3.0.7'
34*37f5703cSAndroid Build Coastguard Workerdef jcommanderVersion = ''
35*37f5703cSAndroid Build Coastguard Worker
36*37f5703cSAndroid Build Coastguard Workerif (!('release' in gradle.startParameter.taskNames)) {
37*37f5703cSAndroid Build Coastguard Worker    // we compile against 1.48 normally, to match what's in AOSP, but switch to a newer version
38*37f5703cSAndroid Build Coastguard Worker    // for release, because it has some fixes required when running on Android
39*37f5703cSAndroid Build Coastguard Worker    jcommanderVersion = 'com.beust:jcommander:1.48'
40*37f5703cSAndroid Build Coastguard Worker
41*37f5703cSAndroid Build Coastguard Worker    def versionSuffix
42*37f5703cSAndroid Build Coastguard Worker    try {
43*37f5703cSAndroid Build Coastguard Worker        def git = org.eclipse.jgit.api.Git.open(file('.'))
44*37f5703cSAndroid Build Coastguard Worker        def head = git.getRepository().getRef('HEAD')
45*37f5703cSAndroid Build Coastguard Worker        versionSuffix = head.getObjectId().abbreviate(8).name()
46*37f5703cSAndroid Build Coastguard Worker
47*37f5703cSAndroid Build Coastguard Worker        if (!git.status().call().clean) {
48*37f5703cSAndroid Build Coastguard Worker            versionSuffix += '-dirty'
49*37f5703cSAndroid Build Coastguard Worker        }
50*37f5703cSAndroid Build Coastguard Worker    } catch (Exception) {
51*37f5703cSAndroid Build Coastguard Worker        // In case we can't get the commit for some reason,
52*37f5703cSAndroid Build Coastguard Worker        // just use -dev
53*37f5703cSAndroid Build Coastguard Worker        versionSuffix = 'dev'
54*37f5703cSAndroid Build Coastguard Worker    }
55*37f5703cSAndroid Build Coastguard Worker
56*37f5703cSAndroid Build Coastguard Worker    version += "-${versionSuffix}"
57*37f5703cSAndroid Build Coastguard Worker} else {
58*37f5703cSAndroid Build Coastguard Worker    jcommanderVersion = 'com.beust:jcommander:1.64'
59*37f5703cSAndroid Build Coastguard Worker}
60*37f5703cSAndroid Build Coastguard Worker
61*37f5703cSAndroid Build Coastguard Worker// Note: please don't use this. This is strictly for the official releases
62*37f5703cSAndroid Build Coastguard Worker// that are posted on, e.g. the bitbucket download page.
63*37f5703cSAndroid Build Coastguard Workertask release() {
64*37f5703cSAndroid Build Coastguard Worker}
65*37f5703cSAndroid Build Coastguard Worker
66*37f5703cSAndroid Build Coastguard Workertask(install).doLast {
67*37f5703cSAndroid Build Coastguard Worker    println "Installing version: ${version}"
68*37f5703cSAndroid Build Coastguard Worker}
69*37f5703cSAndroid Build Coastguard Worker
70*37f5703cSAndroid Build Coastguard Worker// The projects that get pushed to maven
71*37f5703cSAndroid Build Coastguard Workerdef maven_release_projects = ['smali', 'baksmali', 'dexlib2', 'util']
72*37f5703cSAndroid Build Coastguard Worker
73*37f5703cSAndroid Build Coastguard Workersubprojects {
74*37f5703cSAndroid Build Coastguard Worker    apply plugin: 'java-library'
75*37f5703cSAndroid Build Coastguard Worker    apply plugin: 'idea'
76*37f5703cSAndroid Build Coastguard Worker
77*37f5703cSAndroid Build Coastguard Worker    if (JavaVersion.current().isJava8Compatible()) {
78*37f5703cSAndroid Build Coastguard Worker        allprojects {
79*37f5703cSAndroid Build Coastguard Worker            tasks.withType(Javadoc) {
80*37f5703cSAndroid Build Coastguard Worker                options.addStringOption('Xdoclint:none', '-quiet')
81*37f5703cSAndroid Build Coastguard Worker            }
82*37f5703cSAndroid Build Coastguard Worker        }
83*37f5703cSAndroid Build Coastguard Worker    }
84*37f5703cSAndroid Build Coastguard Worker
85*37f5703cSAndroid Build Coastguard Worker    version = parent.version
86*37f5703cSAndroid Build Coastguard Worker
87*37f5703cSAndroid Build Coastguard Worker    java {
88*37f5703cSAndroid Build Coastguard Worker        sourceCompatibility JavaVersion.VERSION_1_8
89*37f5703cSAndroid Build Coastguard Worker        targetCompatibility JavaVersion.VERSION_1_8
90*37f5703cSAndroid Build Coastguard Worker    }
91*37f5703cSAndroid Build Coastguard Worker
92*37f5703cSAndroid Build Coastguard Worker    jar {
93*37f5703cSAndroid Build Coastguard Worker        from(project.rootDir) {
94*37f5703cSAndroid Build Coastguard Worker            include 'LICENSE'
95*37f5703cSAndroid Build Coastguard Worker        }
96*37f5703cSAndroid Build Coastguard Worker    }
97*37f5703cSAndroid Build Coastguard Worker
98*37f5703cSAndroid Build Coastguard Worker    ext {
99*37f5703cSAndroid Build Coastguard Worker        depends = [
100*37f5703cSAndroid Build Coastguard Worker                guava: 'com.google.guava:guava:31.1-android',
101*37f5703cSAndroid Build Coastguard Worker                findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
102*37f5703cSAndroid Build Coastguard Worker                junit: 'junit:junit:4.12',
103*37f5703cSAndroid Build Coastguard Worker                mockito: 'org.mockito:mockito-core:1.10.19',
104*37f5703cSAndroid Build Coastguard Worker                antlr_runtime: 'org.antlr:antlr-runtime:3.5.2',
105*37f5703cSAndroid Build Coastguard Worker                antlr: 'org.antlr:antlr:3.5.2',
106*37f5703cSAndroid Build Coastguard Worker                stringtemplate: 'org.antlr:stringtemplate:3.2.1',
107*37f5703cSAndroid Build Coastguard Worker                jflex_plugin: 'org.xbib.gradle.plugin:gradle-plugin-jflex:1.1.0',
108*37f5703cSAndroid Build Coastguard Worker                proguard_gradle: 'com.guardsquare:proguard-gradle:7.1.0',
109*37f5703cSAndroid Build Coastguard Worker                dx: 'com.google.android.tools:dx:1.7',
110*37f5703cSAndroid Build Coastguard Worker                gson: 'com.google.code.gson:gson:2.3.1',
111*37f5703cSAndroid Build Coastguard Worker                jcommander: jcommanderVersion
112*37f5703cSAndroid Build Coastguard Worker        ]
113*37f5703cSAndroid Build Coastguard Worker    }
114*37f5703cSAndroid Build Coastguard Worker
115*37f5703cSAndroid Build Coastguard Worker    repositories {
116*37f5703cSAndroid Build Coastguard Worker        mavenCentral()
117*37f5703cSAndroid Build Coastguard Worker    }
118*37f5703cSAndroid Build Coastguard Worker
119*37f5703cSAndroid Build Coastguard Worker    if (project.name in maven_release_projects) {
120*37f5703cSAndroid Build Coastguard Worker        apply plugin: 'maven-publish'
121*37f5703cSAndroid Build Coastguard Worker        apply plugin: 'signing'
122*37f5703cSAndroid Build Coastguard Worker
123*37f5703cSAndroid Build Coastguard Worker        group = 'com.android.tools.smali'
124*37f5703cSAndroid Build Coastguard Worker        def artifact = project.name
125*37f5703cSAndroid Build Coastguard Worker        if (artifact != 'smali') {
126*37f5703cSAndroid Build Coastguard Worker            artifact = 'smali-' + artifact
127*37f5703cSAndroid Build Coastguard Worker        }
128*37f5703cSAndroid Build Coastguard Worker
129*37f5703cSAndroid Build Coastguard Worker        publishing {
130*37f5703cSAndroid Build Coastguard Worker            publications {
131*37f5703cSAndroid Build Coastguard Worker                mavenJava(MavenPublication) {
132*37f5703cSAndroid Build Coastguard Worker                    artifactId = artifact
133*37f5703cSAndroid Build Coastguard Worker                    from components.java
134*37f5703cSAndroid Build Coastguard Worker                    versionMapping {
135*37f5703cSAndroid Build Coastguard Worker                        usage('java-api') {
136*37f5703cSAndroid Build Coastguard Worker                            fromResolutionOf('runtimeClasspath')
137*37f5703cSAndroid Build Coastguard Worker                        }
138*37f5703cSAndroid Build Coastguard Worker                        usage('java-runtime') {
139*37f5703cSAndroid Build Coastguard Worker                            fromResolutionResult()
140*37f5703cSAndroid Build Coastguard Worker                        }
141*37f5703cSAndroid Build Coastguard Worker                    }
142*37f5703cSAndroid Build Coastguard Worker
143*37f5703cSAndroid Build Coastguard Worker                    pom {
144*37f5703cSAndroid Build Coastguard Worker                        name = project.name
145*37f5703cSAndroid Build Coastguard Worker                        url = 'https://github.com/google/smali'
146*37f5703cSAndroid Build Coastguard Worker
147*37f5703cSAndroid Build Coastguard Worker                        licenses {
148*37f5703cSAndroid Build Coastguard Worker                            license {
149*37f5703cSAndroid Build Coastguard Worker                                name = 'The BSD 3-Clause License'
150*37f5703cSAndroid Build Coastguard Worker                                url = 'http://opensource.org/licenses/BSD-3-Clause'
151*37f5703cSAndroid Build Coastguard Worker                                distribution = 'repo'
152*37f5703cSAndroid Build Coastguard Worker                            }
153*37f5703cSAndroid Build Coastguard Worker                        }
154*37f5703cSAndroid Build Coastguard Worker                        scm {
155*37f5703cSAndroid Build Coastguard Worker                            connection = 'scm:git:git://github.com/google/smali.git'
156*37f5703cSAndroid Build Coastguard Worker                            developerConnection = 'scm:git:[email protected]:google/smali.git'
157*37f5703cSAndroid Build Coastguard Worker                        }
158*37f5703cSAndroid Build Coastguard Worker                        developers {
159*37f5703cSAndroid Build Coastguard Worker                            developer {
160*37f5703cSAndroid Build Coastguard Worker                                id = 'jesusfreke'
161*37f5703cSAndroid Build Coastguard Worker                                name = 'Ben Gruver'
162*37f5703cSAndroid Build Coastguard Worker                                email = '[email protected]'
163*37f5703cSAndroid Build Coastguard Worker                            }
164*37f5703cSAndroid Build Coastguard Worker                            developer {
165*37f5703cSAndroid Build Coastguard Worker                                name = 'The Android Open Source Project'
166*37f5703cSAndroid Build Coastguard Worker                            }
167*37f5703cSAndroid Build Coastguard Worker                        }
168*37f5703cSAndroid Build Coastguard Worker                    }
169*37f5703cSAndroid Build Coastguard Worker                }
170*37f5703cSAndroid Build Coastguard Worker            }
171*37f5703cSAndroid Build Coastguard Worker            if (rootProject.hasProperty('sonatypeUsername') && rootProject.hasProperty('sonatypePassword')) {
172*37f5703cSAndroid Build Coastguard Worker                repositories {
173*37f5703cSAndroid Build Coastguard Worker                    maven {
174*37f5703cSAndroid Build Coastguard Worker                        url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
175*37f5703cSAndroid Build Coastguard Worker                        credentials {
176*37f5703cSAndroid Build Coastguard Worker                            username sonatypeUsername
177*37f5703cSAndroid Build Coastguard Worker                            password sonatypePassword
178*37f5703cSAndroid Build Coastguard Worker                        }
179*37f5703cSAndroid Build Coastguard Worker                    }
180*37f5703cSAndroid Build Coastguard Worker                }
181*37f5703cSAndroid Build Coastguard Worker            }
182*37f5703cSAndroid Build Coastguard Worker        }
183*37f5703cSAndroid Build Coastguard Worker
184*37f5703cSAndroid Build Coastguard Worker        signing {
185*37f5703cSAndroid Build Coastguard Worker            required { gradle.taskGraph.hasTask('publish') }
186*37f5703cSAndroid Build Coastguard Worker            sign(publishing.publications["mavenJava"])
187*37f5703cSAndroid Build Coastguard Worker        }
188*37f5703cSAndroid Build Coastguard Worker
189*37f5703cSAndroid Build Coastguard Worker        java {
190*37f5703cSAndroid Build Coastguard Worker            withJavadocJar()
191*37f5703cSAndroid Build Coastguard Worker            withSourcesJar()
192*37f5703cSAndroid Build Coastguard Worker        }
193*37f5703cSAndroid Build Coastguard Worker
194*37f5703cSAndroid Build Coastguard Worker        tasks.getByPath(':release').dependsOn(publish)
195*37f5703cSAndroid Build Coastguard Worker    }
196*37f5703cSAndroid Build Coastguard Worker}
197*37f5703cSAndroid Build Coastguard Worker
198*37f5703cSAndroid Build Coastguard Workerbuildscript {
199*37f5703cSAndroid Build Coastguard Worker    repositories {
200*37f5703cSAndroid Build Coastguard Worker        mavenCentral()
201*37f5703cSAndroid Build Coastguard Worker    }
202*37f5703cSAndroid Build Coastguard Worker    dependencies {
203*37f5703cSAndroid Build Coastguard Worker        classpath 'org.eclipse.jgit:org.eclipse.jgit:2.0.0.201206130900-r'
204*37f5703cSAndroid Build Coastguard Worker    }
205*37f5703cSAndroid Build Coastguard Worker}
206*37f5703cSAndroid Build Coastguard Worker
207*37f5703cSAndroid Build Coastguard Workerwrapper {
208*37f5703cSAndroid Build Coastguard Worker    gradleVersion = '8.5'
209*37f5703cSAndroid Build Coastguard Worker    distributionType = Wrapper.DistributionType.ALL
210*37f5703cSAndroid Build Coastguard Worker}
211