Add EJML dependency to wpiutil (#1769)

Add EJML as the Java library for linear algebra for use in wpilib. This is equivalent to Eigen for C++.

The EJML dependency is downloaded in cmake and pulled in via maven in the gradle build.
This commit is contained in:
Redrield
2019-08-03 17:24:14 -04:00
committed by Peter Johnson
parent 3b12276bc3
commit c98ca7310f
4 changed files with 39 additions and 3 deletions

View File

@@ -97,6 +97,7 @@ ext {
apply from: "${rootDir}/shared/opencv.gradle"
task generateJavaDocs(type: Javadoc) {
classpath += project(":wpiutil").sourceSets.main.compileClasspath
options.links("https://docs.oracle.com/en/java/javase/11/docs/api/")
options.addStringOption "tag", "pre:a:Pre-Condition"
options.addStringOption('Xdoclint:accessibility,html,missing,reference,syntax')

View File

@@ -15,8 +15,9 @@ if (NOT WITHOUT_JAVA)
configure_file(src/generate/WPILibVersion.java.in WPILibVersion.java)
file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java)
file(GLOB EJML_JARS "${CMAKE_BINARY_DIR}/wpiutil/thirdparty/*.jar")
add_jar(wpilibj_jar ${JAVA_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.java INCLUDE_JARS hal_jar ntcore_jar ${OPENCV_JAR_FILE} cscore_jar cameraserver_jar wpiutil_jar OUTPUT_NAME wpilibj)
add_jar(wpilibj_jar ${JAVA_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/WPILibVersion.java INCLUDE_JARS hal_jar ntcore_jar ${EJML_JARS} ${OPENCV_JAR_FILE} cscore_jar cameraserver_jar wpiutil_jar OUTPUT_NAME wpilibj)
get_property(WPILIBJ_JAR_FILE TARGET wpilibj_jar PROPERTY JAR_FILE)
install(FILES ${WPILIBJ_JAR_FILE} DESTINATION "${java_lib_dest}")

View File

@@ -11,10 +11,37 @@ if (NOT WITHOUT_JAVA)
include(UseJava)
set(CMAKE_JAVA_COMPILE_FLAGS "-Xlint:unchecked")
set(CMAKE_JAVA_INCLUDE_PATH wpiutil.jar)
if(NOT EXISTS "${CMAKE_BINARY_DIR}/wpiutil/thirdparty/ejml-simple-0.38.jar")
set(BASE_URL "https://search.maven.org/remotecontent?filepath=")
set(JAR_ROOT "${CMAKE_BINARY_DIR}/wpiutil/thirdparty")
message(STATUS "Downloading EJML jarfiles...")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-cdense/0.38/ejml-cdense-0.38.jar"
"${JAR_ROOT}/ejml-cdense-0.38.jar")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-core/0.38/ejml-core-0.38.jar"
"${JAR_ROOT}/ejml-core-0.38.jar")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-ddense/0.38/ejml-ddense-0.38.jar"
"${JAR_ROOT}/ejml-ddense-0.38.jar")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-dsparse/0.38/ejml-dsparse-0.38.jar"
"${JAR_ROOT}/ejml-dsparse-0.38.jar")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-fdense/0.38/ejml-fdense-0.38.jar"
"${JAR_ROOT}/ejml-fdense-0.38.jar")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-simple/0.38/ejml-simple-0.38.jar"
"${JAR_ROOT}/ejml-simple-0.38.jar")
file(DOWNLOAD "${BASE_URL}org/ejml/ejml-zdense/0.38/ejml-zdense-0.38.jar"
"${JAR_ROOT}/ejml-zdense-0.38.jar")
message(STATUS "All files downloaded.")
endif()
file(GLOB EJML_JARS
${CMAKE_BINARY_DIR}/wpiutil/thirdparty/*.jar)
set(CMAKE_JAVA_INCLUDE_PATH wpiutil.jar ${EJML_JARS})
file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java)
add_jar(wpiutil_jar ${JAVA_SOURCES} OUTPUT_NAME wpiutil)
add_jar(wpiutil_jar ${JAVA_SOURCES} INCLUDE_JARS ${EJML_JARS} OUTPUT_NAME wpiutil)
get_property(WPIUTIL_JAR_FILE TARGET wpiutil_jar PROPERTY JAR_FILE)
install(FILES ${WPIUTIL_JAR_FILE} DESTINATION "${java_lib_dest}")

View File

@@ -1,6 +1,9 @@
apply from: "${rootDir}/shared/resources.gradle"
ext {
baseId = 'wpiutil'
groupId = 'edu.wpi.first.wpiutil'
nativeName = 'wpiutil'
devMain = 'edu.wpi.first.wpiutil.DevMain'
def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project)
@@ -213,3 +216,7 @@ model {
}
}
}
dependencies {
compile "org.ejml:ejml-simple:0.38"
}