aboutsummaryrefslogtreecommitdiff
path: root/ports/ismrmrd/optional_hdf5_dependency.patch
blob: 7c4772ed557bdf8b2056f3f869f8e6aee2dca0f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 456d4f4..3c235f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,7 @@ set (ISMRMRD_CMAKE_DIR ${PROJECT_SOURCE_DIR}/cmake CACHE PATH
 
 # command line options
 option(USE_SYSTEM_PUGIXML "Use pugixml installed on the system" OFF)
+option(USE_HDF5_DATASET_SUPPORT "Use HDF5 library for dataset support" OFF)
 
 # and include it to the search list
 list(APPEND CMAKE_MODULE_PATH ${ISMRMRD_CMAKE_DIR})
@@ -91,18 +92,23 @@ endif()
 set(ISMRMRD_VERSION_STRING ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR}.${ISMRMRD_VERSION_PATCH})
 set(ISMRMRD_SOVERSION ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR})
 
-# Find HDF5 for dataset support
-find_package(HDF5 1.8 COMPONENTS C)
-
-if (HDF5_FOUND)
-    set (ISMRMRD_DATASET_SUPPORT true)
-    set (ISMRMRD_DATASET_SOURCES libsrc/dataset.c libsrc/dataset.cpp)
-    set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_C_INCLUDE_DIR})
-    set (ISMRMRD_DATASET_LIBRARIES ${HDF5_LIBRARIES})
-else (HDF5_FOUND)
+if (USE_HDF5_DATASET_SUPPORT)
+    # Find HDF5 for dataset support
+    find_package(HDF5 1.8 COMPONENTS C)
+
+    if (HDF5_FOUND)
+        set (ISMRMRD_DATASET_SUPPORT true)
+        set (ISMRMRD_DATASET_SOURCES libsrc/dataset.c libsrc/dataset.cpp)
+        set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_C_INCLUDE_DIR})
+        set (ISMRMRD_DATASET_LIBRARIES ${HDF5_LIBRARIES})
+    elseif (USE_HDF5_DATASET_SUPPORT)
+        set (ISMRMRD_DATASET_SUPPORT false)
+        # Dataset and file support was explicitly requested, force failure rather than succeed without support.
+        message (FATAL_ERROR "HDF5 not found. Dataset and file support unavailable!")
+    endif (HDF5_FOUND)
+else (USE_HDF5_DATASET_SUPPORT)
     set (ISMRMRD_DATASET_SUPPORT false)
-    message (WARNING "HDF5 not found. Dataset and file support unavailable!")
-endif (HDF5_FOUND)
+endif (USE_HDF5_DATASET_SUPPORT)
 
 # Generate the version.h header file
 find_package(Git)
@@ -127,7 +133,7 @@ install(FILES ${CMAKE_BINARY_DIR}/include/ismrmrd/version.h DESTINATION include/
 
 #  ---   Main Library  (begin) ----
 # in windows, install the HDF5 dependencies
-if (HDF5_FOUND AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
+if (USE_HDF5_DATASET_SUPPORT AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
     if(DEFINED ENV{HDF5_ROOT})
         set(HDF5_BIN_DIR $ENV{HDF5_ROOT}/bin)
     else (DEFINED ENV{HDF5_ROOT})
@@ -135,7 +141,7 @@ if (HDF5_FOUND AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
     endif (DEFINED ENV{HDF5_ROOT})
     message("Install hdf5 libraries from ${HDF5_BIN_DIR} ")
     install( DIRECTORY ${HDF5_BIN_DIR} DESTINATION bin/.. FILES_MATCHING PATTERN "*.dll" )
-endif (HDF5_FOUND AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
+endif (USE_HDF5_DATASET_SUPPORT AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
 
 # include directories for main library
 set(ISMRMRD_TARGET_INCLUDE_DIRS
@@ -199,9 +205,9 @@ install(FILES cmake/FindIsmrmrd.cmake cmake/FindFFTW3.cmake DESTINATION share/is
 add_subdirectory(doc)
 
 add_subdirectory(utilities)
-if (HDF5_FOUND)
+if (USE_HDF5_DATASET_SUPPORT)
     add_subdirectory(examples/c)
-endif (HDF5_FOUND)
+endif (USE_HDF5_DATASET_SUPPORT)
 
 # TODO: make this work on Windows
 if (NOT WIN32)