Skip to content

Commit db41589

Browse files
committed
Add path validation, move declarations
1 parent e958c94 commit db41589

3 files changed

Lines changed: 41 additions & 5 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -325,11 +325,7 @@ set (HDF5_JAVA_SRCJNI_PATH ${HDF5_SOURCE_DIR}/java/src-jni)
325325
set (HDF5_JAVA_SRCJNI_JNI_SRC_DIR ${HDF5_SOURCE_DIR}/java/src-jni/jni)
326326
set (HDF5_JAVA_LIB_DIR ${HDF5_SOURCE_DIR}/java/lib)
327327
set (HDF5_JAVA_JSRC_DIR ${HDF5_SOURCE_DIR}/java/jsrc)
328-
set (HDF5_JAVA_LOGGING_JAR ${HDF5_SOURCE_DIR}/java/lib/slf4j-api-2.0.16.jar CACHE FILEPATH "Path to SLF4J API jar")
329-
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")
330-
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")
331-
set (HDF5_JAVA_JUNIT_JAR ${HDF5_JAVA_LIB_DIR}/org.junit.jar CACHE FILEPATH "Path to JUnit jar")
332-
set (HDF5_JAVA_HAMCREST_JAR ${HDF5_JAVA_LIB_DIR}/org.hamcrest.jar CACHE FILEPATH "Path to Hamcrest jar")
328+
333329
set (HDF5_DOXYGEN_DIR ${HDF5_SOURCE_DIR}/doxygen)
334330

335331
set (HDF5_SRC_INCLUDE_DIRS ${HDF5_SRC_DIR})

java/CMakeLists.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,41 @@ set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "${HDF5_JAVA_INCLUDE_DIR
2525

2626
set (CMAKE_JAVA_INCLUDE_PATH "")
2727

28+
#-----------------------------------------------------------------------------
29+
# Configurable paths for Java dependency JARs
30+
#-----------------------------------------------------------------------------
31+
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)")
32+
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)")
33+
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)")
34+
set (HDF5_JAVA_JUNIT_JAR ${HDF5_JAVA_LIB_DIR}/org.junit.jar CACHE FILEPATH "Path to JUnit 4 jar (test-only dependency)")
35+
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)")
36+
37+
#-----------------------------------------------------------------------------
38+
# Validate that all required JAR paths exist
39+
#-----------------------------------------------------------------------------
40+
set (_HDF5_REQUIRED_JAVA_JARS
41+
HDF5_JAVA_LOGGING_JAR
42+
HDF5_JAVA_LOGGING_NOP_JAR
43+
HDF5_JAVA_LOGGING_SIMPLE_JAR
44+
)
45+
if (NOT HDF5_EXTERNALLY_CONFIGURED AND BUILD_TESTING)
46+
list (APPEND _HDF5_REQUIRED_JAVA_JARS
47+
HDF5_JAVA_JUNIT_JAR
48+
HDF5_JAVA_HAMCREST_JAR
49+
)
50+
endif ()
51+
foreach (_jar_var IN LISTS _HDF5_REQUIRED_JAVA_JARS)
52+
if (DEFINED ${_jar_var} AND NOT "${${_jar_var}}" STREQUAL "")
53+
if (NOT EXISTS "${${_jar_var}}")
54+
message (FATAL_ERROR
55+
"Configured JAR path '${${_jar_var}}' for cache variable "
56+
"'${_jar_var}' does not exist. Please set -D${_jar_var}=<valid-path>."
57+
)
58+
endif ()
59+
endif ()
60+
endforeach ()
61+
unset (_HDF5_REQUIRED_JAVA_JARS)
62+
2863
if (Java_VERSION_STRING VERSION_GREATER_EQUAL "25.0.0")
2964
if (HDF5_ENABLE_JNI)
3065
set (HDF5_JAVA_USE_FFM FALSE)

release_docs/INSTALL_CMake_options.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ These are options which are specific to HDF5's wrappers for programming language
165165
| `HDF5_JAVA_PACK_JRE` | `BOOL` | `OFF` | If `ON`, packages a Java JRE with an HDF5 installation. |
166166
| `HDF5_ENABLE_MAVEN_DEPLOY` | `BOOL` | `OFF` | If `ON`, enables Maven repository deployment support. |
167167
| `HDF5_MAVEN_SNAPSHOT` | `BOOL` | `OFF` | If `ON`, adds "-SNAPSHOT" to version portion of names of Maven artifacts. |
168+
| `HDF5_JAVA_LOGGING_JAR` | `FILEPATH` | Bundled `java/lib/slf4j-api-2.0.16.jar` | Path to the SLF4J API jar. |
169+
| `HDF5_JAVA_LOGGING_NOP_JAR` | `FILEPATH` | Bundled `java/lib/ext/slf4j-nop-2.0.16.jar` | Path to the SLF4J NOP binding jar. |
170+
| `HDF5_JAVA_LOGGING_SIMPLE_JAR` | `FILEPATH` | Bundled `java/lib/ext/slf4j-simple-2.0.16.jar` | Path to the SLF4J simple binding jar. |
171+
| `HDF5_JAVA_JUNIT_JAR` | `FILEPATH` | Bundled `java/lib/org.junit.jar` | Path to the JUnit 4 jar. |
172+
| `HDF5_JAVA_HAMCREST_JAR` | `FILEPATH` | Bundled `java/lib/org.hamcrest.jar` | Path to the Hamcrest jar. |
168173

169174
### C++ options
170175
<a name="pl_cxx"></a>

0 commit comments

Comments
 (0)