set(GLDOZE_GLDECK_PREVIEW_APP_DIR "${CMAKE_BINARY_DIR}/apps/gldeck-sdk-preview")
add_library(gldoze_gldeck_preview MODULE gldeck_preview_plugin.cpp)
target_link_libraries(gldoze_gldeck_preview PRIVATE gldoze_sdk)
set_target_properties(gldoze_gldeck_preview PROPERTIES
  LIBRARY_OUTPUT_DIRECTORY "${GLDOZE_GLDECK_PREVIEW_APP_DIR}"
  PREFIX "lib"
  OUTPUT_NAME "gldoze_gldeck_preview"
  CXX_VISIBILITY_PRESET hidden
  VISIBILITY_INLINES_HIDDEN YES
)
file(MAKE_DIRECTORY "${GLDOZE_GLDECK_PREVIEW_APP_DIR}")
configure_file(app.json.in "${GLDOZE_GLDECK_PREVIEW_APP_DIR}/app.json" @ONLY)

install(TARGETS gldoze_gldeck_preview
  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/gldoze/apps/gldeck-sdk-preview"
  COMPONENT GLDozeDesktop)
install(FILES "${GLDOZE_GLDECK_PREVIEW_APP_DIR}/app.json"
  DESTINATION "${CMAKE_INSTALL_LIBDIR}/gldoze/apps/gldeck-sdk-preview"
  COMPONENT GLDozeDesktop)

if(BUILD_TESTING)
  add_executable(gldeck_preview_plugin_test gldeck_preview_plugin_test.cpp)
  target_link_libraries(gldeck_preview_plugin_test PRIVATE gldoze_plugin_runtime)
  add_dependencies(gldeck_preview_plugin_test gldoze_gldeck_preview)
  add_test(NAME gldeck_preview_plugin
    COMMAND gldeck_preview_plugin_test "${GLDOZE_GLDECK_PREVIEW_APP_DIR}/app.json")
endif()
