blob: c31f04c764d66648b8c3c9f6c846472dca2be38a [file] [log] [blame]
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'
}
apply from: "${rootDir}/shared/jni/setupBuild.gradle"
cppHeadersZip {
from('src/main/native/eigeninclude') {
into '/'
}
}
model {
components {
all {
it.sources.each {
it.exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/eigeninclude'
}
}
}
}
}
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<String,?>()
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<String,?>()
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