set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

set(HEADERS
    libcockatrice/deck_list/tree/abstract_deck_list_card_node.h
    libcockatrice/deck_list/tree/abstract_deck_list_node.h
    libcockatrice/deck_list/tree/deck_list_card_node.h
    libcockatrice/deck_list/tree/inner_deck_list_node.h
    libcockatrice/deck_list/deck_list.h
    libcockatrice/deck_list/deck_list_history_manager.h
    libcockatrice/deck_list/deck_list_node_tree.h
    libcockatrice/deck_list/deck_list_memento.h
    libcockatrice/deck_list/playmat_resolver.h
    libcockatrice/deck_list/sideboard_plan.h
)

qt6_wrap_cpp(MOC_SOURCES ${HEADERS})

add_library(
  libcockatrice_deck_list STATIC
  ${MOC_SOURCES}
  libcockatrice/deck_list/tree/abstract_deck_list_card_node.cpp
  libcockatrice/deck_list/tree/abstract_deck_list_node.cpp
  libcockatrice/deck_list/tree/deck_list_card_node.cpp
  libcockatrice/deck_list/tree/inner_deck_list_node.cpp
  libcockatrice/deck_list/deck_list.cpp
  libcockatrice/deck_list/deck_list_history_manager.cpp
  libcockatrice/deck_list/deck_list_node_tree.cpp
  libcockatrice/deck_list/playmat_resolver.cpp
  libcockatrice/deck_list/sideboard_plan.cpp
)

add_dependencies(libcockatrice_deck_list libcockatrice_protocol)

target_include_directories(libcockatrice_deck_list PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

target_link_libraries(
  libcockatrice_deck_list PUBLIC libcockatrice_interfaces libcockatrice_protocol libcockatrice_utility
                                 ${QT_CORE_MODULE}
)
