set(HDF5_EXTERNALLY_CONFIGURED ON)
# Modern CMake install COMPONENTS
# Setting HDF5_INSTALL_NO_DEVELOPMENT & HDF5_INSTALL_NO_LIBRARIES to
# FALSE to make explicit that the development and libraries
# can not be skipped for installation.  Use the install COMPONENTS
# features instead.
set(HDF5_INSTALL_NO_DEVELOPMENT FALSE)
set(HDF5_EXTERNAL_LIB_PREFIX "itk")
set(HDF5_EXPORTED_TARGETS ${ITKHDF5-targets})
set(HDF5_INSTALL_LIB_DIR ${ITKHDF5_INSTALL_LIBRARY_DIR})
set(HDF5_INSTALL_BIN_DIR ${ITKHDF5_INSTALL_RUNTIME_DIR})
set(HDF5_INSTALL_INCLUDE_DIR ${ITKHDF5_INSTALL_INCLUDE_DIR}/itkhdf5)

# Configure HDF5 privately so its options do not appear to the user.
set(HDF5_ALLOW_EXTERNAL_SUPPORT OFF CACHE INTERNAL "Allow External Library Building")
set(HDF5_BUILD_CPP_LIB ON CACHE INTERNAL "Build HDF5 C++ Library")
set(HDF5_BUILD_HL_LIB OFF CACHE INTERNAL "Build HIGH Level HDF5 Library")
set(HDF5_DISABLE_COMPILER_WARNINGS OFF CACHE INTERNAL "Disable HDF5 warnings")
set(HDF5_ENABLE_CODESTACK OFF CACHE INTERNAL "Enable the function stack tracing (for developer debugging).")
set(HDF5_ENABLE_COVERAGE OFF CACHE INTERNAL "Enable code coverage for Libraries and Programs")
set(HDF5_ENABLE_DEPRECATED_SYMBOLS ON CACHE INTERNAL "Enable deprecated public API symbols")
set(HDF5_ENABLE_GPFS OFF CACHE INTERNAL "Enable GPFS hints for the MPI/POSIX file driver")
set(HDF5_ENABLE_HSIZET ON CACHE INTERNAL "Enable datasets larger than memory")
set(HDF5_ENABLE_LARGE_FILE ON CACHE INTERNAL "Enable support for large (64-bit) files on Linux.")
set(HDF5_ENABLE_PARALLEL OFF CACHE INTERNAL "Enable parallel build (requires MPI)")
set(HDF5_ENABLE_SZIP_SUPPORT OFF CACHE INTERNAL "Use SZip Filter")
set(HDF5_ENABLE_THREADSAFE OFF CACHE INTERNAL "Enable Threadsafety")
set(HDF5_ENABLE_TRACE OFF CACHE INTERNAL "Enable API tracing capability")
set(HDF5_ENABLE_USING_MEMCHECKER OFF CACHE INTERNAL "Indicate that a memory checker is used")
set(HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE INTERNAL "Enable HDF5 Zlib Filters")
set(HDF5_Enable_Clear_File_Buffers ON CACHE INTERNAL "Securely clear file buffers before writing to file")
set(HDF5_Enable_Instrument OFF CACHE INTERNAL "Instrument The library")
set(HDF5_METADATA_TRACE_FILE OFF CACHE INTERNAL "Enable metadata trace file collection")
set(HDF5_PACKAGE_EXTLIBS OFF CACHE INTERNAL "CPACK - include external libraries")
set(HDF5_STRICT_FORMAT_CHECKS OFF CACHE INTERNAL "Whether to perform strict file format checks")
set(HDF5_USE_16_API_DEFAULT OFF CACHE INTERNAL "Use the HDF5 1.6.x API by default")
set(HDF5_USE_FILTER_FLETCHER32 ON CACHE INTERNAL "Use the FLETCHER32 Filter")
set(HDF5_USE_FILTER_NBIT ON CACHE INTERNAL "Use the NBIT Filter")
set(HDF5_USE_FILTER_SCALEOFFSET ON CACHE INTERNAL "Use the SCALEOFFSET Filter")
set(HDF5_USE_FILTER_SHUFFLE ON CACHE INTERNAL "Use the SHUFFLE Filter")
set(HDF5_USE_H5DUMP_PACKED_BITS ON CACHE INTERNAL "Use the PACKED BITS feature in h5dump")
set(HDF5_WANT_DATA_ACCURACY ON CACHE INTERNAL "IF data accuracy is guaranteed during data conversions")
set(HDF5_WANT_DCONV_EXCEPTION ON CACHE INTERNAL "exception handling functions is checked during data conversions")
set(HDF_LEGACY_NAMING ON CACHE INTERNAL "Use Legacy Names for Libraries and Programs")
set(HDF5_BUILD_FRAMEWORKS OFF CACHE INTERNAL "TRUE to build as frameworks libraries, FALSE to build according to BUILD_SHARED_LIBS")
set(HDF5_BUILD_WITH_INSTALL_NAME  OFF CACHE INTERNAL "Build with library install_name set to the installation path")
set(HDF5_ENABLE_ALL_WARNINGS OFF CACHE INTERNAL "Enable all warnings")
set(HDF5_ENABLE_DEBUG_APIS OFF CACHE INTERNAL "Turn on debugging in all packages")
set(HDF5_ENABLE_DIRECT_VFD ON CACHE INTERNAL "Build the Direct I/O Virtual File Driver")
set(HDF5_ENABLE_EMBEDDED_LIBINFO ON CACHE INTERNAL "embed library info into executables")
set(HDF5_ENABLE_GROUPFIVE_WARNINGS OFF CACHE INTERNAL "Enable group five warnings")
set(HDF5_ENABLE_GROUPFOUR_WARNINGS OFF CACHE INTERNAL "Enable group four warnings")
set(HDF5_ENABLE_GROUPONE_WARNINGS OFF CACHE INTERNAL "Enable group one warnings")
set(HDF5_ENABLE_GROUPSIX_WARNINGS OFF CACHE INTERNAL "Enable group six warnings")
set(HDF5_ENABLE_GROUPTHREE_WARNINGS OFF CACHE INTERNAL "Enable group three warnings")
set(HDF5_ENABLE_GROUPTWO_WARNINGS OFF CACHE INTERNAL "Enable group two warnings")
set(HDF5_ENABLE_GROUPZERO_WARNINGS OFF CACHE INTERNAL "Enable group zero warnings")
set(HDF5_GENERATE_HEADERS OFF CACHE INTERNAL "Rebuild Generated Files")
set(HDF5_PACK_EXAMPLES OFF CACHE INTERNAL "Package the HDF5 Library Examples Compressed File")
set(HDF5_NO_PACKAGES OFF CACHE INTERNAL "CPACK - Disable packaging")
set(HDF5_TEST_VFD OFF CACHE INTERNAL "Execute tests with different VFDs")
set(HDF5_USE_FOLDERS  ON CACHE INTERNAL "Enable folder grouping of projects in IDEs.")
set(HDF_TEST_EXPRESS OFF CACHE INTERNAL "Control testing framework (0-3)")
set(BUILD_STATIC_EXECS OFF CACHE INTERNAL "Build Static Executables")
set(BUILD_USER_DEFINED_LIBS OFF CACHE INTERNAL "Build user defined libs")

