cmake_minimum_required (VERSION 3.12)
project (H5LZ4_SRC C)

#-----------------------------------------------------------------------------
# Apply Definitions to compiler in this directory and below
#-----------------------------------------------------------------------------
add_definitions (${HDF5_EXTRA_C_FLAGS})

#-----------------------------------------------------------------------------
# Setup include Directories
#-----------------------------------------------------------------------------
set(H5LZ4_INCLUDE_DIRS ${H5LZ4_INCLUDE_DIRS}
    ${HDF5_INCLUDE_DIR} ${H5LZ4_BINARY_DIR} ${LZ4_BINARY_DIR}
    ${H5LZ4_SRC_SOURCE_DIR}/lib
    ${LZ4_INCLUDE_DIRS}
)

#-----------------------------------------------------------------------------
# Define H5LZ4 Library
#-----------------------------------------------------------------------------
set (H5LZ4_SRCS
    ${H5LZ4_SRC_SOURCE_DIR}/H5Zlz4.c
)
if (BUILD_LZ4_LIBRARY_SOURCE)
  set (H5LZ4_SRCS ${H5LZ4_SRCS}
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4.c
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4.h
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4hc.c
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4hc.h
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4frame.c
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4frame.h
      ${H5LZ4_SRC_SOURCE_DIR}/lib/lz4frame_static.h
      ${H5LZ4_SRC_SOURCE_DIR}/lib/xxhash.c
      ${H5LZ4_SRC_SOURCE_DIR}/lib/xxhash.h
  )
endif ()

add_library (${H5LZ4_LIB_TARGET} MODULE ${H5LZ4_SRCS})
if (DISABLE_H5LZ4_ENCODER)
  set_target_properties(${H5LZ4_LIB_TARGET} PROPERTIES COMPILE_DEFINITIONS "FILTER_DECODE_ONLY")
endif ()
target_include_directories(${H5LZ4_LIB_TARGET} PRIVATE ${H5LZ4_INCLUDE_DIRS})
target_link_libraries (${H5LZ4_LIB_TARGET} PRIVATE ${LINK_LIBS})
  if (WIN32)
    target_link_libraries (${H5LZ4_LIB_TARGET} PRIVATE "ws2_32.lib")
  endif ()
set_global_variable (H5LZ4_LIBRARIES_TO_EXPORT ${H5LZ4_LIB_TARGET})
HDF_SET_LIB_VERSIONS ("H5LZ4" ${H5LZ4_LIB_TARGET} ${H5LZ4_LIB_NAME} MODULE)

if (BUILD_TESTING)
  #-----------------------------------------------------------------------------
  # Copy plugin library to a plugins folder
  #-----------------------------------------------------------------------------

  # make plugins dir
  file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins")
  add_custom_command (
      TARGET     ${H5LZ4_LIB_TARGET}
      POST_BUILD
      COMMAND    ${CMAKE_COMMAND}
      ARGS       -E copy_if_different
        "$<TARGET_FILE:${H5LZ4_LIB_TARGET}>"
        "${CMAKE_BINARY_DIR}/plugins/$<TARGET_FILE_NAME:${H5LZ4_LIB_TARGET}>"
  )
endif ()

#-----------------------------------------------------------------------------
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
if (H5LZ4_EXPORTED_TARGETS)
  install (
      TARGETS
          ${H5LZ4_LIB_TARGET}
      EXPORT
          ${H5LZ4_EXPORTED_TARGETS}
      LIBRARY DESTINATION ${H5LZ4_INSTALL_LIB_DIR} COMPONENT libraries
      ARCHIVE DESTINATION ${H5LZ4_INSTALL_LIB_DIR} COMPONENT libraries
      RUNTIME DESTINATION ${H5LZ4_INSTALL_BIN_DIR} COMPONENT libraries
  )
endif ()
