mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
149 lines
4.0 KiB
Groovy
149 lines
4.0 KiB
Groovy
apply plugin: 'maven-publish'
|
|
apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin'
|
|
|
|
if (!hasProperty('releaseType')) {
|
|
WPILibVersion {
|
|
releaseType = 'dev'
|
|
}
|
|
}
|
|
|
|
def pubVersion = ''
|
|
if (project.hasProperty("publishVersion")) {
|
|
pubVersion = project.publishVersion
|
|
} else {
|
|
pubVersion = WPILibVersion.version
|
|
}
|
|
|
|
def baseArtifactId = 'wpilibc'
|
|
def artifactGroupId = 'edu.wpi.first.wpilibc'
|
|
|
|
def outputsFolder = file("$project.buildDir/outputs")
|
|
|
|
task cppSourcesZip(type: Zip) {
|
|
destinationDir = outputsFolder
|
|
baseName = 'wpilibc'
|
|
classifier = "sources"
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
|
|
from('src/main/native/cpp') {
|
|
into '/'
|
|
}
|
|
}
|
|
|
|
task cppHeadersZip(type: Zip) {
|
|
destinationDir = outputsFolder
|
|
baseName = 'wpilibc'
|
|
classifier = "headers"
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
|
|
from('src/main/native/include') {
|
|
into '/'
|
|
}
|
|
}
|
|
|
|
build.dependsOn cppHeadersZip
|
|
build.dependsOn cppSourcesZip
|
|
|
|
def linkFile = project.file("${buildDir}/libwpi.so")
|
|
|
|
task linkScriptZip(type: Zip) {
|
|
destinationDir = outputsFolder
|
|
baseName = 'wpilibclinkscript-classifier'
|
|
classifier = "linuxathena"
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
from (linkFile) {
|
|
into '/linux/athena/shared'
|
|
}
|
|
}
|
|
|
|
build.dependsOn linkScriptZip
|
|
|
|
model {
|
|
publishing {
|
|
def wpilibCTaskList = createComponentZipTasks($.components, 'wpilibc', 'zipcpp', Zip, project, includeStandardZipFormat)
|
|
def allTask
|
|
if (!project.hasProperty('jenkinsBuild')) {
|
|
allTask = createAllCombined(wpilibCTaskList, 'wpilibc', 'zipcpp', Zip, project)
|
|
}
|
|
|
|
$.components.each {
|
|
if (it in NativeLibrarySpec && it.name == 'wpilibc') {
|
|
def libSpec = it
|
|
tasks.create('generateWpilibLinkScript', Task) {
|
|
build.dependsOn it
|
|
linkScriptZip.dependsOn it
|
|
libSpec.binaries.each {
|
|
if (getClassifier(it) == 'linuxathena' && it in SharedLibraryBinarySpec) {
|
|
dependsOn it.buildTask
|
|
}
|
|
}
|
|
|
|
outputs.file linkFile
|
|
outputs.upToDateWhen { false }
|
|
|
|
doLast {
|
|
def libs = []
|
|
libSpec.binaries.each {
|
|
if (getClassifier(it) == 'linuxathena' && it in SharedLibraryBinarySpec) {
|
|
it.libs.each {
|
|
it.linkFiles.each {
|
|
libs.add it.name
|
|
}
|
|
|
|
}
|
|
libs.add it.sharedLibraryFile.name
|
|
}
|
|
}
|
|
|
|
linkFile.withWriter { out ->
|
|
out.println '/* GNU ld script */'
|
|
out.println 'OUTPUT_FORMAT(elf32-littlearm)'
|
|
out.print 'GROUP ( AS_NEEDED ( '
|
|
libs.each {
|
|
out.print it
|
|
out.print ' '
|
|
}
|
|
out.println ') )'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
publications {
|
|
cpp(MavenPublication) {
|
|
wpilibCTaskList.each {
|
|
artifact it
|
|
}
|
|
if (!project.hasProperty('jenkinsBuild')) {
|
|
artifact allTask
|
|
}
|
|
artifact cppHeadersZip
|
|
artifact cppSourcesZip
|
|
|
|
artifactId = baseArtifactId
|
|
groupId artifactGroupId
|
|
version pubVersion
|
|
}
|
|
linkscripts(MavenPublication) {
|
|
artifact linkScriptZip
|
|
|
|
artifactId = "${baseArtifactId}-linkscripts"
|
|
groupId artifactGroupId
|
|
version pubVersion
|
|
}
|
|
}
|
|
}
|
|
}
|