mirror of
https://github.com/Astatin3/photonvision-2025.0.0-beta-6.git
synced 2026-06-09 00:28:06 -06:00
190 lines
6.5 KiB
Groovy
190 lines
6.5 KiB
Groovy
|
|
// Configure Native-Utils WPI Plugin
|
||
|
|
nativeUtils.addWpiNativeUtils()
|
||
|
|
nativeUtils.withCrossRoboRIO()
|
||
|
|
nativeUtils.withCrossLinuxArm32()
|
||
|
|
nativeUtils.withCrossLinuxArm64()
|
||
|
|
|
||
|
|
// Configure WPI dependencies.
|
||
|
|
nativeUtils.wpi.configureDependencies {
|
||
|
|
wpiVersion = wpilibVersion
|
||
|
|
wpimathVersion = wpimathVersion
|
||
|
|
opencvYear = 'frc'+openCVYear
|
||
|
|
opencvVersion = openCVversion
|
||
|
|
googleTestYear = "frc2024"
|
||
|
|
googleTestVersion = "1.14.0-1"
|
||
|
|
niLibVersion = "2025.0.0"
|
||
|
|
}
|
||
|
|
|
||
|
|
// Configure warnings and errors
|
||
|
|
nativeUtils.wpi.addWarnings()
|
||
|
|
nativeUtils.wpi.addWarningsAsErrors()
|
||
|
|
|
||
|
|
nativeUtils.setSinglePrintPerPlatform()
|
||
|
|
|
||
|
|
// Enable builds for all platforms.
|
||
|
|
model {
|
||
|
|
components {
|
||
|
|
all {
|
||
|
|
nativeUtils.useAllPlatforms(it)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
binaries {
|
||
|
|
withType(NativeBinarySpec).all {
|
||
|
|
nativeUtils.usePlatformArguments(it)
|
||
|
|
if (it.toolChain instanceof GccCompatibleToolChain) {
|
||
|
|
it.cppCompiler.args << "-Wno-deprecated-enum-enum-conversion"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
task copyAllOutputs(type: Copy) {
|
||
|
|
def outputsFolder = file("$project.buildDir/outputs")
|
||
|
|
destinationDir outputsFolder
|
||
|
|
}
|
||
|
|
|
||
|
|
ext.addTaskToCopyAllOutputs = { task ->
|
||
|
|
copyAllOutputs.dependsOn task
|
||
|
|
copyAllOutputs.inputs.file task.archiveFile
|
||
|
|
copyAllOutputs.from task.archiveFile
|
||
|
|
}
|
||
|
|
|
||
|
|
// Add debug path to binaries.
|
||
|
|
ext.appendDebugPathToBinaries = { binaries ->
|
||
|
|
binaries.withType(StaticLibraryBinarySpec) {
|
||
|
|
if (it.buildType.name.contains('debug')) {
|
||
|
|
def staticFileDir = it.staticLibraryFile.parentFile
|
||
|
|
def staticFileName = it.staticLibraryFile.name
|
||
|
|
def staticFileExtension = staticFileName.substring(staticFileName.lastIndexOf('.'))
|
||
|
|
staticFileName = staticFileName.substring(0, staticFileName.lastIndexOf('.'))
|
||
|
|
staticFileName = staticFileName + 'd' + staticFileExtension
|
||
|
|
def newStaticFile = new File(staticFileDir, staticFileName)
|
||
|
|
it.staticLibraryFile = newStaticFile
|
||
|
|
}
|
||
|
|
}
|
||
|
|
binaries.withType(SharedLibraryBinarySpec) {
|
||
|
|
if (it.buildType.name.contains('debug')) {
|
||
|
|
def sharedFileDir = it.sharedLibraryFile.parentFile
|
||
|
|
def sharedFileName = it.sharedLibraryFile.name
|
||
|
|
def sharedFileExtension = sharedFileName.substring(sharedFileName.lastIndexOf('.'))
|
||
|
|
sharedFileName = sharedFileName.substring(0, sharedFileName.lastIndexOf('.'))
|
||
|
|
sharedFileName = sharedFileName + 'd' + sharedFileExtension
|
||
|
|
def newSharedFile = new File(sharedFileDir, sharedFileName)
|
||
|
|
|
||
|
|
def sharedLinkFileDir = it.sharedLibraryLinkFile.parentFile
|
||
|
|
def sharedLinkFileName = it.sharedLibraryLinkFile.name
|
||
|
|
def sharedLinkFileExtension = sharedLinkFileName.substring(sharedLinkFileName.lastIndexOf('.'))
|
||
|
|
sharedLinkFileName = sharedLinkFileName.substring(0, sharedLinkFileName.lastIndexOf('.'))
|
||
|
|
sharedLinkFileName = sharedLinkFileName + 'd' + sharedLinkFileExtension
|
||
|
|
def newLinkFile = new File(sharedLinkFileDir, sharedLinkFileName)
|
||
|
|
|
||
|
|
it.sharedLibraryLinkFile = newLinkFile
|
||
|
|
it.sharedLibraryFile = newSharedFile
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Create ZIP tasks for each component.
|
||
|
|
ext.createComponentZipTasks = { components, names, base, type, project, func ->
|
||
|
|
def stringNames = names.collect { it.toString() }
|
||
|
|
def configMap = [:]
|
||
|
|
components.each {
|
||
|
|
if (it in NativeLibrarySpec && stringNames.contains(it.name)) {
|
||
|
|
it.binaries.each {
|
||
|
|
if (!it.buildable) return
|
||
|
|
def target = nativeUtils.getPublishClassifier(it)
|
||
|
|
if (configMap.containsKey(target)) {
|
||
|
|
configMap.get(target).add(it)
|
||
|
|
} else {
|
||
|
|
configMap.put(target, [])
|
||
|
|
configMap.get(target).add(it)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
def taskList = []
|
||
|
|
def outputsFolder = file("$project.buildDir/outputs")
|
||
|
|
configMap.each { key, value ->
|
||
|
|
def task = project.tasks.create(base + "-${key}", type) {
|
||
|
|
description = 'Creates component archive for platform ' + key
|
||
|
|
destinationDirectory = outputsFolder
|
||
|
|
archiveClassifier = key
|
||
|
|
archiveBaseName = base
|
||
|
|
duplicatesStrategy = 'exclude'
|
||
|
|
|
||
|
|
from(licenseFile) {
|
||
|
|
into '/'
|
||
|
|
}
|
||
|
|
|
||
|
|
func(it, value)
|
||
|
|
}
|
||
|
|
taskList.add(task)
|
||
|
|
|
||
|
|
project.build.dependsOn task
|
||
|
|
|
||
|
|
project.artifacts {
|
||
|
|
task
|
||
|
|
}
|
||
|
|
addTaskToCopyAllOutputs(task)
|
||
|
|
}
|
||
|
|
return taskList
|
||
|
|
}
|
||
|
|
|
||
|
|
ext.createAllCombined = { list, name, base, type, project ->
|
||
|
|
def outputsFolder = file("$project.buildDir/outputs")
|
||
|
|
|
||
|
|
def task = project.tasks.create(base + "-all", type) {
|
||
|
|
description = "Creates component archive for all classifiers"
|
||
|
|
destinationDirectory = outputsFolder
|
||
|
|
classifier = "all"
|
||
|
|
archiveBaseName = base
|
||
|
|
duplicatesStrategy = 'exclude'
|
||
|
|
|
||
|
|
list.each {
|
||
|
|
if (it.name.endsWith('debug')) return
|
||
|
|
from project.zipTree(it.archiveFile)
|
||
|
|
dependsOn it
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
project.build.dependsOn task
|
||
|
|
|
||
|
|
project.artifacts {
|
||
|
|
task
|
||
|
|
}
|
||
|
|
|
||
|
|
return task
|
||
|
|
}
|
||
|
|
|
||
|
|
// Create the standard ZIP format for the dependencies.
|
||
|
|
ext.includeStandardZipFormat = { task, value ->
|
||
|
|
value.each { binary ->
|
||
|
|
if (binary.buildable) {
|
||
|
|
if (binary instanceof SharedLibraryBinarySpec) {
|
||
|
|
task.dependsOn binary.tasks.link
|
||
|
|
task.from(new File(binary.sharedLibraryFile.absolutePath + ".debug")) {
|
||
|
|
into nativeUtils.getPlatformPath(binary) + '/shared'
|
||
|
|
}
|
||
|
|
def sharedPath = binary.sharedLibraryFile.absolutePath
|
||
|
|
sharedPath = sharedPath.substring(0, sharedPath.length() - 4)
|
||
|
|
|
||
|
|
task.from(new File(sharedPath + '.pdb')) {
|
||
|
|
into nativeUtils.getPlatformPath(binary) + '/shared'
|
||
|
|
}
|
||
|
|
task.from(binary.sharedLibraryFile) {
|
||
|
|
into nativeUtils.getPlatformPath(binary) + '/shared'
|
||
|
|
}
|
||
|
|
task.from(binary.sharedLibraryLinkFile) {
|
||
|
|
into nativeUtils.getPlatformPath(binary) + '/shared'
|
||
|
|
}
|
||
|
|
} else if (binary instanceof StaticLibraryBinarySpec) {
|
||
|
|
task.dependsOn binary.tasks.createStaticLib
|
||
|
|
task.from(binary.staticLibraryFile) {
|
||
|
|
into nativeUtils.getPlatformPath(binary) + '/static'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|