import edu.wpi.first.toolchain.* plugins { id "java" id "cpp" id "com.diffplug.spotless" version "6.24.0" id "edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin" version "2020.2" id "edu.wpi.first.GradleRIO" version "2025.1.1-beta-2" id 'edu.wpi.first.WpilibTools' version '1.3.0' id 'com.google.protobuf' version '0.9.3' apply false id 'edu.wpi.first.GradleJni' version '1.1.0' } allprojects { repositories { mavenCentral() mavenLocal() maven { url = "https://maven.photonvision.org/releases" } maven { url = "https://maven.photonvision.org/snapshots" } maven { url = "https://jogamp.org/deployment/maven/" } } wpilibRepositories.addAllReleaseRepositories(it) wpilibRepositories.addAllDevelopmentRepositories(it) } ext.localMavenURL = file("$project.buildDir/outputs/maven") ext.allOutputsFolder = file("$project.buildDir/outputs") // Configure the version number. apply from: "versioningHelper.gradle" ext { wpilibVersion = "2025.1.1-beta-2" wpimathVersion = wpilibVersion openCVYear = "2024" openCVversion = "4.8.0-4" joglVersion = "2.4.0" javalinVersion = "5.6.2" libcameraDriverVersion = "dev-v2023.1.0-15-gc8988b3" rknnVersion = "dev-v2024.0.1-4-g0db16ac" frcYear = "2025" mrcalVersion = "dev-v2024.0.0-27-g41d7868"; pubVersion = versionString isDev = pubVersion.startsWith("dev") // A list, for legacy reasons, with only the current platform contained wpilibNativeName = wpilibTools.platformMapper.currentPlatform.platformName; def nativeName = wpilibNativeName if (wpilibNativeName == "linuxx64") nativeName = "linuxx86-64"; if (wpilibNativeName == "winx64") nativeName = "windowsx86-64"; if (wpilibNativeName == "macx64") nativeName = "osxx86-64"; if (wpilibNativeName == "macarm64") nativeName = "osxarm64"; jniPlatform = nativeName println("Building for platform " + jniPlatform + " wpilib: " + wpilibNativeName) println("Using Wpilib: " + wpilibVersion) println("Using OpenCV: " + openCVversion) photonMavenURL = 'https://maven.photonvision.org/' + (isDev ? 'snapshots' : 'releases'); println("Publishing Photonlib to " + photonMavenURL) } spotless { java { target fileTree('.') { include '**/*.java' exclude '**/build/**', '**/build-*/**', '**/src/generated/**' } toggleOffOn() googleJavaFormat() indentWithTabs(2) indentWithSpaces(4) removeUnusedImports() trimTrailingWhitespace() endWithNewline() } groovyGradle { target fileTree('.') { include '**/*.gradle' exclude '**/build/**', '**/build-*/**' } greclipse() indentWithSpaces(4) trimTrailingWhitespace() endWithNewline() } format 'xml', { target fileTree('.') { include '**/*.xml' exclude '**/build/**', '**/build-*/**', "**/.idea/**" } eclipseWtp('xml') trimTrailingWhitespace() indentWithSpaces(2) endWithNewline() } format 'misc', { target fileTree('.') { include '**/*.md', '**/.gitignore' exclude '**/build/**', '**/build-*/**' } trimTrailingWhitespace() indentWithSpaces(2) endWithNewline() } } wrapper { gradleVersion '8.11' } ext.getCurrentArch = { return NativePlatforms.desktop } subprojects { tasks.withType(JavaCompile) { options.compilerArgs.add '-XDstringConcat=inline' options.encoding = 'UTF-8' } // Enables UTF-8 support in Javadoc tasks.withType(Javadoc) { options.addStringOption("charset", "utf-8") options.addStringOption("docencoding", "utf-8") options.addStringOption("encoding", "utf-8") } }