set(ICON_FILES
  ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_16.png
  ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_22.png
  ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_24.png
  ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_32.png
  ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_48.png)

find_program(CONVERT_EXECUTABLE convert)

if(CONVERT_EXECUTABLE)
  add_custom_target(icons DEPENDS ${ICON_FILES})

  if(UNIX AND NOT APPLE)
    foreach(SIZE 16 22 24 32 48)
      install(FILES icons/tigervnc_${SIZE}.png
        DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/${SIZE}x${SIZE}/apps
        RENAME tigervnc.png)
    endforeach()
    install(FILES icons/tigervnc.svg
      DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/scalable/apps)
  endif()
endif()

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_16.png
  COMMAND ${CONVERT_EXECUTABLE} -background transparent
    ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_16.svg
    ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_16.png
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_16.svg
  COMMENT "Generating icons/tigervnc_16.png")

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_22.png
  COMMAND ${CONVERT_EXECUTABLE} -density 72
    -size 22x22 xc:none -gravity center -background transparent
    ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_20.svg -composite
    ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_22.png
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_20.svg
  COMMENT "Generating icons/tigervnc_22.png")

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_24.png
  COMMAND ${CONVERT_EXECUTABLE} -density 72
    -size 24x24 xc:none -gravity center -background transparent
    ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_20.svg -composite
    ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_24.png
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_20.svg
  COMMENT "Generating icons/tigervnc_24.png")

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_32.png
  COMMAND ${CONVERT_EXECUTABLE} -density 72
    -size 32x32 xc:none -gravity center -background transparent
    ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_28.svg -composite
    ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_32.png
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_28.svg
  COMMENT "Generating icons/tigervnc_32.png")

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_48.png
  COMMAND ${CONVERT_EXECUTABLE} -density 72
    -size 48x48 xc:none -gravity center -background transparent
    ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_42.svg -composite
    ${CMAKE_CURRENT_SOURCE_DIR}/icons/tigervnc_48.png
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc_42.svg
  COMMENT "Generating icons/tigervnc_48.png")