import edu.wpi.first.toolchain.* buildscript { repositories { mavenCentral() } dependencies { classpath 'com.hubspot.jinjava:jinjava:2.6.0' } } plugins { id 'base' id 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin' version '4.1.0' id 'edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin' version '2020.2' id 'edu.wpi.first.NativeUtils' apply false id 'edu.wpi.first.GradleJni' version '1.0.0' id 'edu.wpi.first.GradleVsCode' id 'idea' id 'visual-studio' id 'net.ltgt.errorprone' version '2.0.2' apply false id 'com.github.johnrengelman.shadow' version '7.1.2' apply false id 'com.diffplug.spotless' version '6.1.2' apply false id 'com.github.spotbugs' version '5.0.4' apply false } wpilibVersioning.buildServerMode = project.hasProperty('buildServer') wpilibVersioning.releaseMode = project.hasProperty('releaseMode') allprojects { repositories { mavenCentral() } if (project.hasProperty('releaseMode')) { wpilibRepositories.addAllReleaseRepositories(it) } else { wpilibRepositories.addAllDevelopmentRepositories(it) } } buildScan { termsOfServiceUrl = 'https://gradle.com/terms-of-service' termsOfServiceAgree = 'yes' publishAlways() } ext.licenseFile = files("$rootDir/LICENSE.md", "$rootDir/ThirdPartyNotices.txt") if (project.hasProperty("publishVersion")) { wpilibVersioning.version.set(project.publishVersion) } wpilibVersioning.version.finalizeValue() def outputsFolder = file("$buildDir/allOutputs") def versionFile = file("$outputsFolder/version.txt") task outputVersions() { description = 'Prints the versions of wpilib to a file for use by the downstream packaging project' group = 'Build' outputs.files(versionFile) doFirst { buildDir.mkdir() outputsFolder.mkdir() } doLast { versionFile.write wpilibVersioning.version.get() } } task libraryBuild() {} build.dependsOn outputVersions task copyAllOutputs(type: Copy) { destinationDir outputsFolder } build.dependsOn copyAllOutputs copyAllOutputs.dependsOn outputVersions ext.addTaskToCopyAllOutputs = { task -> copyAllOutputs.dependsOn task copyAllOutputs.inputs.file task.archivePath copyAllOutputs.from task.archivePath } subprojects { apply plugin: 'eclipse' apply plugin: 'idea' def subproj = it plugins.withType(NativeComponentPlugin) { subproj.apply plugin: MultiBuilds } apply from: "${rootDir}/shared/java/javastyle.gradle" // Disables doclint in java 8. if (JavaVersion.current().isJava8Compatible()) { tasks.withType(Javadoc) { if (project.name != "docs") { options.addStringOption('Xdoclint:none', '-quiet') } } } // Enables UTF-8 support in Javadoc tasks.withType(Javadoc) { options.addStringOption("charset", "utf-8") options.addStringOption("docencoding", "utf-8") options.addStringOption("encoding", "utf-8") } // Sign outputs with Developer ID if (project.hasProperty("developerID")) { tasks.withType(AbstractLinkTask) { task -> // Don't sign any executables because codesign complains // about relative rpath. if (!(task instanceof LinkExecutable)) { doLast { // Get path to binary. String path = task.getLinkedFile().getAsFile().get().getAbsolutePath() exec { workingDir rootDir def args = [ "sh", "-c", "codesign --force --strict --timestamp --options=runtime " + "--verbose -s ${project.findProperty("developerID")} ${path}" ] commandLine args } } } } } } ext.getCurrentArch = { return NativePlatforms.desktop } wrapper { gradleVersion = '7.3.3' }