summaryrefslogtreecommitdiffhomepage
path: root/tunnel/build.gradle
blob: 591cebe1531c9ce642dbfaf4c1fb527f0f63695f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
buildscript {
    dependencies {
        classpath "com.google.protobuf:protobuf-gradle-plugin:$protobufGradleVersion"
    }
}

plugins {
    id 'com.android.library'
    id 'com.google.protobuf' version "$protobufGradleVersion"
}

version wireguardVersionName
group groupName

android {
    compileSdk 33
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    namespace 'com.wireguard.android.tunnel'
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
        versionCode wireguardVersionCode
        versionName wireguardVersionName
    }
    externalNativeBuild {
        cmake {
            path 'tools/CMakeLists.txt'
        }
    }
    testOptions.unitTests.all {
        testLogging {
            events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
        }
    }
    buildTypes {
        all {
            externalNativeBuild {
                cmake {
                    targets 'libwg-go.so', 'libwg.so', 'libwg-quick.so'
                    arguments "-DGRADLE_USER_HOME=${project.gradle.gradleUserHomeDir}"
                }
            }
        }
        release {
            externalNativeBuild {
                cmake {
                    arguments "-DANDROID_PACKAGE_NAME=${groupName}"
                }
            }
        }
        debug {
            externalNativeBuild {
                cmake {
                    arguments "-DANDROID_PACKAGE_NAME=${groupName}.debug"
                }
            }
        }
    }
    lint {
        disable 'LongLogTag', 'NewApi'
    }
    publishing {
        multipleVariants("release") {
            allVariants()
        }
    }
}

dependencies {
    implementation project(":bgp-java")
    implementation "androidx.annotation:annotation:$annotationsVersion"
    implementation "androidx.collection:collection:$collectionVersion"
    implementation "io.grpc:grpc-android:$grpcVersion"
    implementation "io.grpc:grpc-okhttp:$grpcVersion"
    implementation "io.grpc:grpc-protobuf-lite:$grpcVersion"
    implementation "io.grpc:grpc-stub:$grpcVersion"
    compileOnly "com.google.code.findbugs:jsr305:$jsr305Version"
    compileOnly "javax.annotation:javax.annotation-api:1.2"
    testImplementation "junit:junit:$junitVersion"
}

protobuf {
    protoc {
        // You still need protoc like in the non-Android case
        artifact = "com.google.protobuf:protoc:$protocVersion"
    }
    plugins {
        grpc {
            artifact = "io.grpc:protoc-gen-grpc-java:$protocGenGrpcVersion"
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java {
                    option 'lite'
                }
            }
            task.plugins {
                grpc {
                    option 'lite'
                }
            }
        }
    }
}

afterEvaluate({ project ->
    // All custom configurations created by the protobuf plugin,
    // are only available at this point.
    def protoc = configurations.getByName('protobufToolsLocator_protoc')

    task copyProtoc(type: Copy) {
        // Used by tunnel/tools/libwg-go/Makefile run in tools/CMakeLists.txt
        from protoc
        into "${gradle.gradleUserHomeDir}/caches/protoc-${protocVersion}"
        rename 'protoc-.*', 'protoc'
        fileMode 0775
    }

    preBuild.dependsOn copyProtoc

    // Extract duration.proto used by external library in libwg.proto
    preDebugBuild.dependsOn extractIncludeDebugProto
    preReleaseBuild.dependsOn extractIncludeReleaseProto
})

apply from: "publish.gradle"