include(${VTK_USE_FILE})
simmedtk_add_library(Core
  SOURCES
    BaseMesh.cpp
    CollisionConfig.cpp
    CollisionDetection.cpp
    CollisionPair.cpp
    Color.cpp
    ContactHandling.cpp
    CoreClass.cpp
    Dispatcher.cpp
    DisplayText.cpp
    ErrorLog.cpp
    Event.cpp
    EventHandler.cpp
    Geometry.cpp
    IOStream.cpp
    Light.cpp
    Model.cpp
    Module.cpp
    ObjectSimulator.cpp
    RenderDetail.cpp
    Scene.cpp
    SceneObject.cpp
    SDK.cpp
    Simulator.cpp
    StaticSceneObject.cpp
    Timer.cpp
    UnifiedId.cpp
    ViewerBase.cpp
  PUBLIC_HEADERS
    BaseMesh.h
    CollisionConfig.h
    CollisionDetection.h
    CollisionModelIterator.h
    CollisionPair.h
    Color.h
    Config.h
    ConfigRendering.h
    ContactHandling.h
    CoreClass.h
    DataStructures.h
    Dispatcher.h
    DisplayText.h
    ErrorLog.h
    Event.h
    EventHandler.h
    Factory.h
    Geometry.h
    IOStream.h
    Light.h
    MakeUnique.h
    Matrix.h
    Model.h
    Module.h
    ObjectSimulator.h
    Quaternion.h
    RenderDelegate.h
    RenderDetail.h
    Scene.h
    SceneObject.h
    Scheduler.h
    SDK.h
    Simulator.h
    StaticSceneObject.h
    Synchronization.h
    Texture.h
    Timer.h
    UnifiedId.h
    Utils.h
    Vector.h
    ViewerBase.h
    WorkerThread.h
    DataStructures.hpp
    Factory.hpp
)

target_link_libraries(Core

  PUBLIC
    ${OPENGL_LIBRARY}
    sfml::graphics
    VegaFEM::objMesh
    VegaFEM::volumetricMesh
    vtkglew
)

if(UNIX)
  target_compile_features(Core PUBLIC cxx_auto_type)
endif()

if(BUILD_TESTING)
  add_subdirectory(UnitTests)
endif()
