option(BUILD_HDF5_OPCODES "Build the hdf5 read/write opcodes" ON)

if(MSVC)
    message(STATUS "HDF5_HOME: $ENV{HDF5_HOME}")
    message(STATUS "Configuring HDF5 for static linkage.")
    find_library (HDF5_library NAMES libhdf5 PATHS $ENV{HDF5_HOME} PATH_SUFFIXES lib NO_DEFAULT_PATH)
    find_library (HDF5_szip_library NAMES libszip PATHS $ENV{HDF5_HOME} PATH_SUFFIXES lib NO_DEFAULT_PATH)
    find_library (HDF5_zlib_library NAMES libzlib PATHS $ENV{HDF5_HOME} PATH_SUFFIXES lib NO_DEFAULT_PATH)
    find_path(HDF5_H hdf5.h PATHS $ENV{HDF5_HOME} PATH_SUFFIXES include ${EXTRA_PREFIX} NO_DEFAULT_PATH)
    check_deps(BUILD_HDF5_OPCODES HDF5_library HDF5_H)
    if(BUILD_HDF5_OPCODES)
        message(STATUS "HDF5_H: ${HDF5_H}")
        message(STATUS "HDF5_library: ${HDF5_library}")
        message(STATUS "HDF5_szip_library: ${HDF5_szip_library}")
        message(STATUS "HDF5_zlib_library: ${HDF5_zlib_library}")
        make_plugin(hdf5ops HDF5IO.c)
        target_include_directories(hdf5ops PRIVATE ${HDF5_H})
        target_link_libraries(hdf5ops ${HDF5_library} ${HDF5_szip_library} ${HDF5_zlib_library})
    endif()
else()
    find_package(HDF5)
    check_deps(BUILD_HDF5_OPCODES HDF5_FOUND)
    if(BUILD_HDF5_OPCODES)
        message(STATUS "HDF5_INCLUDE_DIRS: ${HDF5_INCLUDE_DIRS}")
        message(STATUS "HDF5_LIBRARIES: ${HDF5_LIBRARIES}")
        make_plugin(hdf5ops HDF5IO.c)
        target_include_directories(hdf5ops PRIVATE ${HDF5_INCLUDE_DIRS})
        target_link_libraries(hdf5ops ${HDF5_LIBRARIES})
    endif()
endif()
check_include_file(hdf5.h HDF5_H)

