mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-19 00:41:41 +00:00
177 lines
5.9 KiB
Groovy
177 lines
5.9 KiB
Groovy
plugins {
|
|
id 'edu.wpi.first.WpilibTools' version '1.1.0'
|
|
}
|
|
|
|
import java.nio.file.Path
|
|
|
|
apply plugin: "cpp"
|
|
apply plugin: "java"
|
|
apply plugin: "google-test-test-suite"
|
|
apply plugin: "edu.wpi.first.NativeUtils"
|
|
|
|
apply from: "${rootDir}/shared/config.gradle"
|
|
apply from: "${rootDir}/versioningHelper.gradle"
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
sourceCompatibility = JavaVersion.VERSION_11
|
|
targetCompatibility = JavaVersion.VERSION_11
|
|
|
|
wpilibTools.deps.wpilibVersion = wpilibVersion
|
|
println("Building for WPILib ${wpilibTools.deps.wpilibVersion}")
|
|
|
|
// From wpilib shared/config.gradle:
|
|
// NativeUtils adds the following OpenCV warning suppression for Linux, but not
|
|
// for macOS
|
|
// https://github.com/opencv/opencv/issues/20269
|
|
nativeUtils.platformConfigs.osxuniversal.cppCompiler.args.add("-Wno-deprecated-anon-enum-enum-conversion")
|
|
nativeUtils.platformConfigs.linuxathena.cppCompiler.args.add("-Wno-deprecated-anon-enum-enum-conversion")
|
|
// nativeUtils.platformConfigs.linuxx64.cppCompiler.args.add("-Wno-deprecated-anon-enum-enum-conversion")
|
|
|
|
// Apply Java configuration
|
|
dependencies {
|
|
implementation project(":photon-targeting")
|
|
|
|
// WPILib deps
|
|
implementation wpilibTools.deps.wpilibJava("wpiutil")
|
|
implementation wpilibTools.deps.wpilibJava("cameraserver")
|
|
implementation wpilibTools.deps.wpilibJava("cscore")
|
|
implementation wpilibTools.deps.wpilibJava("wpimath")
|
|
implementation wpilibTools.deps.wpilibJava("wpinet")
|
|
implementation wpilibTools.deps.wpilibJava("hal")
|
|
implementation wpilibTools.deps.wpilibJava("ntcore")
|
|
implementation wpilibTools.deps.wpilibJava("wpilibj")
|
|
implementation wpilibTools.deps.wpilibJava("apriltag")
|
|
|
|
// Jackson
|
|
implementation "com.fasterxml.jackson.core:jackson-annotations:2.12.4"
|
|
implementation "com.fasterxml.jackson.core:jackson-core:2.12.4"
|
|
implementation "com.fasterxml.jackson.core:jackson-databind:2.12.4"
|
|
|
|
implementation "edu.wpi.first.thirdparty.frc2024.opencv:opencv-java:$openCVversion"
|
|
implementation "edu.wpi.first.thirdparty.frc2024.opencv:opencv-jni:$openCVversion:$jniPlatform"
|
|
|
|
implementation "org.ejml:ejml-simple:0.42"
|
|
|
|
// Junit
|
|
testImplementation wpilibTools.deps.wpilibJava("cscore")
|
|
testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
|
|
testImplementation("org.junit.jupiter:junit-jupiter-params:5.8.2")
|
|
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
|
|
}
|
|
|
|
// Set up exports properly
|
|
nativeUtils {
|
|
exportsConfigs {
|
|
// Main library is just default empty. This will export everything
|
|
Photon {
|
|
}
|
|
}
|
|
}
|
|
|
|
model {
|
|
components {
|
|
Photon(NativeLibrarySpec) {
|
|
sources {
|
|
cpp {
|
|
source {
|
|
srcDirs "src/main/native/cpp"
|
|
include "**/*.cpp"
|
|
}
|
|
exportedHeaders {
|
|
srcDirs "src/main/native/include"
|
|
srcDirs "src/generate/native/include"
|
|
}
|
|
}
|
|
}
|
|
nativeUtils.useRequiredLibrary(it, "wpilib_shared")
|
|
nativeUtils.useRequiredLibrary(it, "apriltag_shared")
|
|
nativeUtils.useRequiredLibrary(it, "opencv_shared")
|
|
}
|
|
}
|
|
testSuites {
|
|
cppTest(GoogleTestTestSuiteSpec) {
|
|
testing $.components.Photon
|
|
|
|
sources.cpp {
|
|
source {
|
|
srcDir "src/test/native/cpp"
|
|
include "**/*.cpp"
|
|
}
|
|
}
|
|
|
|
nativeUtils.useRequiredLibrary(it, "wpilib_executable_shared")
|
|
nativeUtils.useRequiredLibrary(it, "apriltag_shared")
|
|
nativeUtils.useRequiredLibrary(it, "googletest_static")
|
|
nativeUtils.useRequiredLibrary(it, "opencv_shared")
|
|
}
|
|
}
|
|
}
|
|
|
|
def photonlibFileInput = file("src/generate/photonlib.json.in")
|
|
ext.photonlibFileOutput = file("$buildDir/generated/vendordeps/photonlib.json")
|
|
|
|
task generateVendorJson() {
|
|
description = "Generates the vendor JSON file"
|
|
group = "PhotonVision"
|
|
|
|
outputs.file photonlibFileOutput
|
|
inputs.file photonlibFileInput
|
|
|
|
println "Writing vendor JSON ${pubVersion} to $photonlibFileOutput"
|
|
|
|
if (photonlibFileOutput.exists()) {
|
|
photonlibFileOutput.delete()
|
|
}
|
|
photonlibFileOutput.parentFile.mkdirs()
|
|
|
|
def read = photonlibFileInput.text
|
|
.replace('${photon_version}', pubVersion)
|
|
.replace('${frc_year}', frcYear)
|
|
photonlibFileOutput.text = read
|
|
|
|
outputs.upToDateWhen { false }
|
|
}
|
|
|
|
build.mustRunAfter generateVendorJson
|
|
|
|
task writeCurrentVersion {
|
|
def versionFileIn = file("${rootDir}/shared/PhotonVersion.java.in")
|
|
writePhotonVersionFile(versionFileIn, Path.of("$projectDir", "src", "main", "java", "org", "photonvision", "PhotonVersion.java"),
|
|
versionString)
|
|
versionFileIn = file("${rootDir}/shared/PhotonVersion.h.in")
|
|
writePhotonVersionFile(versionFileIn, Path.of("$projectDir", "src", "generate", "native", "include", "PhotonVersion.h"),
|
|
versionString)
|
|
}
|
|
|
|
build.mustRunAfter writeCurrentVersion
|
|
|
|
tasks.withType(Javadoc) {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
apply from: "publish.gradle"
|
|
|
|
def testNativeConfigName = 'wpilibTestNatives'
|
|
def testNativeConfig = configurations.create(testNativeConfigName)
|
|
|
|
def folder = project.layout.buildDirectory.dir('NativeTest')
|
|
|
|
def testNativeTasks = wpilibTools.createExtractionTasks {
|
|
taskPostfix = "Test"
|
|
configurationName = testNativeConfigName
|
|
rootTaskFolder.set(folder)
|
|
}
|
|
|
|
testNativeTasks.addToSourceSetResources(sourceSets.test)
|
|
|
|
testNativeConfig.dependencies.add wpilibTools.deps.cscore()
|
|
testNativeConfig.dependencies.add wpilibTools.deps.wpilib("ntcore")
|
|
testNativeConfig.dependencies.add wpilibTools.deps.wpilib("wpinet")
|
|
testNativeConfig.dependencies.add wpilibTools.deps.wpilib("hal")
|
|
testNativeConfig.dependencies.add wpilibTools.deps.wpilib("wpiutil")
|
|
testNativeConfig.dependencies.add wpilibTools.deps.wpilib("wpimath")
|
|
testNativeConfig.dependencies.add wpilibTools.deps.cscore()
|