evaluationDependsOn(':hal') evaluationDependsOn(':ntcore') evaluationDependsOn(':cscore') evaluationDependsOn(':cameraserver') ext { baseId = 'wpilibj' groupId = 'edu.wpi.first.wpilibj' devMain = 'edu.wpi.first.wpilibj.DevMain' } apply from: "${rootDir}/shared/java/javacommon.gradle" def wpilibVersionFileInput = file("src/generate/WPILibVersion.java.in") def wpilibVersionFileOutput = file("$buildDir/generated/java/edu/wpi/first/wpilibj/util/WPILibVersion.java") task generateJavaVersion() { description = 'Generates the wpilib version class' group = 'WPILib' outputs.file wpilibVersionFileOutput inputs.file wpilibVersionFileInput if (wpilibVersioning.releaseMode) { outputs.upToDateWhen { false } } // We follow a simple set of checks to determine whether we should generate a new version file: // 1. If the release type is not development, we generate a new version file // 2. If there is no generated version number, we generate a new version file // 3. If there is a generated build number, and the release type is development, then we will // only generate if the publish task is run. doLast { def version = wpilibVersioning.version.get() println "Writing version ${version} to $wpilibVersionFileOutput" if (wpilibVersionFileOutput.exists()) { wpilibVersionFileOutput.delete() } def read = wpilibVersionFileInput.text.replace('${wpilib_version}', version) wpilibVersionFileOutput.write(read) } } gradle.taskGraph.addTaskExecutionGraphListener { graph -> def willPublish = graph.hasTask(publish) if (willPublish) { generateJavaVersion.outputs.upToDateWhen { false } } } sourceSets.main.java.srcDir "${buildDir}/generated/java/" compileJava { dependsOn generateJavaVersion } repositories { maven { url = 'https://frcmaven.wpi.edu/artifactory/ex-mvn' } } dependencies { implementation project(':hal') implementation project(':wpiutil') implementation project(':wpinet') implementation project(':wpimath') implementation project(':ntcore') implementation project(':cscore') implementation project(':cameraserver') testImplementation 'org.mockito:mockito-core:4.1.0' devImplementation project(':hal') devImplementation project(':wpiutil') devImplementation project(':wpinet') devImplementation project(':wpimath') devImplementation project(':ntcore') devImplementation project(':cscore') devImplementation project(':cameraserver') devImplementation sourceSets.main.output } apply plugin: 'cpp' apply plugin: 'edu.wpi.first.NativeUtils' apply plugin: ExtraTasks apply from: "${rootDir}/shared/config.gradle" project(':').libraryBuild.dependsOn build ext { sharedCvConfigs = [wpilibjDev: []] staticCvConfigs = [:] useJava = true useCpp = true } apply from: "${rootDir}/shared/opencv.gradle" model { components { wpilibjDev(NativeExecutableSpec) { targetBuildTypes 'debug' sources { cpp { source { srcDirs 'src/dev/native/cpp' include '**/*.cpp' } exportedHeaders { srcDirs 'src/dev/native/include' } } } binaries.all { project(':ntcore').addNtcoreDependency(it, 'shared') project(':ntcore').addNtcoreJniDependency(it) lib project: ':cscore', library: 'cscore', linkage: 'shared' lib project: ':wpinet', library: 'wpinet', linkage: 'shared' lib project: ':wpiutil', library: 'wpiutil', linkage: 'shared' lib project: ':wpimath', library: 'wpimath', linkage: 'shared' lib project: ':cscore', library: 'cscoreJNIShared', linkage: 'shared' lib project: ':wpinet', library: 'wpinetJNIShared', linkage: 'shared' lib project: ':wpiutil', library: 'wpiutilJNIShared', linkage: 'shared' lib project: ':wpimath', library: 'wpimathJNIShared', linkage: 'shared' lib project: ':cameraserver', library: 'cameraserver', linkage: 'shared' project(':hal').addHalDependency(it, 'shared') project(':hal').addHalJniDependency(it) if (it.targetPlatform.name == nativeUtils.wpi.platforms.roborio) { nativeUtils.useRequiredLibrary(it, 'ni_link_libraries', 'ni_runtime_libraries') } } } } tasks { def c = $.components project.tasks.create('runCpp', Exec) { group = 'WPILib' description = "Run the wpilibjDev executable" def found = false def systemArch = getCurrentArch() c.each { //println it.name if (it in NativeExecutableSpec && it.name == "wpilibjDev") { it.binaries.each { if (!found) { def arch = it.targetPlatform.name if (arch == systemArch) { dependsOn it.tasks.install commandLine it.tasks.install.runScriptFile.get().asFile.toString() def filePath = it.tasks.install.installDirectory.get().toString() + File.separatorChar + 'lib' test.dependsOn it.tasks.install test.systemProperty 'java.library.path', filePath test.environment 'LD_LIBRARY_PATH', filePath test.workingDir filePath run.dependsOn it.tasks.install run.systemProperty 'java.library.path', filePath run.environment 'LD_LIBRARY_PATH', filePath run.workingDir filePath found = true } } } } } } } } def oldWpilibVersionFile = file('src/main/java/edu/wpi/first/wpilibj/util/WPILibVersion.java') clean { delete oldWpilibVersionFile } test { testLogging { outputs.upToDateWhen {false} showStandardStreams = true } } apply from: "${rootDir}/shared/javaDesktopTestTask.gradle"