mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
Also deletes object files. Both of these things are only done on the build server (-PbuildServer flag). This will remove all test folders, which removes lots of copies of dependencies. This also fixes an issue where gtest exectubables were installed for cross builds, even though they should not have been.
177 lines
6.1 KiB
Groovy
177 lines
6.1 KiB
Groovy
import org.gradle.internal.os.OperatingSystem
|
|
|
|
nativeUtils.addWpiNativeUtils()
|
|
nativeUtils.withRoboRIO()
|
|
nativeUtils.withRaspbian()
|
|
nativeUtils.withBionic()
|
|
nativeUtils {
|
|
wpi {
|
|
configureDependencies {
|
|
wpiVersion = "-1"
|
|
niLibVersion = "2020.10.1"
|
|
opencvVersion = "3.4.7-5"
|
|
googleTestVersion = "1.9.0-5-437e100-1"
|
|
imguiVersion = "1.76-10"
|
|
wpimathVersion = "-1"
|
|
}
|
|
}
|
|
}
|
|
|
|
nativeUtils.wpi.addWarnings()
|
|
nativeUtils.wpi.addWarningsAsErrors()
|
|
nativeUtils.wpi.addReleaseSymbolGeneration()
|
|
|
|
nativeUtils.setSinglePrintPerPlatform()
|
|
nativeUtils.enableSourceLink()
|
|
|
|
nativeUtils.platformConfigs.each {
|
|
if (it.name.contains('windows')) return
|
|
it.linker.args << '-Wl,-rpath,\'$ORIGIN\''
|
|
if (it.name == 'osxx86-64') {
|
|
it.linker.args << "-headerpad_max_install_names"
|
|
}
|
|
}
|
|
|
|
model {
|
|
components {
|
|
all {
|
|
nativeUtils.useAllPlatforms(it)
|
|
}
|
|
}
|
|
binaries {
|
|
withType(NativeBinarySpec).all {
|
|
nativeUtils.usePlatformArguments(it)
|
|
}
|
|
}
|
|
}
|
|
|
|
apply plugin: DisableBuildingGTest
|
|
|
|
if (project.hasProperty('buildServer')) {
|
|
tasks.withType(org.gradle.nativeplatform.test.tasks.RunTestExecutable) {
|
|
def exeFile = file(it.executable)
|
|
def folder = exeFile.parentFile
|
|
|
|
it.doLast {
|
|
folder.deleteDir()
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
classifier = key
|
|
archiveBaseName = '_M_' + base
|
|
duplicatesStrategy = 'exclude'
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
|
|
func(it, value)
|
|
}
|
|
taskList.add(task)
|
|
|
|
project.build.dependsOn task
|
|
|
|
project.artifacts {
|
|
task
|
|
}
|
|
addTaskToCopyAllOutputs(task)
|
|
}
|
|
return taskList
|
|
}
|
|
|
|
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'
|
|
}
|
|
def pdbDir = binary.staticLibraryFile.parentFile
|
|
task.from(pdbDir) {
|
|
include '*.pdb'
|
|
into nativeUtils.getPlatformPath(binary) + '/static'
|
|
}
|
|
task.from(new File(pdbDir, "SourceLink.json")) {
|
|
into nativeUtils.getPlatformPath(binary) + '/static'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|