
if(LBM_ITK_EXTENSION)
  list(APPEND LBMITK_H_FILES "utils/ITKUtils.h")
  list(APPEND LBMITK_CPP_FILES "utils/ITKUtils.cpp")
  list(APPEND PUBLIC_LBM_DEPENDS ${ITK_LIBRARIES})
endif()

if(LBM_VTK_EXTENSION)
  list(APPEND LBMVTK_H_FILES "utils/VTKUtils.h")
  list(APPEND LBMVTK_CPP_FILES "utils/VTKUtils.cpp")
  list(APPEND PUBLIC_LBM_DEPENDS ${VTK_LIBRARIES})
endif()

if(WIN32)
  list(APPEND PRIVATE_LBM_DEPENDS Dirent)
endif()

add_library_ex(LBM
  H_FILES
    "LBM.h"
    "LBMExports.h"
    "utils/LBMUtils.h"
    "utils/FileUtils.h"
    "utils/LogUtils.h"
    "utils/RunUtils.h"
    "utils/TimingProfile.h"
    ${LBMITK_H_FILES}
    ${LBMVTK_H_FILES}
  CPP_FILES
    "LBM.cpp"
    "utils/LBMUtils.cpp"
    "utils/FileUtils.cpp"
    "utils/LogUtils.cpp"
    "utils/RunUtils.cpp"
    "utils/TimingProfile.cpp"
    ${LBMITK_CPP_FILES}
    ${LBMVTK_CPP_FILES}
  CUDA_FILES
    "LBM.cu"
  PUBLIC_DEPENDS
    ${PUBLIC_LBM_DEPENDS}
  PRIVATE_DEPENDS
    ${PRIVATE_LBM_DEPENDS}
    Eigen3::Eigen
  #VERBOSE
)

if(LBM_VTK_OFFSCREEN)
  target_compile_options(LBM PRIVATE -DVTK_OFFSCREEN)
endif()
