blob: 017309727e7b6d86bf0948c9666de305623358d0 [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001import org.gradle.internal.os.OperatingSystem
2
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08003nativeUtils.addWpiNativeUtils()
4nativeUtils.withRoboRIO()
5nativeUtils.withRaspbian()
6nativeUtils.withBionic()
7nativeUtils {
8 wpi {
9 configureDependencies {
10 wpiVersion = "-1"
11 niLibVersion = "2020.5.1"
12 opencvVersion = "3.4.7-2"
13 googleTestVersion = "1.9.0-3-437e100"
14 imguiVersion = "1.72b-2"
Brian Silverman41cdd3e2019-01-19 19:48:58 -080015 }
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080016 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080017}
18
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080019nativeUtils.wpi.addWarnings()
20nativeUtils.wpi.addWarningsAsErrors()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080021
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080022nativeUtils.setSinglePrintPerPlatform()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080023
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080024model {
25 components {
26 all {
27 nativeUtils.useAllPlatforms(it)
Brian Silverman41cdd3e2019-01-19 19:48:58 -080028 }
29 }
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080030 binaries {
31 withType(NativeBinarySpec).all {
32 nativeUtils.usePlatformArguments(it)
Brian Silverman41cdd3e2019-01-19 19:48:58 -080033 }
34 }
35}
36
Brian Silverman41cdd3e2019-01-19 19:48:58 -080037ext.appendDebugPathToBinaries = { binaries->
38 binaries.withType(StaticLibraryBinarySpec) {
39 if (it.buildType.name.contains('debug')) {
40 def staticFileDir = it.staticLibraryFile.parentFile
41 def staticFileName = it.staticLibraryFile.name
42 def staticFileExtension = staticFileName.substring(staticFileName.lastIndexOf('.'))
43 staticFileName = staticFileName.substring(0, staticFileName.lastIndexOf('.'))
44 staticFileName = staticFileName + 'd' + staticFileExtension
45 def newStaticFile = new File(staticFileDir, staticFileName)
46 it.staticLibraryFile = newStaticFile
47 }
48 }
49 binaries.withType(SharedLibraryBinarySpec) {
50 if (it.buildType.name.contains('debug')) {
51 def sharedFileDir = it.sharedLibraryFile.parentFile
52 def sharedFileName = it.sharedLibraryFile.name
53 def sharedFileExtension = sharedFileName.substring(sharedFileName.lastIndexOf('.'))
54 sharedFileName = sharedFileName.substring(0, sharedFileName.lastIndexOf('.'))
55 sharedFileName = sharedFileName + 'd' + sharedFileExtension
56 def newSharedFile = new File(sharedFileDir, sharedFileName)
57
58 def sharedLinkFileDir = it.sharedLibraryLinkFile.parentFile
59 def sharedLinkFileName = it.sharedLibraryLinkFile.name
60 def sharedLinkFileExtension = sharedLinkFileName.substring(sharedLinkFileName.lastIndexOf('.'))
61 sharedLinkFileName = sharedLinkFileName.substring(0, sharedLinkFileName.lastIndexOf('.'))
62 sharedLinkFileName = sharedLinkFileName + 'd' + sharedLinkFileExtension
63 def newLinkFile = new File(sharedLinkFileDir, sharedLinkFileName)
64
65 it.sharedLibraryLinkFile = newLinkFile
66 it.sharedLibraryFile = newSharedFile
67 }
68 }
69}
70
71ext.createComponentZipTasks = { components, names, base, type, project, func ->
72 def stringNames = names.collect {it.toString()}
73 def configMap = [:]
74 components.each {
75 if (it in NativeLibrarySpec && stringNames.contains(it.name)) {
76 it.binaries.each {
77 if (!it.buildable) return
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080078 def target = nativeUtils.getPublishClassifier(it)
Brian Silverman41cdd3e2019-01-19 19:48:58 -080079 if (configMap.containsKey(target)) {
80 configMap.get(target).add(it)
81 } else {
82 configMap.put(target, [])
83 configMap.get(target).add(it)
84 }
85 }
86 }
87 }
88 def taskList = []
89 def outputsFolder = file("$project.buildDir/outputs")
90 configMap.each { key, value ->
91 def task = project.tasks.create(base + "-${key}", type) {
92 description = 'Creates component archive for platform ' + key
93 destinationDir = outputsFolder
94 classifier = key
95 baseName = '_M_' + base
96 duplicatesStrategy = 'exclude'
97
98 from(licenseFile) {
99 into '/'
100 }
101
102 func(it, value)
103 }
104 taskList.add(task)
105
106 project.build.dependsOn task
107
108 project.artifacts {
109 task
110 }
111 addTaskToCopyAllOutputs(task)
112 }
113 return taskList
114}
115
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800116ext.includeStandardZipFormat = { task, value ->
117 value.each { binary ->
118 if (binary.buildable) {
119 if (binary instanceof SharedLibraryBinarySpec) {
120 task.dependsOn binary.tasks.link
121 task.from(new File(binary.sharedLibraryFile.absolutePath + ".debug")) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800122 into nativeUtils.getPlatformPath(binary) + '/shared'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800123 }
124 def sharedPath = binary.sharedLibraryFile.absolutePath
125 sharedPath = sharedPath.substring(0, sharedPath.length() - 4)
126
127 task.from(new File(sharedPath + '.pdb')) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800128 into nativeUtils.getPlatformPath(binary) + '/shared'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800129 }
130 task.from(binary.sharedLibraryFile) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800131 into nativeUtils.getPlatformPath(binary) + '/shared'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800132 }
133 task.from(binary.sharedLibraryLinkFile) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800134 into nativeUtils.getPlatformPath(binary) + '/shared'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800135 }
136 } else if (binary instanceof StaticLibraryBinarySpec) {
137 task.dependsOn binary.tasks.createStaticLib
138 task.from(binary.staticLibraryFile) {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800139 into nativeUtils.getPlatformPath(binary) + '/static'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800140 }
141 }
142 }
143 }
144}