mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
73 lines
1.9 KiB
Groovy
73 lines
1.9 KiB
Groovy
import org.gradle.nativeplatform.toolchain.internal.msvcpp.VisualStudioLocator
|
|
import org.gradle.internal.os.OperatingSystem
|
|
import org.gradle.util.VersionNumber
|
|
|
|
plugins {
|
|
id 'cpp'
|
|
id 'maven-publish'
|
|
}
|
|
|
|
if (OperatingSystem.current().isWindows()) {
|
|
def outputsFolder = file("$buildDir/outputs")
|
|
|
|
def baseArtifactId = 'runtime'
|
|
def artifactGroupId = "edu.wpi.first.msvc"
|
|
def zipBaseName = "_GROUP_edu_wpi_first_msvc_ID_runtime_CLS"
|
|
|
|
def vsLocator = gradle.services.get(VisualStudioLocator)
|
|
|
|
def vsLocation = vsLocator.locateAllComponents().first()
|
|
|
|
def visualCppVersion = vsLocation.visualCpp.version
|
|
|
|
def vsDirectory = vsLocation.visualStudioDir
|
|
|
|
def runtimeLocation = file("$vsDirectory\\VC\\Redist\\MSVC")
|
|
|
|
def runtimeVerNumber = null
|
|
|
|
runtimeLocation.eachFile {
|
|
def verNumber = VersionNumber.parse(it.name)
|
|
if (verNumber.major == visualCppVersion.major && verNumber.minor == visualCppVersion.minor) {
|
|
runtimeVerNumber = verNumber
|
|
}
|
|
}
|
|
|
|
if (runtimeVerNumber != null) {
|
|
runtimeLocation = file("$runtimeLocation\\$runtimeVerNumber")
|
|
|
|
def x64Folder = null
|
|
|
|
file("$runtimeLocation\\x64").eachFile {
|
|
if (it.name.endsWith('.CRT')) {
|
|
x64Folder = it
|
|
}
|
|
}
|
|
|
|
def x64ZipTask = tasks.create('x64RuntimeZip', Zip) {
|
|
destinationDirectory = outputsFolder
|
|
archiveBaseName = zipBaseName
|
|
classifier = 'x64'
|
|
|
|
from x64Folder
|
|
}
|
|
|
|
addTaskToCopyAllOutputs(x64ZipTask)
|
|
|
|
build.dependsOn x64ZipTask
|
|
|
|
publishing {
|
|
publications {
|
|
|
|
runtime(MavenPublication) {
|
|
artifact x64ZipTask
|
|
|
|
artifactId = "${baseArtifactId}"
|
|
groupId artifactGroupId
|
|
version wpilibVersioning.version.get()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|