Warning, /frameworks/kirigami/KF5Kirigami2Macros.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} go-next go-previous go-up handle-sort overflow-menu-left overflow-menu-right go-next-symbolic go-next-symbolic-rtl go-previous-symbolic go-previous-symbolic-rtl overflow-menu user view-left-new view-right-new view-left-close view-right-close dialog-positive dialog-warning dialog-error dialog-information dialog-close globe mail-sent tools-report-bug)
0015
0016 function(_find_breeze_icon icon varName)
0017 #HACKY
0018 SET(path "")
0019 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/48/${icon}.svg )
0020
0021 #search in other sizes as well
0022 if (path STREQUAL "")
0023 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/32/${icon}.svg )
0024 if (path STREQUAL "")
0025 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/22/${icon}.svg )
0026 if (path STREQUAL "")
0027 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/16/${icon}.svg )
0028 endif()
0029 endif()
0030 endif()
0031 if (path STREQUAL "")
0032 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/symbolic/${icon}.svg )
0033 endif()
0034 if (path STREQUAL "")
0035 return()
0036 endif()
0037
0038 list(LENGTH path _count_paths)
0039 if (_count_paths GREATER 1)
0040 message(WARNING "Found more than one version of '${icon}': ${path}")
0041 endif()
0042 list(GET path 0 path)
0043 get_filename_component(path "${path}" REALPATH)
0044
0045 SET(${varName} ${path} PARENT_SCOPE)
0046 endfunction()
0047
0048 if (BREEZEICONS_DIR AND NOT EXISTS ${BREEZEICONS_DIR})
0049 message(FATAL_ERROR "BREEZEICONS_DIR variable does not point to existing dir: \"${BREEZEICONS_DIR}\"")
0050 endif()
0051
0052 set(_BREEZEICONS_DIR "${BREEZEICONS_DIR}")
0053
0054 #FIXME: this is a terrible hack
0055 if(NOT _BREEZEICONS_DIR)
0056 set(_BREEZEICONS_DIR "${CMAKE_BINARY_DIR}/breeze-icons/src/breeze-icons")
0057
0058 # replacement for ExternalProject_Add not yet working
0059 # first time config?
0060 if (NOT EXISTS ${_BREEZEICONS_DIR})
0061 find_package(Git)
0062 execute_process(COMMAND ${GIT_EXECUTABLE} clone --depth 1 https://invent.kde.org/frameworks/breeze-icons.git ${_BREEZEICONS_DIR})
0063 endif()
0064
0065 # external projects are only pulled at make time, not configure time
0066 # so this is too late to work with the _find_breeze_icon() method
0067 # _find_breeze_icon() would need to be turned into a target/command
0068 if (FALSE)
0069 ExternalProject_Add(
0070 breeze-icons
0071 PREFIX breeze-icons
0072 GIT_REPOSITORY https://invent.kde.org/frameworks/breeze-icons.git
0073 CONFIGURE_COMMAND ""
0074 BUILD_COMMAND ""
0075 INSTALL_COMMAND ""
0076 LOG_DOWNLOAD ON
0077 )
0078 endif()
0079 endif()
0080
0081 message (STATUS "Found external breeze icons:")
0082 foreach(_iconName ${ARG_ICONS})
0083 set(_iconPath "")
0084 _find_breeze_icon(${_iconName} _iconPath)
0085 message (STATUS ${_iconPath})
0086 if (EXISTS ${_iconPath})
0087 install(FILES ${_iconPath} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/kirigami.2/icons/ RENAME ${_iconName}.svg)
0088 endif()
0089 endforeach()
0090
0091 #generate an index.theme that qiconloader can understand
0092 file(WRITE ${CMAKE_BINARY_DIR}/index.theme "[Icon Theme]\nName=Breeze\nDirectories=icons\n[icons]\nSize=32\nType=Scalable")
0093 install(FILES ${CMAKE_BINARY_DIR}/index.theme DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/kirigami.2/)
0094 endfunction()
0095