Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 1 | import com.hubspot.jinjava.Jinjava; |
| 2 | import com.hubspot.jinjava.JinjavaConfig; |
| 3 | |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 4 | ext { |
| 5 | useJava = true |
| 6 | useCpp = true |
| 7 | baseId = 'wpimath' |
| 8 | groupId = 'edu.wpi.first.wpimath' |
| 9 | |
| 10 | nativeName = 'wpimath' |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 11 | devMain = 'edu.wpi.first.math.DevMain' |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 12 | } |
| 13 | |
| 14 | apply from: "${rootDir}/shared/jni/setupBuild.gradle" |
| 15 | |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 16 | cppHeadersZip { |
| 17 | from('src/main/native/eigeninclude') { |
| 18 | into '/' |
| 19 | } |
| 20 | } |
| 21 | |
| 22 | model { |
| 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 | |
| 34 | dependencies { |
Austin Schuh | 75263e3 | 2022-02-22 18:05:32 -0800 | [diff] [blame] | 35 | 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 Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 39 | } |
| 40 | |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 41 | def wpilibNumberFileInput = file("src/generate/GenericNumber.java.jinja") |
| 42 | def natFileInput = file("src/generate/Nat.java.jinja") |
| 43 | def wpilibNumberFileOutputDir = file("$buildDir/generated/java/edu/wpi/first/math/numbers") |
| 44 | def wpilibNatFileOutput = file("$buildDir/generated/java/edu/wpi/first/math/Nat.java") |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 45 | def maxNum = 20 |
| 46 | |
| 47 | task 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 Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 60 | def config = new JinjavaConfig() |
| 61 | def jinjava = new Jinjava(config) |
| 62 | |
| 63 | def template = wpilibNumberFileInput.text |
| 64 | |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 65 | for(i in 0..maxNum) { |
| 66 | def outputFile = new File(wpilibNumberFileOutputDir, "N${i}.java") |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 67 | def replacements = new HashMap<String,?>() |
| 68 | replacements.put("num", i) |
| 69 | def output = jinjava.render(template, replacements) |
| 70 | outputFile.write(output) |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 71 | } |
| 72 | } |
| 73 | } |
| 74 | |
| 75 | task generateNat() { |
| 76 | description = "Generates Nat.java" |
| 77 | group = "WPILib" |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 78 | inputs.file natFileInput |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 79 | outputs.file wpilibNatFileOutput |
| 80 | dependsOn generateNumbers |
| 81 | |
| 82 | doLast { |
| 83 | if(wpilibNatFileOutput.exists()) { |
| 84 | wpilibNatFileOutput.delete() |
| 85 | } |
| 86 | |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 87 | def config = new JinjavaConfig() |
| 88 | def jinjava = new Jinjava(config) |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 89 | |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 90 | def template = natFileInput.text |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 91 | |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 92 | def replacements = new HashMap<String,?>() |
| 93 | replacements.put("nums", 0..maxNum) |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 94 | |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 95 | def output = jinjava.render(template, replacements) |
| 96 | wpilibNatFileOutput.write(output) |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 97 | } |
| 98 | } |
| 99 | |
| 100 | sourceSets.main.java.srcDir "${buildDir}/generated/java" |
| 101 | compileJava.dependsOn generateNumbers |
| 102 | compileJava.dependsOn generateNat |