blob: 9e7c3a8d0875bf0e9d8d655a61488d9ef5196d66 [file] [log] [blame]
Austin Schuh812d0d12021-11-04 20:16:48 -07001import com.hubspot.jinjava.Jinjava;
2import com.hubspot.jinjava.JinjavaConfig;
3
Austin Schuh1e69f942020-11-14 15:06:14 -08004ext {
5 useJava = true
6 useCpp = true
7 baseId = 'wpimath'
8 groupId = 'edu.wpi.first.wpimath'
9
10 nativeName = 'wpimath'
Austin Schuh812d0d12021-11-04 20:16:48 -070011 devMain = 'edu.wpi.first.math.DevMain'
James Kuszmaulcf324122023-01-14 14:07:17 -080012
13 splitSetup = {
14 it.sources {
15 drakeCpp(CppSourceSet) {
16 source {
17 srcDirs 'src/main/native/thirdparty/drake/src'
18 include '**/*.cpp'
19 }
20 exportedHeaders {
21 srcDirs 'src/main/native/thirdparty/drake/include',
22 'src/main/native/thirdparty/eigen/include',
23 'src/main/native/thirdparty/gcem/include'
24 }
25 }
26 }
27 }
Austin Schuh1e69f942020-11-14 15:06:14 -080028}
29
30apply from: "${rootDir}/shared/jni/setupBuild.gradle"
31
Austin Schuh1e69f942020-11-14 15:06:14 -080032cppHeadersZip {
James Kuszmaulcf324122023-01-14 14:07:17 -080033 from('src/main/native/thirdparty/drake/include') {
34 into '/'
35 }
36 from('src/main/native/thirdparty/eigen/include') {
37 into '/'
38 }
39 from('src/main/native/thirdparty/gcem/include') {
Austin Schuh1e69f942020-11-14 15:06:14 -080040 into '/'
41 }
42}
43
44model {
45 components {
46 all {
47 it.sources.each {
48 it.exportedHeaders {
James Kuszmaulcf324122023-01-14 14:07:17 -080049 srcDirs 'src/main/native/include',
50 'src/main/native/thirdparty/drake/include',
51 'src/main/native/thirdparty/eigen/include',
52 'src/main/native/thirdparty/gcem/include'
Austin Schuh1e69f942020-11-14 15:06:14 -080053 }
54 }
55 }
56 }
57}
58
59dependencies {
Austin Schuh75263e32022-02-22 18:05:32 -080060 api "org.ejml:ejml-simple:0.41"
61 api "com.fasterxml.jackson.core:jackson-annotations:2.12.4"
62 api "com.fasterxml.jackson.core:jackson-core:2.12.4"
63 api "com.fasterxml.jackson.core:jackson-databind:2.12.4"
Austin Schuh1e69f942020-11-14 15:06:14 -080064}
65
Austin Schuh812d0d12021-11-04 20:16:48 -070066def wpilibNumberFileInput = file("src/generate/GenericNumber.java.jinja")
67def natFileInput = file("src/generate/Nat.java.jinja")
68def wpilibNumberFileOutputDir = file("$buildDir/generated/java/edu/wpi/first/math/numbers")
69def wpilibNatFileOutput = file("$buildDir/generated/java/edu/wpi/first/math/Nat.java")
Austin Schuh1e69f942020-11-14 15:06:14 -080070def maxNum = 20
71
72task generateNumbers() {
73 description = "Generates generic number classes from template"
74 group = "WPILib"
75
76 inputs.file wpilibNumberFileInput
77 outputs.dir wpilibNumberFileOutputDir
78
79 doLast {
80 if(wpilibNumberFileOutputDir.exists()) {
81 wpilibNumberFileOutputDir.delete()
82 }
83 wpilibNumberFileOutputDir.mkdirs()
84
Austin Schuh812d0d12021-11-04 20:16:48 -070085 def config = new JinjavaConfig()
86 def jinjava = new Jinjava(config)
87
88 def template = wpilibNumberFileInput.text
89
Austin Schuh1e69f942020-11-14 15:06:14 -080090 for(i in 0..maxNum) {
91 def outputFile = new File(wpilibNumberFileOutputDir, "N${i}.java")
Austin Schuh812d0d12021-11-04 20:16:48 -070092 def replacements = new HashMap<String,?>()
93 replacements.put("num", i)
94 def output = jinjava.render(template, replacements)
95 outputFile.write(output)
Austin Schuh1e69f942020-11-14 15:06:14 -080096 }
97 }
98}
99
100task generateNat() {
101 description = "Generates Nat.java"
102 group = "WPILib"
Austin Schuh812d0d12021-11-04 20:16:48 -0700103 inputs.file natFileInput
Austin Schuh1e69f942020-11-14 15:06:14 -0800104 outputs.file wpilibNatFileOutput
105 dependsOn generateNumbers
106
107 doLast {
108 if(wpilibNatFileOutput.exists()) {
109 wpilibNatFileOutput.delete()
110 }
111
Austin Schuh812d0d12021-11-04 20:16:48 -0700112 def config = new JinjavaConfig()
113 def jinjava = new Jinjava(config)
Austin Schuh1e69f942020-11-14 15:06:14 -0800114
Austin Schuh812d0d12021-11-04 20:16:48 -0700115 def template = natFileInput.text
Austin Schuh1e69f942020-11-14 15:06:14 -0800116
Austin Schuh812d0d12021-11-04 20:16:48 -0700117 def replacements = new HashMap<String,?>()
118 replacements.put("nums", 0..maxNum)
Austin Schuh1e69f942020-11-14 15:06:14 -0800119
Austin Schuh812d0d12021-11-04 20:16:48 -0700120 def output = jinjava.render(template, replacements)
121 wpilibNatFileOutput.write(output)
Austin Schuh1e69f942020-11-14 15:06:14 -0800122 }
123}
124
125sourceSets.main.java.srcDir "${buildDir}/generated/java"
126compileJava.dependsOn generateNumbers
127compileJava.dependsOn generateNat