set(GLDOZE_GALLERY_APP_DIR "${CMAKE_BINARY_DIR}/apps/gallery")
file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/apps/gallery-sdk-preview")

add_library(gldoze_gallery MODULE gallery_preview_plugin.cpp)
target_link_libraries(gldoze_gallery PRIVATE gldoze_sdk)
set_target_properties(gldoze_gallery PROPERTIES
  LIBRARY_OUTPUT_DIRECTORY "${GLDOZE_GALLERY_APP_DIR}"
  PREFIX "lib" OUTPUT_NAME "gldoze_gallery"
  CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN YES)

file(MAKE_DIRECTORY "${GLDOZE_GALLERY_APP_DIR}")
configure_file(app.json.in "${GLDOZE_GALLERY_APP_DIR}/app.json" @ONLY)
configure_file("${GLDOZE_REPO_ROOT}/assets/desktop/icons/gallery.svg" "${GLDOZE_GALLERY_APP_DIR}/icon.svg" COPYONLY)

install(TARGETS gldoze_gallery
  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/gldoze/apps/gallery"
  COMPONENT GLDozeDesktop)
install(FILES
  "${GLDOZE_GALLERY_APP_DIR}/app.json"
  "${GLDOZE_GALLERY_APP_DIR}/icon.svg"
  DESTINATION "${CMAKE_INSTALL_LIBDIR}/gldoze/apps/gallery"
  COMPONENT GLDozeDesktop)

if(BUILD_TESTING)
  add_executable(gallery_plugin_test gallery_preview_plugin_test.cpp)
  target_link_libraries(gallery_plugin_test PRIVATE gldoze_plugin_runtime)
  add_dependencies(gallery_plugin_test gldoze_gallery)
  add_test(NAME gallery_plugin
    COMMAND gallery_plugin_test "${GLDOZE_GALLERY_APP_DIR}/app.json")
endif()
