2023-06-21 08:38:30 -07:00
plugins {
id "cpp"
id "google-test-test-suite"
2026-01-12 16:00:11 -06:00
id "edu.wpi.first.GradleRIO" version "2026.1.1"
2023-06-21 08:38:30 -07:00
}
repositories {
mavenLocal ( )
jcenter ( )
}
2024-10-31 02:59:39 -04:00
wpi . maven . useLocal = false
wpi . maven . useDevelopment = false
2026-01-12 16:00:11 -06:00
wpi . versions . wpilibVersion = "2026.1.1"
wpi . versions . wpimathVersion = "2026.1.1"
2024-08-31 13:44:19 -04:00
2023-06-21 08:38:30 -07:00
// Define my targets (RoboRIO) and artifacts (deployable files)
// This is added by GradleRIO's backing project DeployUtils.
deploy {
targets {
roborio ( getTargetTypeClass ( 'RoboRIO' ) ) {
// Team number is loaded either from the .wpilib/wpilib_preferences.json
// or from command line. If not found an exception will be thrown.
// You can use getTeamOrDefault(team) instead of getTeamNumber if you
// want to store a team number in this file.
team = project . frc . getTeamOrDefault ( 5940 )
debug = project . frc . getDebugOrDefault ( false )
artifacts {
// First part is artifact name, 2nd is artifact type
// getTargetTypeClass is a shortcut to get the class type using a string
frcCpp ( getArtifactTypeClass ( 'FRCNativeArtifact' ) ) {
}
// Static files artifact
frcStaticFileDeploy ( getArtifactTypeClass ( 'FileTreeArtifact' ) ) {
files = project . fileTree ( 'src/main/deploy' )
directory = '/home/lvuser/deploy'
2026-01-12 16:00:11 -06:00
deleteOldFiles = false // Change to true to delete files on roboRIO that no
// longer exist in deploy directory of this project
2023-06-21 08:38:30 -07:00
}
}
}
}
}
def deployArtifact = deploy . targets . roborio . artifacts . frcCpp
// Set this to true to enable desktop support.
def includeDesktopSupport = true
// Set to true to run simulation in debug mode
wpi . cpp . debugSimulation = false
// Default enable simgui
wpi . sim . addGui ( ) . defaultEnabled = true
// Enable DS but not by default
wpi . sim . addDriverstation ( )
model {
components {
frcUserProgram ( NativeExecutableSpec ) {
2024-09-14 23:10:02 -05:00
// We don't need to build for roborio -- if we do, we need to install
// a roborio toolchain every time we build in CI
// Ideally, we'd be able to set the roborio toolchain as optional, but
// I can't figure out how to set that environment variable from build.gradle
// (see https://github.com/wpilibsuite/native-utils/blob/2917c69fb5094e36d499c465f047dab81c68446c/ToolchainPlugin/src/main/java/edu/wpi/first/toolchain/ToolchainGraphBuildService.java#L71)
// for now, commented out
// targetPlatform wpi.platforms.roborio
if ( includeDesktopSupport ) {
targetPlatform wpi . platforms . desktop
}
2023-06-21 08:38:30 -07:00
sources . cpp {
source {
srcDir 'src/main/cpp'
2024-09-14 23:10:02 -05:00
include '**/*.cpp' , '**/*.cc'
2023-06-21 08:38:30 -07:00
}
exportedHeaders {
srcDir 'src/main/include'
}
}
2024-09-14 23:10:02 -05:00
// Set deploy task to deploy this component
2023-06-21 08:38:30 -07:00
deployArtifact . component = it
2024-09-14 23:10:02 -05:00
// Enable run tasks for this component
2023-06-21 08:38:30 -07:00
wpi . cpp . enableExternalTasks ( it )
2024-09-14 23:10:02 -05:00
// Enable simulation for this component
2023-06-21 08:38:30 -07:00
wpi . sim . enable ( it )
// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries.
wpi . cpp . vendor . cpp ( it )
wpi . cpp . deps . wpilib ( it )
}
}
testSuites {
frcUserProgramTest ( GoogleTestTestSuiteSpec ) {
testing $ . components . frcUserProgram
sources . cpp {
source {
srcDir 'src/test/cpp'
include '**/*.cpp'
}
}
2024-09-14 23:10:02 -05:00
// Enable run tasks for this component
2023-06-21 08:38:30 -07:00
wpi . cpp . enableExternalTasks ( it )
wpi . cpp . vendor . cpp ( it )
wpi . cpp . deps . wpilib ( it )
wpi . cpp . deps . googleTest ( it )
}
}
}