| 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 |
| } |
| } |
| } |
| } |