Warning, /frameworks/kirigami/KF6KirigamiMacros.cmake is written in an unsupported language. File is not indexed.

0001 include(CMakeParseArguments)
0002 include(ExternalProject)
0003 
0004 
0005 function(kirigami_package_breeze_icons)
0006     set(_multiValueArgs ICONS)
0007     cmake_parse_arguments(ARG "" "" "${_multiValueArgs}" ${ARGN} )
0008 
0009     if(NOT ARG_ICONS)
0010         message(FATAL_ERROR "No ICONS argument given to kirigami_package_breeze_icons")
0011     endif()
0012 
0013     #include icons used by Kirigami components themselves
0014     set(ARG_ICONS ${ARG_ICONS}
0015         application-exit
0016         dialog-close
0017         dialog-error
0018         dialog-information
0019         dialog-positive
0020         dialog-warning
0021         edit-clear-locationbar-ltr
0022         edit-clear-locationbar-rtl
0023         edit-copy
0024         edit-delete-remove
0025         emblem-error
0026         emblem-information
0027         emblem-positive
0028         emblem-warning
0029         globe
0030         go-next
0031         go-next-symbolic
0032         go-next-symbolic-rtl
0033         go-previous
0034         go-previous-symbolic
0035         go-previous-symbolic-rtl
0036         go-up
0037         handle-sort
0038         mail-sent
0039         open-menu-symbolic
0040         overflow-menu-left
0041         overflow-menu-right
0042         overflow-menu
0043         password-show-off
0044         password-show-on
0045         tools-report-bug
0046         user
0047         view-left-new
0048         view-right-new
0049         view-left-close
0050         view-right-close
0051     )
0052 
0053     function(_find_breeze_icon icon varName)
0054         #HACKY
0055         SET(path "")
0056         file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/48/${icon}.svg )
0057 
0058         #search in other sizes as well
0059         if (path STREQUAL "")
0060             file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/32/${icon}.svg )
0061             if (path STREQUAL "")
0062                 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/22/${icon}.svg )
0063                 if (path STREQUAL "")
0064                     file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/16/${icon}.svg )
0065                 endif()
0066             endif()
0067         endif()
0068         if (path STREQUAL "")
0069             file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/symbolic/${icon}.svg )
0070         endif()
0071         if (path STREQUAL "")
0072             return()
0073         endif()
0074 
0075         list(LENGTH path _count_paths)
0076         if (_count_paths GREATER 1)
0077             message(WARNING "Found more than one version of '${icon}': ${path}")
0078         endif()
0079         list(GET path 0 path)
0080         get_filename_component(path "${path}" REALPATH)
0081 
0082         SET(${varName} ${path} PARENT_SCOPE)
0083     endfunction()
0084 
0085     if (BREEZEICONS_DIR AND NOT EXISTS ${BREEZEICONS_DIR})
0086         message(FATAL_ERROR "BREEZEICONS_DIR variable does not point to existing dir: \"${BREEZEICONS_DIR}\"")
0087     endif()
0088 
0089     set(_BREEZEICONS_DIR "${BREEZEICONS_DIR}")
0090 
0091     #FIXME: this is a terrible hack
0092     if(NOT _BREEZEICONS_DIR)
0093         set(_BREEZEICONS_DIR "${CMAKE_BINARY_DIR}/breeze-icons/src/breeze-icons")
0094 
0095         # replacement for ExternalProject_Add not yet working
0096         # first time config?
0097         if (NOT EXISTS ${_BREEZEICONS_DIR})
0098             find_package(Git)
0099             execute_process(COMMAND ${GIT_EXECUTABLE} clone --depth 1 https://invent.kde.org/frameworks/breeze-icons.git ${_BREEZEICONS_DIR})
0100         endif()
0101 
0102         # external projects are only pulled at make time, not configure time
0103         # so this is too late to work with the _find_breeze_icon() method
0104         # _find_breeze_icon() would need to be turned into a target/command
0105         if (FALSE)
0106         ExternalProject_Add(
0107             breeze-icons
0108             PREFIX breeze-icons
0109             GIT_REPOSITORY https://invent.kde.org/frameworks/breeze-icons.git
0110             CONFIGURE_COMMAND ""
0111             BUILD_COMMAND ""
0112             INSTALL_COMMAND ""
0113             LOG_DOWNLOAD ON
0114         )
0115         endif()
0116     endif()
0117 
0118     message (STATUS "Found external breeze icons:")
0119     foreach(_iconName ${ARG_ICONS})
0120         set(_iconPath "")
0121         _find_breeze_icon(${_iconName} _iconPath)
0122         message (STATUS ${_iconPath})
0123         if (EXISTS ${_iconPath})
0124             install(FILES ${_iconPath} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/kirigami/breeze-internal/icons/ RENAME ${_iconName}.svg)
0125         endif()
0126     endforeach()
0127 
0128     #generate an index.theme that qiconloader can understand
0129     file(WRITE ${CMAKE_BINARY_DIR}/index.theme "[Icon Theme]\nName=Breeze\nDirectories=icons\n[icons]\nSize=32\nType=Scalable")
0130     install(FILES ${CMAKE_BINARY_DIR}/index.theme DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/kirigami/breeze-internal/)
0131 endfunction()