Allow including icon themes under another name
This commit is contained in:
parent
3ea0e47a53
commit
924c3b9f61
|
@ -21,14 +21,14 @@ if(DBUS_FILES)
|
|||
list(APPEND QT_MODULES DBus)
|
||||
endif()
|
||||
|
||||
# determine Qt linkage
|
||||
set(QT_LINKAGE "AUTO_LINKAGE")
|
||||
|
||||
if(BUILD_STATIC_LIBS AND BUILD_SHARED_LIBS)
|
||||
message(FATAL_ERROR "When using Qt/KDE modules it is not possible to build shared and static libraries at the same time.")
|
||||
endif()
|
||||
|
||||
# set USE_STATIC_QT_BUILD variable to ON to use static Qt, this only works with patched mingw-w64-qt5-* packages found in my PKGBUILDs repository
|
||||
# in any other environment you must ensure that the available Qt version is in accordance to the specified STATIC_LINKAGE/STATIC_LIBRARY_LINKAGE options
|
||||
# set USE_STATIC_QT_BUILD variable to ON to use static Qt
|
||||
# this only works with patched mingw-w64-qt5-* packages found in my PKGBUILDs repository
|
||||
# in any other environment you must ensure that the available Qt version is in accordance with the specified STATIC_LINKAGE/STATIC_LIBRARY_LINKAGE options
|
||||
if(BUILD_STATIC_LIBS OR ("${QT_LINKAGE}" STREQUAL "AUTO_LINKAGE" AND ((STATIC_LINKAGE AND "${META_PROJECT_TYPE}" STREQUAL "application") OR (STATIC_LIBRARY_LINKAGE AND ("${META_PROJECT_TYPE}" STREQUAL "" OR "${META_PROJECT_TYPE}" STREQUAL "library")))) OR ("${QT_LINKAGE}" STREQUAL "STATIC"))
|
||||
set(USE_STATIC_QT_BUILD ON)
|
||||
message(STATUS "Linking ${META_PROJECT_NAME} statically against Qt 5.")
|
||||
|
@ -49,7 +49,7 @@ foreach(KF_MODULE ${KF_MODULES})
|
|||
list(APPEND STATIC_LIBRARIES KF5::${KF_MODULE})
|
||||
endforeach()
|
||||
|
||||
# include further plugins statically
|
||||
# include plugins statically
|
||||
if(USE_STATIC_QT_BUILD)
|
||||
if(WIDGETS_GUI OR QUICK_GUI)
|
||||
if(WIN32)
|
||||
|
@ -152,6 +152,7 @@ if(REQUIRED_ICONS)
|
|||
set(ICON_THEME_FILES)
|
||||
set(ICON_SEARCH_PATHS)
|
||||
if(CMAKE_FIND_ROOT_PATH)
|
||||
# find icons from the regular prefix when cross-compiling
|
||||
list(APPEND ICON_SEARCH_PATHS "${CMAKE_FIND_ROOT_PATH}/share/icons")
|
||||
endif()
|
||||
list(APPEND ICON_SEARCH_PATHS "${CMAKE_INSTALL_PREFIX}/share/icons")
|
||||
|
@ -161,15 +162,27 @@ if(REQUIRED_ICONS)
|
|||
file(REMOVE_RECURSE "${BUILDIN_ICONS_DIR}")
|
||||
file(MAKE_DIRECTORY "${BUILDIN_ICONS_DIR}")
|
||||
foreach(ICON_THEME ${BUILTIN_ICON_THEMES})
|
||||
string(REGEX MATCHALL "([^:]+|[^:]+$)" ICON_THEME_PARTS "${ICON_THEME}")
|
||||
list(LENGTH ICON_THEME_PARTS ICON_THEME_PARTS_LENGTH)
|
||||
if("${ICON_THEME_PARTS_LENGTH}" STREQUAL 2)
|
||||
list(GET ICON_THEME_PARTS 0 ICON_THEME)
|
||||
list(GET ICON_THEME_PARTS 1 NEW_ICON_THEME_NAME)
|
||||
else()
|
||||
set(NEW_ICON_THEME_NAME "${ICON_THEME}")
|
||||
endif()
|
||||
foreach(ICON_SEARCH_PATH ${ICON_SEARCH_PATHS})
|
||||
set(ICON_THEME_PATH "${ICON_SEARCH_PATH}/${ICON_THEME}")
|
||||
set(NEW_ICON_THEME_PATH "${ICON_SEARCH_PATH}/${ICON_THEME}")
|
||||
if(IS_DIRECTORY "${ICON_THEME_PATH}")
|
||||
# find index files
|
||||
file(GLOB GLOBBED_ICON_THEME_INDEX_FILES LIST_DIRECTORIES false "${ICON_THEME_PATH}/index.theme" "${ICON_THEME_PATH}/icon-theme.cache")
|
||||
# make the first specified built-in the default theme
|
||||
if(NOT EXISTS "${DEFAULT_THEME_INDEX_FILE}")
|
||||
file(MAKE_DIRECTORY "${BUILDIN_ICONS_DIR}/default")
|
||||
file(WRITE "${DEFAULT_THEME_INDEX_FILE}" "[Icon Theme]\nInherits=${ICON_THEME}")
|
||||
file(WRITE "${DEFAULT_THEME_INDEX_FILE}" "[Icon Theme]\nInherits=${NEW_ICON_THEME_NAME}")
|
||||
list(APPEND ICON_THEME_FILES "<file>default/index.theme</file>")
|
||||
endif()
|
||||
# find required icons
|
||||
set(GLOB_PATTERNS)
|
||||
foreach(REQUIRED_ICON ${REQUIRED_ICONS})
|
||||
list(APPEND GLOB_PATTERNS
|
||||
|
@ -180,23 +193,33 @@ if(REQUIRED_ICONS)
|
|||
)
|
||||
endforeach()
|
||||
file(GLOB_RECURSE GLOBBED_ICON_THEME_FILES LIST_DIRECTORIES false ${GLOB_PATTERNS})
|
||||
# make temporary copy of required icons and create resource list for Qt
|
||||
foreach(ICON_THEME_FILE ${GLOBBED_ICON_THEME_INDEX_FILES} ${GLOBBED_ICON_THEME_FILES})
|
||||
#message(STATUS "relpath: ${ICON_THEME_FILE_RELATIVE_PATH}, new relpath: ${NEW_ICON_THEME_FILE_RELATIVE_PATH}")
|
||||
# resolve symlinks (use
|
||||
if(IS_SYMLINK "${ICON_THEME_FILE}")
|
||||
string(REGEX REPLACE "^${ICON_SEARCH_PATH}/" "" ICON_THEME_FILE_RELATIVE_PATH "${ICON_THEME_FILE}")
|
||||
set(ICON_THEME_FILE_ALIAS " alias=\"${ICON_THEME_FILE_RELATIVE_PATH}\"")
|
||||
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_RELATIVE_PATH "${ICON_THEME_FILE_RELATIVE_PATH}")
|
||||
set(ICON_THEME_FILE_ALIAS " alias=\"${NEW_ICON_THEME_FILE_RELATIVE_PATH}\"")
|
||||
get_filename_component(ICON_THEME_FILE "${ICON_THEME_FILE}" REALPATH)
|
||||
else()
|
||||
unset(ICON_THEME_FILE_ALIAS)
|
||||
endif()
|
||||
string(REGEX REPLACE "^${ICON_SEARCH_PATH}/" "" ICON_THEME_FILE_RELATIVE_PATH "${ICON_THEME_FILE}")
|
||||
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_RELATIVE_PATH "${ICON_THEME_FILE_RELATIVE_PATH}")
|
||||
get_filename_component(ICON_THEME_FILE_DIR "${ICON_THEME_FILE_RELATIVE_PATH}" DIRECTORY)
|
||||
file(MAKE_DIRECTORY "${BUILDIN_ICONS_DIR}/${ICON_THEME_FILE_DIR}")
|
||||
file(COPY "${ICON_THEME_FILE}" DESTINATION "${BUILDIN_ICONS_DIR}/${ICON_THEME_FILE_DIR}")
|
||||
list(APPEND ICON_THEME_FILES "<file${ICON_THEME_FILE_ALIAS}>${ICON_THEME_FILE_RELATIVE_PATH}</file>")
|
||||
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_DIR "${ICON_THEME_FILE_DIR}")
|
||||
file(MAKE_DIRECTORY "${BUILDIN_ICONS_DIR}/${NEW_ICON_THEME_FILE_DIR}")
|
||||
file(COPY "${ICON_THEME_FILE}" DESTINATION "${BUILDIN_ICONS_DIR}/${NEW_ICON_THEME_FILE_DIR}")
|
||||
list(APPEND ICON_THEME_FILES "<file${ICON_THEME_FILE_ALIAS}>${NEW_ICON_THEME_FILE_RELATIVE_PATH}</file>")
|
||||
endforeach()
|
||||
break()
|
||||
endif()
|
||||
unset(ICON_THEME_PATH)
|
||||
endforeach()
|
||||
if(NOT ICON_THEME_PATH)
|
||||
message(FATAL_ERROR "The specified icon theme \"${ICON_THEME}\" coud not be found.")
|
||||
endif()
|
||||
endforeach()
|
||||
set(BUILTIN_ICON_THEMES_QRC_FILE "${CMAKE_CURRENT_BINARY_DIR}/icons/builtinicons.qrc")
|
||||
list(REMOVE_DUPLICATES ICON_THEME_FILES)
|
||||
|
|
Loading…
Reference in New Issue