# Setup all necessary overrides for zlib so that HDF5 uses our
# internally compiled zlib rather than any other version
if(HDF5_ENABLE_Z_LIB_SUPPORT)
  # We must tell the main HDF5 library that it depends on our zlib
  set(ZLIB_INCLUDE_DIRS "${ITKZLIB_INCLUDE_DIRS}")
  set(ZLIB_LIBRARIES "${ITKZLIB_LIBRARIES}")
  if(BUILD_SHARED_LIBS)
    set(ZLIB_SHARED_LIBRARY ${ITKZLIB_LIBRARIES})
  endif()
  set(ZLIB_STATIC_LIBRARY ${ITKZLIB_LIBRARIES})
  set(H5_ZLIB_HEADER "itk_zlib.h")
endif()

add_subdirectory(itkhdf5)

mark_as_advanced(HDF_ENABLE_LARGE_FILE)
mark_as_advanced(CTEST_TEST_TIMEOUT)
mark_as_advanced(HDF5_BUILD_GENERATORS)
mark_as_advanced(HDF5_ENABLE_DEV_WARNINGS)
mark_as_advanced(HDF5_MEMORY_ALLOC_SANITY_CHECK)
mark_as_advanced(HDF5_USE_110_API_DEFAULT)
mark_as_advanced(HDF5_USE_18_API_DEFAULT)
mark_as_advanced(HDF5_USE_PREGEN)
unset(ALLOW_UNSUPPORTED CACHE)

if(BUILD_SHARED_LIBS)
  set(target_extension -shared)
else()
  set(target_extension -static)
endif()
foreach(lib
    hdf5
    hdf5_cpp
    )
  itk_module_target(${lib}${target_extension} NO_INSTALL)
endforeach()
if(ITK_LIBRARY_PROPERTIES)
  set_target_properties(hdf5${target_extension} PROPERTIES ${ITK_LIBRARY_PROPERTIES})
endif()
