Files
allwpilib/msvcruntime/build.gradle
Thad House cd8f4bfb1f [build] Package up msvc runtime into maven artifact (#2913)
This will make is so we can get the right artifact to the installer, and we can do it automatically and its guaranteed to match what built the artifacts.
2020-12-05 20:14:03 -08:00

92 lines
2.5 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 x86Folder = null
file("$runtimeLocation\\x86").eachFile {
if (it.name.endsWith('.CRT')) {
x86Folder = it
}
}
def x64Folder = null
file("$runtimeLocation\\x64").eachFile {
if (it.name.endsWith('.CRT')) {
x64Folder = it
}
}
def x86ZipTask = tasks.create('x86RuntimeZip', Zip) {
destinationDirectory = outputsFolder
archiveBaseName = zipBaseName
classifier = 'x86'
from x86Folder
}
def x64ZipTask = tasks.create('x64RuntimeZip', Zip) {
destinationDirectory = outputsFolder
archiveBaseName = zipBaseName
classifier = 'x64'
from x64Folder
}
addTaskToCopyAllOutputs(x86ZipTask)
addTaskToCopyAllOutputs(x64ZipTask)
build.dependsOn x86ZipTask
build.dependsOn x64ZipTask
publishing {
publications {
runtime(MavenPublication) {
artifact x86ZipTask
artifact x64ZipTask
artifactId = "${baseArtifactId}"
groupId artifactGroupId
version wpilibVersioning.version.get()
}
}
}
}
}