Files
allwpilib/shared/jni/publish.gradle

130 lines
3.7 KiB
Groovy
Raw Normal View History

import java.security.MessageDigest
2018-04-29 13:29:07 -07:00
apply plugin: 'maven-publish'
def outputsFolder = file("$buildDir/outputs")
def baseArtifactId = nativeName
2025-11-07 20:00:38 -05:00
def artifactGroupId = "org.wpilib.${nativeName}"
def zipBaseName = makeZipBaseName(artifactGroupId, "${baseArtifactId}-cpp")
ext.zipBaseName = zipBaseName
def jniCvStaticBaseName = makeZipBaseName(artifactGroupId, "${nativeName}-jnicvstatic")
2018-04-29 13:29:07 -07:00
def licenseFile = file("$rootDir/license.md")
2018-04-29 13:29:07 -07:00
task cppSourcesZip(type: Zip) {
2019-11-12 17:14:04 -08:00
destinationDirectory = outputsFolder
archiveBaseName = zipBaseName
2023-05-12 21:27:31 -07:00
archiveClassifier = "sources"
2018-04-29 13:29:07 -07:00
duplicatesStrategy = 'exclude'
from(licenseFile) {
into '/'
}
from('src/main/native/cpp') {
into '/'
}
model {
components {
it.all {
if (it in getJniSpecClass()) {
it.jniHeaderLocations.each {
dependsOn it.key
from(it.value) {
into '/jni'
}
}
}
}
}
}
}
task cppHeadersZip(type: Zip) {
2019-11-12 17:14:04 -08:00
destinationDirectory = outputsFolder
archiveBaseName = zipBaseName
2023-05-12 21:27:31 -07:00
archiveClassifier = "headers"
2018-04-29 13:29:07 -07:00
from(licenseFile) {
into '/'
}
ext.includeDirs = [
project.file('src/main/native/include')
]
ext.includeDirs.each {
from(it) {
into '/'
}
2018-04-29 13:29:07 -07:00
}
}
artifacts {
tasks.named("assemble") {
dependsOn(cppHeadersZip)
dependsOn(cppSourcesZip)
}
2018-04-29 13:29:07 -07:00
}
addTaskToCopyAllOutputs(cppSourcesZip)
addTaskToCopyAllOutputs(cppHeadersZip)
model {
publishing {
def taskList = createComponentZipTasks($.components, [
nativeName,
"${nativeName}JNIShared"
], zipBaseName, Zip, project, includeStandardZipFormat)
2018-04-29 13:29:07 -07:00
publications {
cpp(MavenPublication) {
taskList.each {
artifact it
}
artifact cppHeadersZip
artifact cppSourcesZip
artifactId = "${baseArtifactId}-cpp"
groupId = artifactGroupId
version = wpilibVersioning.version.get()
2018-04-29 13:29:07 -07:00
}
}
if (project.hasProperty('cvStaticBuild') && project.getProperty('cvStaticBuild') == true) {
def jniCvTaskList = createComponentZipTasks($.components, ["${nativeName}JNICvStatic"], jniCvStaticBaseName, Zip, project, { task, value ->
value.each { binary ->
if (binary.buildable) {
if (binary instanceof SharedLibraryBinarySpec) {
task.dependsOn binary.tasks.link
task.inputs.file(binary.sharedLibraryFile)
task.from(binary.sharedLibraryFile) {
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'
}
}
}
}
})
publications {
jniCvStatic(MavenPublication) {
jniCvTaskList.each {
artifact it
}
artifactId = "${baseArtifactId}-jnicvstatic"
groupId = artifactGroupId
version = wpilibVersioning.version.get()
}
}
}
2018-04-29 13:29:07 -07:00
}
}