import com.hubspot.jinjava.Jinjava; import com.hubspot.jinjava.JinjavaConfig; ext { useJava = true useCpp = true baseId = 'wpimath' groupId = 'edu.wpi.first.wpimath' nativeName = 'wpimath' devMain = 'edu.wpi.first.math.DevMain' splitSetup = { it.sources { drakeCpp(CppSourceSet) { source { srcDirs 'src/main/native/thirdparty/drake/src' include '**/*.cpp' } exportedHeaders { srcDirs 'src/main/native/thirdparty/drake/include', 'src/main/native/thirdparty/eigen/include', 'src/main/native/thirdparty/gcem/include' } } } } } apply from: "${rootDir}/shared/jni/setupBuild.gradle" cppHeadersZip { from('src/main/native/thirdparty/drake/include') { into '/' } from('src/main/native/thirdparty/eigen/include') { into '/' } from('src/main/native/thirdparty/gcem/include') { into '/' } } model { components { all { it.sources.each { it.exportedHeaders { srcDirs 'src/main/native/include', 'src/main/native/thirdparty/drake/include', 'src/main/native/thirdparty/eigen/include', 'src/main/native/thirdparty/gcem/include' } } } } } dependencies { api "org.ejml:ejml-simple:0.41" api "com.fasterxml.jackson.core:jackson-annotations:2.12.4" api "com.fasterxml.jackson.core:jackson-core:2.12.4" api "com.fasterxml.jackson.core:jackson-databind:2.12.4" } def wpilibNumberFileInput = file("src/generate/GenericNumber.java.jinja") def natFileInput = file("src/generate/Nat.java.jinja") def wpilibNumberFileOutputDir = file("$buildDir/generated/java/edu/wpi/first/math/numbers") def wpilibNatFileOutput = file("$buildDir/generated/java/edu/wpi/first/math/Nat.java") def maxNum = 20 task generateNumbers() { description = "Generates generic number classes from template" group = "WPILib" inputs.file wpilibNumberFileInput outputs.dir wpilibNumberFileOutputDir doLast { if(wpilibNumberFileOutputDir.exists()) { wpilibNumberFileOutputDir.delete() } wpilibNumberFileOutputDir.mkdirs() def config = new JinjavaConfig() def jinjava = new Jinjava(config) def template = wpilibNumberFileInput.text for(i in 0..maxNum) { def outputFile = new File(wpilibNumberFileOutputDir, "N${i}.java") def replacements = new HashMap() replacements.put("num", i) def output = jinjava.render(template, replacements) outputFile.write(output) } } } task generateNat() { description = "Generates Nat.java" group = "WPILib" inputs.file natFileInput outputs.file wpilibNatFileOutput dependsOn generateNumbers doLast { if(wpilibNatFileOutput.exists()) { wpilibNatFileOutput.delete() } def config = new JinjavaConfig() def jinjava = new Jinjava(config) def template = natFileInput.text def replacements = new HashMap() replacements.put("nums", 0..maxNum) def output = jinjava.render(template, replacements) wpilibNatFileOutput.write(output) } } sourceSets.main.java.srcDir "${buildDir}/generated/java" compileJava.dependsOn generateNumbers compileJava.dependsOn generateNat