blob: 81b333fc73e8fb414b0bc35768cd1410b92b780b [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'
James Kuszmaul4b81d302019-12-14 20:53:14 -08006 id 'edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin' version '2020.2'
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08007 id 'edu.wpi.first.NativeUtils' apply false
James Kuszmaul4b81d302019-12-14 20:53:14 -08008 id 'edu.wpi.first.GradleJni' version '0.10.1'
9 id 'edu.wpi.first.GradleVsCode' version '0.11.0'
Brian Silverman41cdd3e2019-01-19 19:48:58 -080010 id 'idea'
11 id 'visual-studio'
James Kuszmaul4b81d302019-12-14 20:53:14 -080012 id 'net.ltgt.errorprone' version '1.1.1' apply false
13 id 'com.github.johnrengelman.shadow' version '5.2.0' apply false
Brian Silverman41cdd3e2019-01-19 19:48:58 -080014}
15
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080016if (project.hasProperty('buildServer')) {
17 wpilibVersioning.buildServerMode = true
18}
19
20if (project.hasProperty('releaseMode')) {
21 wpilibVersioning.releaseMode = true
22}
23
24allprojects {
25 repositories {
26 mavenCentral()
27 }
28 if (project.hasProperty('releaseMode')) {
29 wpilibRepositories.addAllReleaseRepositories(it)
30 } else {
31 wpilibRepositories.addAllDevelopmentRepositories(it)
32 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080033}
34
35buildScan {
36 termsOfServiceUrl = 'https://gradle.com/terms-of-service'
37 termsOfServiceAgree = 'yes'
38
39 publishAlways()
40}
41
42ext.licenseFile = files("$rootDir/LICENSE.txt", "$rootDir/ThirdPartyNotices.txt")
43
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080044if (project.hasProperty("publishVersion")) {
45 wpilibVersioning.version.set(project.publishVersion)
Brian Silverman41cdd3e2019-01-19 19:48:58 -080046}
47
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080048wpilibVersioning.version.finalizeValue()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080049
50def outputsFolder = file("$buildDir/allOutputs")
51
52def versionFile = file("$outputsFolder/version.txt")
53
54task outputVersions() {
55 description = 'Prints the versions of wpilib to a file for use by the downstream packaging project'
56 group = 'Build'
57 outputs.files(versionFile)
58
59 doFirst {
60 buildDir.mkdir()
61 outputsFolder.mkdir()
62 }
63
64 doLast {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080065 versionFile.write wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080066 }
67}
68
69task libraryBuild() {}
70
71build.dependsOn outputVersions
72
73task copyAllOutputs(type: Copy) {
74 destinationDir outputsFolder
75}
76
77build.dependsOn copyAllOutputs
78copyAllOutputs.dependsOn outputVersions
79
80ext.addTaskToCopyAllOutputs = { task ->
81 copyAllOutputs.dependsOn task
82 copyAllOutputs.inputs.file task.archivePath
83 copyAllOutputs.from task.archivePath
84}
85
86subprojects {
87 apply plugin: 'eclipse'
88 apply plugin: 'idea'
89
90 def subproj = it
91
92 plugins.withType(NativeComponentPlugin) {
93 subproj.apply plugin: MultiBuilds
94 }
95
96 apply from: "${rootDir}/shared/java/javastyle.gradle"
97
Brian Silverman41cdd3e2019-01-19 19:48:58 -080098 // Disables doclint in java 8.
99 if (JavaVersion.current().isJava8Compatible()) {
100 tasks.withType(Javadoc) {
James Kuszmaul4b81d302019-12-14 20:53:14 -0800101 if (project.name != "docs") {
102 options.addStringOption('Xdoclint:none', '-quiet')
103 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800104 }
105 }
106}
107
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800108ext.getCurrentArch = {
109 return NativePlatforms.desktop
110}
111
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800112wrapper {
James Kuszmaul4b81d302019-12-14 20:53:14 -0800113 gradleVersion = '6.0'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800114}