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_JARHDF5_JAR_NAME "jarhdf5-${HDF5_PACKAGE_VERSION}.jar")
set (HDF5_JAVAHDF5_JAR_NAME "javahdf5-${HDF5_PACKAGE_VERSION}.jar") set (HDF5_JAVAHDF5_JAR_NAME "javahdf5-${HDF5_PACKAGE_VERSION}.jar")
endif () endif ()
# slf4j JAR names (these are dependencies, version shouldn't change with SNAPSHOT) # slf4j JAR names derived from configured paths so overrides are reflected in the exported config
set (HDF5_SLF4J_API_JAR_NAME "slf4j-api-2.0.16.jar") get_filename_component (HDF5_SLF4J_API_JAR_NAME ${HDF5_JAVA_LOGGING_JAR} NAME)
set (HDF5_SLF4J_NOP_JAR_NAME "slf4j-nop-2.0.16.jar") get_filename_component (HDF5_SLF4J_NOP_JAR_NAME ${HDF5_JAVA_LOGGING_NOP_JAR} NAME)
endif () 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_SRCJNI_JNI_SRC_DIR ${HDF5_SOURCE_DIR}/java/src-jni/jni)
set (HDF5_JAVA_LIB_DIR ${HDF5_SOURCE_DIR}/java/lib) set (HDF5_JAVA_LIB_DIR ${HDF5_SOURCE_DIR}/java/lib)
set (HDF5_JAVA_JSRC_DIR ${HDF5_SOURCE_DIR}/java/jsrc) 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_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) 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) 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_DOCS_DIR ${HDF5_SOURCE_DIR}/docs)
set (HDF5_DOXYGEN_DIR ${HDF5_DOCS_DIR}/doxygen) 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_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_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_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 ### C++ options
<a name="pl_cxx"></a> <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 "") 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 (Java_VERSION_STRING VERSION_GREATER_EQUAL "25.0.0")
if (HDF5_ENABLE_JNI) if (HDF5_ENABLE_JNI)
set (HDF5_JAVA_USE_FFM FALSE) 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 # 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}) foreach (ffm_test_file ${HDF5_JAVA_JTEST_FFM_TEST_SOURCES})
@@ -90,7 +90,7 @@ Enable-Native-Access: ALL-UNNAMED
endforeach () endforeach ()
# Restore classpath for other tests # 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_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") 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 () 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}) foreach (test_file ${HDF5_JAVA_TEST_SOURCES})
+1 -1
View File
@@ -75,7 +75,7 @@ if (HDF5_ENABLE_HDFS)
) )
endif () 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}) 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 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: ## Acknowledgements:
We would like to thank the many HDF5 community members who contributed to this release of HDF5. 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 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 ## Tools
## High-Level APIs ## High-Level APIs