Make JAR dep paths modifiable (#6331)

This commit is contained in:
Matt L
2026-04-13 10:15:10 -05:00
committed by GitHub
parent 62701c4c79
commit f010df9fe6
8 changed files with 59 additions and 11 deletions
+3 -3
View File
@@ -112,9 +112,9 @@ if (HDF5_BUILD_JAVA)
set (HDF5_JARHDF5_JAR_NAME "jarhdf5-${HDF5_PACKAGE_VERSION}.jar")
set (HDF5_JAVAHDF5_JAR_NAME "javahdf5-${HDF5_PACKAGE_VERSION}.jar")
endif ()
# slf4j JAR names (these are dependencies, version shouldn't change with SNAPSHOT)
set (HDF5_SLF4J_API_JAR_NAME "slf4j-api-2.0.16.jar")
set (HDF5_SLF4J_NOP_JAR_NAME "slf4j-nop-2.0.16.jar")
# slf4j JAR names derived from configured paths so overrides are reflected in the exported config
get_filename_component (HDF5_SLF4J_API_JAR_NAME ${HDF5_JAVA_LOGGING_JAR} NAME)
get_filename_component (HDF5_SLF4J_NOP_JAR_NAME ${HDF5_JAVA_LOGGING_NOP_JAR} NAME)
endif ()
#-----------------------------------------------------------------------------
+5 -3
View File
@@ -325,9 +325,11 @@ set (HDF5_JAVA_SRCJNI_PATH ${HDF5_SOURCE_DIR}/java/src-jni)
set (HDF5_JAVA_SRCJNI_JNI_SRC_DIR ${HDF5_SOURCE_DIR}/java/src-jni/jni)
set (HDF5_JAVA_LIB_DIR ${HDF5_SOURCE_DIR}/java/lib)
set (HDF5_JAVA_JSRC_DIR ${HDF5_SOURCE_DIR}/java/jsrc)
set (HDF5_JAVA_LOGGING_JAR ${HDF5_SOURCE_DIR}/java/lib/slf4j-api-2.0.16.jar)
set (HDF5_JAVA_LOGGING_NOP_JAR ${HDF5_SOURCE_DIR}/java/lib/ext/slf4j-nop-2.0.16.jar)
set (HDF5_JAVA_LOGGING_SIMPLE_JAR ${HDF5_SOURCE_DIR}/java/lib/ext/slf4j-simple-2.0.16.jar)
set (HDF5_JAVA_LOGGING_JAR ${HDF5_SOURCE_DIR}/java/lib/slf4j-api-2.0.16.jar CACHE FILEPATH "Path to SLF4J API jar")
set (HDF5_JAVA_LOGGING_NOP_JAR ${HDF5_SOURCE_DIR}/java/lib/ext/slf4j-nop-2.0.16.jar CACHE FILEPATH "Path to SLF4J NOP binding jar")
set (HDF5_JAVA_LOGGING_SIMPLE_JAR ${HDF5_SOURCE_DIR}/java/lib/ext/slf4j-simple-2.0.16.jar CACHE FILEPATH "Path to SLF4J simple binding jar")
set (HDF5_JAVA_JUNIT_JAR ${HDF5_JAVA_LIB_DIR}/org.junit.jar CACHE FILEPATH "Path to JUnit jar")
set (HDF5_JAVA_HAMCREST_JAR ${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar CACHE FILEPATH "Path to Hamcrest jar")
set (HDF5_DOCS_DIR ${HDF5_SOURCE_DIR}/docs)
set (HDF5_DOXYGEN_DIR ${HDF5_DOCS_DIR}/doxygen)
+5
View File
@@ -166,6 +166,11 @@ These are options which are specific to HDF5's wrappers for programming language
| `HDF5_JAVA_PACK_JRE` | `BOOL` | `OFF` | If `ON`, packages a Java JRE with an HDF5 installation. |
| `HDF5_ENABLE_MAVEN_DEPLOY` | `BOOL` | `OFF` | If `ON`, enables Maven repository deployment support. |
| `HDF5_MAVEN_SNAPSHOT` | `BOOL` | `OFF` | If `ON`, adds "-SNAPSHOT" to version portion of names of Maven artifacts. |
| `HDF5_JAVA_LOGGING_JAR` | `FILEPATH` | Bundled `java/lib/slf4j-api-2.0.16.jar` | Path to the SLF4J API jar. |
| `HDF5_JAVA_LOGGING_NOP_JAR` | `FILEPATH` | Bundled `java/lib/ext/slf4j-nop-2.0.16.jar` | Path to the SLF4J NOP binding jar. |
| `HDF5_JAVA_LOGGING_SIMPLE_JAR` | `FILEPATH` | Bundled `java/lib/ext/slf4j-simple-2.0.16.jar` | Path to the SLF4J simple binding jar. |
| `HDF5_JAVA_JUNIT_JAR` | `FILEPATH` | Bundled `java/lib/org.junit.jar` | Path to the JUnit 4 jar. |
| `HDF5_JAVA_HAMCREST_JAR` | `FILEPATH` | Bundled `java/lib/org.hamcrest.jar` | Path to the Hamcrest jar. |
### C++ options
<a name="pl_cxx"></a>
+35
View File
@@ -25,6 +25,41 @@ set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "${HDF5_JAVA_INCLUDE_DIR
set (CMAKE_JAVA_INCLUDE_PATH "")
#-----------------------------------------------------------------------------
# Configurable paths for Java dependency JARs
#-----------------------------------------------------------------------------
set (HDF5_JAVA_LOGGING_JAR ${HDF5_JAVA_LIB_DIR}/slf4j-api-2.0.16.jar CACHE FILEPATH "Path to SLF4J API jar (used at compile and runtime)")
set (HDF5_JAVA_LOGGING_NOP_JAR ${HDF5_JAVA_LIB_DIR}/ext/slf4j-nop-2.0.16.jar CACHE FILEPATH "Path to SLF4J NOP binding jar (suppresses logging when no other backend is present)")
set (HDF5_JAVA_LOGGING_SIMPLE_JAR ${HDF5_JAVA_LIB_DIR}/ext/slf4j-simple-2.0.16.jar CACHE FILEPATH "Path to SLF4J simple binding jar (used in tests for basic stdout logging)")
set (HDF5_JAVA_JUNIT_JAR ${HDF5_JAVA_LIB_DIR}/org.junit.jar CACHE FILEPATH "Path to JUnit 4 jar (test-only dependency)")
set (HDF5_JAVA_HAMCREST_JAR ${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar CACHE FILEPATH "Path to Hamcrest jar (test-only dependency, required by JUnit 4)")
#-----------------------------------------------------------------------------
# Validate that all required JAR paths exist
#-----------------------------------------------------------------------------
set (_HDF5_REQUIRED_JAVA_JARS
HDF5_JAVA_LOGGING_JAR
HDF5_JAVA_LOGGING_NOP_JAR
HDF5_JAVA_LOGGING_SIMPLE_JAR
)
if (NOT HDF5_EXTERNALLY_CONFIGURED AND BUILD_TESTING)
list (APPEND _HDF5_REQUIRED_JAVA_JARS
HDF5_JAVA_JUNIT_JAR
HDF5_JAVA_HAMCREST_JAR
)
endif ()
foreach (_jar_var IN LISTS _HDF5_REQUIRED_JAVA_JARS)
if (DEFINED ${_jar_var} AND NOT "${${_jar_var}}" STREQUAL "")
if (NOT EXISTS "${${_jar_var}}")
message (FATAL_ERROR
"Configured JAR path '${${_jar_var}}' for cache variable "
"'${_jar_var}' does not exist. Please set -D${_jar_var}=<valid-path>."
)
endif ()
endif ()
endforeach ()
unset (_HDF5_REQUIRED_JAVA_JARS)
if (Java_VERSION_STRING VERSION_GREATER_EQUAL "25.0.0")
if (HDF5_ENABLE_JNI)
set (HDF5_JAVA_USE_FFM FALSE)
+2 -2
View File
@@ -62,7 +62,7 @@ set (HDF5_JAVA_JTEST_FFM_TEST_SOURCES
)
# Update classpath to include FfmTestSupport JAR for test compilation
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVAHDF5_JARS};${${HDF5_JAVA_JTEST_LIB_TARGET}_FfmTestSupport_JAR_FILE};${HDF5_JAVA_LIB_DIR}/org.junit.jar;${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar;${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVAHDF5_JARS};${${HDF5_JAVA_JTEST_LIB_TARGET}_FfmTestSupport_JAR_FILE};${HDF5_JAVA_JUNIT_JAR};${HDF5_JAVA_HAMCREST_JAR};${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
foreach (ffm_test_file ${HDF5_JAVA_JTEST_FFM_TEST_SOURCES})
@@ -90,7 +90,7 @@ Enable-Native-Access: ALL-UNNAMED
endforeach ()
# Restore classpath for other tests
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVAHDF5_JARS};${HDF5_JAVA_LIB_DIR}/org.junit.jar;${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar;${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVAHDF5_JARS};${HDF5_JAVA_JUNIT_JAR};${HDF5_JAVA_HAMCREST_JAR};${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/h5ex_g_iterate.orig" "${PROJECT_BINARY_DIR}/h5ex_g_iterate.hdf" "${HDF5_JAVA_JTEST_LIB_TARGET}_files")
HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/h5ex_g_iterate.orig" "${PROJECT_BINARY_DIR}/h5ex_g_iterateL1.hdf" "${HDF5_JAVA_JTEST_LIB_TARGET}_files")
+1 -1
View File
@@ -75,7 +75,7 @@ if (HDF5_ENABLE_HDFS)
)
endif ()
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_LIB_DIR}/org.junit.jar;${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar;${HDF5_JAVA_JARS};${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_JUNIT_JAR};${HDF5_JAVA_HAMCREST_JAR};${HDF5_JAVA_JARS};${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
foreach (test_file ${HDF5_JAVA_TEST_SOURCES})
+1 -1
View File
@@ -75,7 +75,7 @@ if (HDF5_ENABLE_HDFS)
)
endif ()
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_JARS};${HDF5_JAVAHDF5_JARS};${HDF5_JAVA_LIB_DIR}/org.junit.jar;${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar;${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_JARS};${HDF5_JAVAHDF5_JARS};${HDF5_JAVA_JUNIT_JAR};${HDF5_JAVA_HAMCREST_JAR};${HDF5_JAVA_LOGGING_JAR};${HDF5_JAVA_LOGGING_SIMPLE_JAR}")
foreach (test_file ${HDF5_JAVA_TEST_SOURCES})
+7 -1
View File
@@ -42,7 +42,9 @@ For releases prior to version 2.0.0, please see the release.txt file and for mor
## Java Enhancements:
- Java dependency JAR paths are now configurable CMake cache variables, allowing system-provided JARs to be used in place of the bundled copies.
## Acknowledgements:
We would like to thank the many HDF5 community members who contributed to this release of HDF5.
@@ -111,6 +113,10 @@ We would like to thank the many HDF5 community members who contributed to this r
## Java Library
### Java dependency JAR paths are now user-configurable
The CMake variables `HDF5_JAVA_LOGGING_JAR`, `HDF5_JAVA_LOGGING_NOP_JAR`, `HDF5_JAVA_LOGGING_SIMPLE_JAR`, `HDF5_JAVA_JUNIT_JAR`, and `HDF5_JAVA_HAMCREST_JAR` are now CMake cache variables with the bundled JARs as defaults. Users can override these at configure time to use system-provided JARs. See `INSTALL_CMake_options.md` for details.
## Tools
## High-Level APIs