1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17
18import androidx.build.SupportConfig
19
20import static androidx.build.dependencies.DependenciesKt.*
21import androidx.build.LibraryGroups
22import androidx.build.LibraryVersions
23import androidx.build.SupportLibraryExtension
24
25plugins {
26    id("SupportKotlinLibraryPlugin")
27}
28
29def antlrOut = "$buildDir/generated/antlr/grammar-gen/"
30sourceSets {
31    main.java.srcDirs += 'src/main/grammar-gen'
32    test.java.srcDirs += 'src/tests/kotlin'
33    main.java.srcDirs += antlrOut
34}
35
36// Temporary hack to stop AS to adding two guavas into test's classpath
37configurations.all {
38    resolutionStrategy {
39        force GUAVA
40    }
41}
42
43dependencies {
44    // taken from ButterKnife
45    def logger = new com.android.build.gradle.internal.LoggerWrapper(project.logger)
46    def sdkHandler = new com.android.build.gradle.internal.SdkHandler(project, logger)
47    compile(project(":room:room-common"))
48    compile(project(":room:room-migration"))
49    compile(KOTLIN_STDLIB)
50    compile(AUTO_COMMON)
51    compile(JAVAPOET)
52    compile(ANTLR)
53    compile(XERIAL)
54    compile(KOTLIN_METADATA)
55    compile(APACHE_COMMONS_CODEC)
56    testCompile(GOOGLE_COMPILE_TESTING)
57    testCompile project(":paging:paging-common")
58    testCompile(JUNIT)
59    testCompile(INTELLIJ_ANNOTATIONS)
60    testCompile(JSR250)
61    testCompile(MOCKITO_CORE)
62    testCompile fileTree(dir: "${sdkHandler.sdkFolder}/platforms/android-$SupportConfig.CURRENT_SDK_VERSION/",
63            include : "android.jar")
64    testCompile fileTree(dir: "${new File(project(":room:room-runtime").buildDir, "libJar")}",
65            include : "*.jar")
66    testCompile fileTree(dir: "${new File(project(":sqlite:sqlite").buildDir, "libJar")}",
67            include : "*.jar")
68    testCompile files(org.gradle.internal.jvm.Jvm.current().getToolsJar())
69}
70
71def generateAntlrTask = task('generateAntlrGrammar', type: JavaExec) {
72    def outFolder = file(antlrOut)
73    outputs.dir(outFolder)
74    inputs.file("$projectDir/SQLite.g4")
75    classpath configurations.runtime
76    main "org.antlr.v4.Tool"
77    args "SQLite.g4", "-visitor", "-o", new File(outFolder, "androidx/room/parser").path,
78            "-package", "androidx.room.parser"
79}
80
81tasks.findByName("compileKotlin").dependsOn(generateAntlrTask)
82tasks.findByName("compileKotlin").dependsOn(":room:room-runtime:jarDebug")
83tasks.findByName("compileKotlin").dependsOn(":sqlite:sqlite:jarDebug")
84
85supportLibrary {
86    name = "Android Room Compiler"
87    publish = true
88    generateDocs = false
89    mavenVersion = LibraryVersions.ROOM
90    mavenGroup = LibraryGroups.ROOM
91    inceptionYear = "2017"
92    description = "Android Room annotation processor"
93    url = SupportLibraryExtension.ARCHITECTURE_URL
94}
95