blob: c31f04c764d66648b8c3c9f6c846472dca2be38a [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'
Austin Schuh1e69f942020-11-14 15:06:14 -080012}
13
14apply from: "${rootDir}/shared/jni/setupBuild.gradle"
15
Austin Schuh1e69f942020-11-14 15:06:14 -080016cppHeadersZip {
17 from('src/main/native/eigeninclude') {
18 into '/'
19 }
20}
21
22model {
23 components {
24 all {
25 it.sources.each {
26 it.exportedHeaders {
27 srcDirs 'src/main/native/include', 'src/main/native/eigeninclude'
28 }
29 }
30 }
31 }
32}
33
34dependencies {
Austin Schuh75263e32022-02-22 18:05:32 -080035 api "org.ejml:ejml-simple:0.41"
36 api "com.fasterxml.jackson.core:jackson-annotations:2.12.4"
37 api "com.fasterxml.jackson.core:jackson-core:2.12.4"
38 api "com.fasterxml.jackson.core:jackson-databind:2.12.4"
Austin Schuh1e69f942020-11-14 15:06:14 -080039}
40
Austin Schuh812d0d12021-11-04 20:16:48 -070041def wpilibNumberFileInput = file("src/generate/GenericNumber.java.jinja")
42def natFileInput = file("src/generate/Nat.java.jinja")
43def wpilibNumberFileOutputDir = file("$buildDir/generated/java/edu/wpi/first/math/numbers")
44def wpilibNatFileOutput = file("$buildDir/generated/java/edu/wpi/first/math/Nat.java")
Austin Schuh1e69f942020-11-14 15:06:14 -080045def maxNum = 20
46
47task generateNumbers() {
48 description = "Generates generic number classes from template"
49 group = "WPILib"
50
51 inputs.file wpilibNumberFileInput
52 outputs.dir wpilibNumberFileOutputDir
53
54 doLast {
55 if(wpilibNumberFileOutputDir.exists()) {
56 wpilibNumberFileOutputDir.delete()
57 }
58 wpilibNumberFileOutputDir.mkdirs()
59
Austin Schuh812d0d12021-11-04 20:16:48 -070060 def config = new JinjavaConfig()
61 def jinjava = new Jinjava(config)
62
63 def template = wpilibNumberFileInput.text
64
Austin Schuh1e69f942020-11-14 15:06:14 -080065 for(i in 0..maxNum) {
66 def outputFile = new File(wpilibNumberFileOutputDir, "N${i}.java")
Austin Schuh812d0d12021-11-04 20:16:48 -070067 def replacements = new HashMap<String,?>()
68 replacements.put("num", i)
69 def output = jinjava.render(template, replacements)
70 outputFile.write(output)
Austin Schuh1e69f942020-11-14 15:06:14 -080071 }
72 }
73}
74
75task generateNat() {
76 description = "Generates Nat.java"
77 group = "WPILib"
Austin Schuh812d0d12021-11-04 20:16:48 -070078 inputs.file natFileInput
Austin Schuh1e69f942020-11-14 15:06:14 -080079 outputs.file wpilibNatFileOutput
80 dependsOn generateNumbers
81
82 doLast {
83 if(wpilibNatFileOutput.exists()) {
84 wpilibNatFileOutput.delete()
85 }
86
Austin Schuh812d0d12021-11-04 20:16:48 -070087 def config = new JinjavaConfig()
88 def jinjava = new Jinjava(config)
Austin Schuh1e69f942020-11-14 15:06:14 -080089
Austin Schuh812d0d12021-11-04 20:16:48 -070090 def template = natFileInput.text
Austin Schuh1e69f942020-11-14 15:06:14 -080091
Austin Schuh812d0d12021-11-04 20:16:48 -070092 def replacements = new HashMap<String,?>()
93 replacements.put("nums", 0..maxNum)
Austin Schuh1e69f942020-11-14 15:06:14 -080094
Austin Schuh812d0d12021-11-04 20:16:48 -070095 def output = jinjava.render(template, replacements)
96 wpilibNatFileOutput.write(output)
Austin Schuh1e69f942020-11-14 15:06:14 -080097 }
98}
99
100sourceSets.main.java.srcDir "${buildDir}/generated/java"
101compileJava.dependsOn generateNumbers
102compileJava.dependsOn generateNat