Warning, /education/gcompris/cmake/qt_helper.cmake is written in an unsupported language. File is not indexed.

0001 #=============================================================================
0002 # SPDX-FileCopyrightText: 2014 Thibaut ROMAIN <thibrom@gmail.com>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005 #=============================================================================
0006 function(getQtPluginPaths _plugin_target _absolute_path _subdir _file)
0007   getQtPluginsPath(_qt_plugins_path)
0008   get_target_property(_plugin_path ${_plugin_target} LOCATION)
0009   if(NOT _plugin_path)
0010     message(FATAL_ERROR "Could not find ${_plugin_target} plugin path")
0011   endif()
0012   get_filename_component(_plugin_file ${_plugin_path} NAME)
0013   get_filename_component(_plugin_dir ${_plugin_path} PATH)
0014   file(RELATIVE_PATH _plugin_subdir ${_qt_plugins_path} ${_plugin_dir})
0015   set(${_absolute_path} ${_plugin_path} PARENT_SCOPE)
0016   set(${_subdir} ${_plugin_subdir} PARENT_SCOPE)
0017   set(${_file} ${_plugin_file} PARENT_SCOPE)
0018 endfunction()
0019 
0020 # Determine Qt5's plugin-path deriving from lib-dir and trying different
0021 # locations corresponding to different directory layouts, e.g.:
0022 #
0023 # Debian:
0024 #   /usr/lib/i386-linux-gnu/libQt5Qml.so.5.4.1
0025 #   /usr/lib/i386-linux-gnu/qt5/plugins/
0026 # Opensuse:
0027 #   /usr/lib64/libQt5Multimedia.so.5
0028 #   /usr/lib64/qt5/plugins/
0029 # Qt installer:
0030 #   /opt/Qt5.5.1/5.5/gcc/lib/libQt5Qml.so.5.5.1
0031 #   /opt/Qt5.5.1/5.5/gcc/plugins/
0032 #
0033 # The qml/-dir is always a sibling of the plugins/ dir.
0034 function(getQtPluginsPath _path)
0035   get_target_property(_lib_file Qt5::Qml LOCATION)
0036   get_filename_component(_lib_dir ${_lib_file} PATH)
0037   # try $_lib_dir/qt5/plugins (Debian/Opensuse)
0038   set(_plugin_root ${_lib_dir}/qt5/plugins)
0039   if(NOT IS_DIRECTORY ${_plugin_root})
0040     # try $_lib_dir/../plugins (Qt installer)
0041     get_filename_component(_lib_dir_base ${_lib_dir} PATH)
0042     if(APPLE)
0043       set(_plugin_root ${_lib_dir_base}/../plugins)
0044     else()
0045       set(_plugin_root ${_lib_dir_base}/plugins)
0046     endif()
0047   endif()
0048   set(${_path} ${_plugin_root} PARENT_SCOPE)
0049 endfunction()
0050 
0051 function(getQtQmlPath _path)
0052   getQtPluginsPath(_qt_plugins_path)
0053   get_filename_component(_root ${_qt_plugins_path} PATH)
0054   set(${_path} ${_root}/qml PARENT_SCOPE)
0055 endfunction()
0056 
0057 function(installQtPlugin _plugin _dest_dir _lib)
0058   getQtPluginPaths(${_plugin} _absolute_path _plugin_subdir _plugin_file)
0059   #needed to build with msys2
0060   if(MINGW)
0061     string(REGEX REPLACE "share/qt5/" "" _plugin_subdir ${_plugin_subdir})
0062   endif()
0063   install(FILES ${_absolute_path} DESTINATION ${_dest_dir}/${_plugin_subdir})
0064   set(_lib "\${CMAKE_INSTALL_PREFIX}/${_dest_dir}/${_plugin_subdir}/${_plugin_file}" PARENT_SCOPE)
0065 endfunction()
0066 
0067 function(installQtPlugin2 _plugin _dest_dir _lib)
0068   get_filename_component(_plugin_file ${_plugin} NAME)
0069   set(_ext ${CMAKE_SHARED_LIBRARY_SUFFIX})
0070   get_filename_component(_plugin_subdir ${_plugin} PATH)
0071   get_filename_component(_plugin_subdir_root ${_plugin_subdir} PATH)
0072   getQtPluginsPath(_qt_plugin_path)
0073   install(DIRECTORY ${_qt_plugin_path}/${_plugin_subdir} DESTINATION ${_dest_dir}/${_plugin_subdir_root})
0074   if(CMAKE_HOST_WIN32)
0075     set(_dbg_suffix "d")
0076   else()
0077     set(_dbg_suffix "_debug")
0078   endif()
0079   set(_install_path \${CMAKE_INSTALL_PREFIX}/${_dest_dir}/${_plugin_subdir})
0080   if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
0081     install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_ext}\")")
0082     set(_plugin_file ${_plugin_file}${_dbg_suffix}${_ext})
0083   else()
0084     install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_dbg_suffix}${_ext}\")")
0085     set(_plugin_file ${_plugin_file}${_ext})
0086   endif()
0087   set(_lib "${_install_path}/${_plugin_file}" PARENT_SCOPE)
0088 endfunction()
0089 
0090 function(installQmlPlugin _plugin _dest_dir _lib)
0091   get_filename_component(_plugin_file ${_plugin} NAME)
0092   set(_ext ${CMAKE_SHARED_LIBRARY_SUFFIX})
0093   get_filename_component(_qml_subdir ${_plugin} PATH)
0094   get_filename_component(_qml_subdir_root ${_qml_subdir} PATH)
0095   getQtQmlPath(_qt_qml_path)
0096   install(DIRECTORY ${_qt_qml_path}/${_qml_subdir} DESTINATION ${_dest_dir}/${_qml_subdir_root})
0097   if(CMAKE_HOST_WIN32)
0098     set(_dbg_suffix "d")
0099   else()
0100     set(_dbg_suffix "_debug")
0101   endif()
0102   set(_install_path \${CMAKE_INSTALL_PREFIX}/${_dest_dir}/${_qml_subdir})
0103   if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
0104     install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_ext}\")")
0105     set(_plugin_file ${_plugin_file}${_dbg_suffix}${_ext})
0106   else()
0107     install(CODE "file(REMOVE \"${_install_path}/${_plugin_file}${_dbg_suffix}${_ext}\")")
0108     set(_plugin_file ${_plugin_file}${_ext})
0109   endif()
0110   set(_lib "${_install_path}/${_plugin_file}" PARENT_SCOPE)
0111 endfunction()