blob: b6b6410123fb3bd112fbe36079b2a05aced4e947 [file] [log] [blame]
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08001import edu.wpi.first.toolchain.*
2
Brian Silverman41cdd3e2019-01-19 19:48:58 -08003plugins {
4 id 'base'
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08005 id 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin' version '4.0.1'
6 id 'edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin' version '2020.1'
7 id 'edu.wpi.first.NativeUtils' apply false
8 id 'edu.wpi.first.GradleJni' version '0.9.1'
9 id 'edu.wpi.first.GradleVsCode' version '0.9.4'
Brian Silverman41cdd3e2019-01-19 19:48:58 -080010 id 'idea'
11 id 'visual-studio'
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080012 id 'com.gradle.build-scan' version '2.3'
Brian Silverman41cdd3e2019-01-19 19:48:58 -080013 id 'net.ltgt.errorprone' version '0.6' apply false
14 id 'com.github.johnrengelman.shadow' version '4.0.3' apply false
15}
16
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080017if (project.hasProperty('buildServer')) {
18 wpilibVersioning.buildServerMode = true
19}
20
21if (project.hasProperty('releaseMode')) {
22 wpilibVersioning.releaseMode = true
23}
24
25allprojects {
26 repositories {
27 mavenCentral()
28 }
29 if (project.hasProperty('releaseMode')) {
30 wpilibRepositories.addAllReleaseRepositories(it)
31 } else {
32 wpilibRepositories.addAllDevelopmentRepositories(it)
33 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080034}
35
36buildScan {
37 termsOfServiceUrl = 'https://gradle.com/terms-of-service'
38 termsOfServiceAgree = 'yes'
39
40 publishAlways()
41}
42
43ext.licenseFile = files("$rootDir/LICENSE.txt", "$rootDir/ThirdPartyNotices.txt")
44
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080045if (project.hasProperty("publishVersion")) {
46 wpilibVersioning.version.set(project.publishVersion)
Brian Silverman41cdd3e2019-01-19 19:48:58 -080047}
48
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080049wpilibVersioning.version.finalizeValue()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080050
51def outputsFolder = file("$buildDir/allOutputs")
52
53def versionFile = file("$outputsFolder/version.txt")
54
55task outputVersions() {
56 description = 'Prints the versions of wpilib to a file for use by the downstream packaging project'
57 group = 'Build'
58 outputs.files(versionFile)
59
60 doFirst {
61 buildDir.mkdir()
62 outputsFolder.mkdir()
63 }
64
65 doLast {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080066 versionFile.write wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080067 }
68}
69
70task libraryBuild() {}
71
72build.dependsOn outputVersions
73
74task copyAllOutputs(type: Copy) {
75 destinationDir outputsFolder
76}
77
78build.dependsOn copyAllOutputs
79copyAllOutputs.dependsOn outputVersions
80
81ext.addTaskToCopyAllOutputs = { task ->
82 copyAllOutputs.dependsOn task
83 copyAllOutputs.inputs.file task.archivePath
84 copyAllOutputs.from task.archivePath
85}
86
87subprojects {
88 apply plugin: 'eclipse'
89 apply plugin: 'idea'
90
91 def subproj = it
92
93 plugins.withType(NativeComponentPlugin) {
94 subproj.apply plugin: MultiBuilds
95 }
96
97 apply from: "${rootDir}/shared/java/javastyle.gradle"
98
Brian Silverman41cdd3e2019-01-19 19:48:58 -080099 // Disables doclint in java 8.
100 if (JavaVersion.current().isJava8Compatible()) {
101 tasks.withType(Javadoc) {
102 options.addStringOption('Xdoclint:none', '-quiet')
103 }
104 }
105}
106
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800107ext.getCurrentArch = {
108 return NativePlatforms.desktop
109}
110
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800111wrapper {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800112 gradleVersion = '5.4.1'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800113}