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