Rename our allwpilib (which is now 2020) to not have 2019 in the name
Change-Id: I3c07f85ed32ab8b97db765a9b43f2a6ce7da964a
diff --git a/shared/config.gradle b/shared/config.gradle
new file mode 100644
index 0000000..7952018
--- /dev/null
+++ b/shared/config.gradle
@@ -0,0 +1,144 @@
+import org.gradle.internal.os.OperatingSystem
+
+nativeUtils.addWpiNativeUtils()
+nativeUtils.withRoboRIO()
+nativeUtils.withRaspbian()
+nativeUtils.withBionic()
+nativeUtils {
+ wpi {
+ configureDependencies {
+ wpiVersion = "-1"
+ niLibVersion = "2020.10.1"
+ opencvVersion = "3.4.7-2"
+ googleTestVersion = "1.9.0-4-437e100-1"
+ imguiVersion = "1.72b-2"
+ }
+ }
+}
+
+nativeUtils.wpi.addWarnings()
+nativeUtils.wpi.addWarningsAsErrors()
+
+nativeUtils.setSinglePrintPerPlatform()
+
+model {
+ components {
+ all {
+ nativeUtils.useAllPlatforms(it)
+ }
+ }
+ binaries {
+ withType(NativeBinarySpec).all {
+ nativeUtils.usePlatformArguments(it)
+ }
+ }
+}
+
+ext.appendDebugPathToBinaries = { binaries->
+ binaries.withType(StaticLibraryBinarySpec) {
+ if (it.buildType.name.contains('debug')) {
+ def staticFileDir = it.staticLibraryFile.parentFile
+ def staticFileName = it.staticLibraryFile.name
+ def staticFileExtension = staticFileName.substring(staticFileName.lastIndexOf('.'))
+ staticFileName = staticFileName.substring(0, staticFileName.lastIndexOf('.'))
+ staticFileName = staticFileName + 'd' + staticFileExtension
+ def newStaticFile = new File(staticFileDir, staticFileName)
+ it.staticLibraryFile = newStaticFile
+ }
+ }
+ binaries.withType(SharedLibraryBinarySpec) {
+ if (it.buildType.name.contains('debug')) {
+ def sharedFileDir = it.sharedLibraryFile.parentFile
+ def sharedFileName = it.sharedLibraryFile.name
+ def sharedFileExtension = sharedFileName.substring(sharedFileName.lastIndexOf('.'))
+ sharedFileName = sharedFileName.substring(0, sharedFileName.lastIndexOf('.'))
+ sharedFileName = sharedFileName + 'd' + sharedFileExtension
+ def newSharedFile = new File(sharedFileDir, sharedFileName)
+
+ def sharedLinkFileDir = it.sharedLibraryLinkFile.parentFile
+ def sharedLinkFileName = it.sharedLibraryLinkFile.name
+ def sharedLinkFileExtension = sharedLinkFileName.substring(sharedLinkFileName.lastIndexOf('.'))
+ sharedLinkFileName = sharedLinkFileName.substring(0, sharedLinkFileName.lastIndexOf('.'))
+ sharedLinkFileName = sharedLinkFileName + 'd' + sharedLinkFileExtension
+ def newLinkFile = new File(sharedLinkFileDir, sharedLinkFileName)
+
+ it.sharedLibraryLinkFile = newLinkFile
+ it.sharedLibraryFile = newSharedFile
+ }
+ }
+}
+
+ext.createComponentZipTasks = { components, names, base, type, project, func ->
+ def stringNames = names.collect {it.toString()}
+ def configMap = [:]
+ components.each {
+ if (it in NativeLibrarySpec && stringNames.contains(it.name)) {
+ it.binaries.each {
+ if (!it.buildable) return
+ def target = nativeUtils.getPublishClassifier(it)
+ if (configMap.containsKey(target)) {
+ configMap.get(target).add(it)
+ } else {
+ configMap.put(target, [])
+ configMap.get(target).add(it)
+ }
+ }
+ }
+ }
+ def taskList = []
+ def outputsFolder = file("$project.buildDir/outputs")
+ configMap.each { key, value ->
+ def task = project.tasks.create(base + "-${key}", type) {
+ description = 'Creates component archive for platform ' + key
+ destinationDirectory = outputsFolder
+ classifier = key
+ archiveBaseName = '_M_' + base
+ duplicatesStrategy = 'exclude'
+
+ from(licenseFile) {
+ into '/'
+ }
+
+ func(it, value)
+ }
+ taskList.add(task)
+
+ project.build.dependsOn task
+
+ project.artifacts {
+ task
+ }
+ addTaskToCopyAllOutputs(task)
+ }
+ return taskList
+}
+
+ext.includeStandardZipFormat = { task, value ->
+ value.each { binary ->
+ if (binary.buildable) {
+ if (binary instanceof SharedLibraryBinarySpec) {
+ task.dependsOn binary.tasks.link
+ task.from(new File(binary.sharedLibraryFile.absolutePath + ".debug")) {
+ 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'
+ }
+ task.from(binary.sharedLibraryFile) {
+ into nativeUtils.getPlatformPath(binary) + '/shared'
+ }
+ task.from(binary.sharedLibraryLinkFile) {
+ into nativeUtils.getPlatformPath(binary) + '/shared'
+ }
+ } else if (binary instanceof StaticLibraryBinarySpec) {
+ task.dependsOn binary.tasks.createStaticLib
+ task.from(binary.staticLibraryFile) {
+ into nativeUtils.getPlatformPath(binary) + '/static'
+ }
+ }
+ }
+ }
+}