blob: b31630e70ea7eac0fe67e7a990b68a882d8a4c0d [file] [log] [blame]
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 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.environment 'DYLD_LIBRARY_PATH', filePath
test.workingDir filePath
run.dependsOn it.tasks.install
run.systemProperty 'java.library.path', filePath
run.environment 'LD_LIBRARY_PATH', filePath
run.environment 'DYLD_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"