build.gradle revision dbce47d36172093de6e1425e8847efa679718435
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/*
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * Copyright 2012, Google Inc.
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * All rights reserved.
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner *
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * Redistribution and use in source and binary forms, with or without
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * modification, are permitted provided that the following conditions are
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * met:
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner *
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner *     * Redistributions of source code must retain the above copyright
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * notice, this list of conditions and the following disclaimer.
1169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton *     * Redistributions in binary form must reproduce the above
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * copyright notice, this list of conditions and the following disclaimer
1369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton * in the documentation and/or other materials provided with the
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * distribution.
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner *     * Neither the name of Google Inc. nor the names of its
1669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton * contributors may be used to endorse or promote products derived from
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * this software without specific prior written permission.
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner *
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2063094e0bb161580564954dee512955c1c79d3476Greg Clayton * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2563094e0bb161580564954dee512955c1c79d3476Greg Clayton * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner */
3163094e0bb161580564954dee512955c1c79d3476Greg Clayton
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerapply plugin: 'idea'
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerversion = '2.0'
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerdef jarVersion = version
3763094e0bb161580564954dee512955c1c79d3476Greg Clayton
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerif (!('release' in gradle.startParameter.taskNames)) {
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    def versionSuffix
4069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    try {
4169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        def git = org.eclipse.jgit.api.Git.open(file('.'))
4269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        def head = git.getRepository().getRef("HEAD")
4369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        versionSuffix = head.getObjectId().abbreviate(8).name()
4469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
4569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        if (!git.status().call().clean) {
4669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton            versionSuffix += '-dirty'
4769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        }
4869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    } catch (Exception) {
4969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        // In case we can't get the commit for some reason,
5069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        // just use -dev
5169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        versionSuffix = 'dev'
5269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    }
5369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
5469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    def baseVersion = version
5569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    version = baseVersion + '-' + versionSuffix
5669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
5769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    // use something like module-1.2.3-dev.jar for the jar name, rather than the full
5869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    // module-1.2.3-001afe02-dirty.jar
5969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    jarVersion = baseVersion + '-dev'
6069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton}
6169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
6269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Claytonsubprojects {
6369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    apply plugin: 'java'
6469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    apply plugin: 'idea'
6569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
6669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    version = parent.version
6769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
6869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    ext {
6969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        depends = [guava: 'com.google.guava:guava:14.0',
7069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
7169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   junit: 'junit:junit:4.6',
7269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   antlr_runtime: 'org.antlr:antlr-runtime:3.5',
7369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   antlr: 'org.antlr:antlr:3.5',
7469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   commons_cli: 'commons-cli:commons-cli:1.2',
7569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   jflex: 'de.jflex:jflex:1.4.3',
7669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton                   proguard: 'net.sf.proguard:proguard-base:4.8'
7769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton         ]
7869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    }
7969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
8069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    jar {
8169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        version = jarVersion
8269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    }
8369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
8469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    repositories {
8569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        mavenCentral()
8669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    }
8769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton}
8869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
8969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton// Note: please don't use this. This is strictly for the official releases
9069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton// that are posted on the googlecode download page.
9169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Claytontask release {
9269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton}
9369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton
9469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Claytonbuildscript {
9569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton    repositories {
9669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton        mavenCentral()
9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    dependencies {
9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        classpath 'org.eclipse.jgit:org.eclipse.jgit:2.0.0.201206130900-r'
10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
10233ed170599d41fe407a4dcf5f0875c75e1ad1375Greg Clayton
10333ed170599d41fe407a4dcf5f0875c75e1ad1375Greg Claytontask wrapper(type: Wrapper) {
10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    gradleVersion = '1.8'
10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}