Warning, /multimedia/kid3/src/plugins/kid3qml/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 set(plugin_NAME Kid3Qml)
0002 
0003 string(TOLOWER ${plugin_NAME} plugin_TARGET)
0004 
0005 if(APPLE)
0006   # The extension must be dylib, not so.
0007   add_library(${plugin_TARGET} SHARED kid3qmlplugin.cpp)
0008 else()
0009   add_library(${plugin_TARGET} MODULE kid3qmlplugin.cpp)
0010 endif()
0011 
0012 qt_wrap_cpp(plugin_GEN_MOC_SRCS
0013   kid3qmlplugin.h
0014   scriptutils.h
0015   configobjects.h
0016   checkablelistmodel.h
0017   TARGET ${plugin_TARGET}
0018 )
0019 
0020 target_sources(${plugin_TARGET} PRIVATE
0021   qmlimageprovider.cpp
0022   scriptutils.cpp
0023   configobjects.cpp
0024   checkablelistmodel.cpp
0025   ${plugin_GEN_MOC_SRCS}
0026   Kid3Script.qml
0027   "${kid3_plugins_BINARY_DIR}/imports/Kid3/Kid3Script.qml"
0028 )
0029 
0030 target_link_libraries(${plugin_TARGET} kid3-core kid3-gui Qt${QT_VERSION_MAJOR}::Quick Kid3Plugin)
0031 
0032 if(NOT HAVE_QMLDIR_IN_QRC)
0033   if(APPLE)
0034     # Folders containing a dot will cause Apple's code signing to fail.
0035     # In order to still have QtQuick.2 available, the QML plugins are put into
0036     # the Resources folder. But binary code in Resources is prohibited,
0037     # therefore the libraries are in the Plugins folder with symlinks from
0038     # the QML imports folders.
0039     # https://www.qt.io/blog/2014/10/29/an-update-on-os-x-code-signing
0040     install(TARGETS ${plugin_TARGET}
0041       LIBRARY DESTINATION ${WITH_PLUGINSDIR}
0042       RUNTIME DESTINATION ${WITH_PLUGINSDIR})
0043   else()
0044     install(TARGETS ${plugin_TARGET}
0045       LIBRARY DESTINATION ${WITH_PLUGINSDIR}/imports/Kid3
0046       RUNTIME DESTINATION ${WITH_PLUGINSDIR}/imports/Kid3)
0047     set_target_properties(
0048       ${plugin_TARGET} PROPERTIES
0049       RUNTIME_OUTPUT_DIRECTORY ${kid3_plugins_BINARY_DIR}/imports/Kid3
0050       LIBRARY_OUTPUT_DIRECTORY ${kid3_plugins_BINARY_DIR}/imports/Kid3
0051     )
0052   endif()
0053 else()
0054   install(TARGETS ${plugin_TARGET}
0055     LIBRARY DESTINATION ${WITH_BINDIR}
0056     RUNTIME DESTINATION ${WITH_BINDIR})
0057   file(MAKE_DIRECTORY "${kid3_plugins_BINARY_DIR}/imports/Kid3")
0058 endif()
0059 if(ANDROID)
0060   # Fix "-soname: must take a non-empty argument" error with CMake >= 3.2.
0061   # https://stackoverflow.com/questions/26841603/arm-linux-androideabi-bin-ld-fatal-error-soname-must-take-a-non-empty-argume
0062   string(REPLACE "<CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME>" ""
0063          CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}")
0064 endif()
0065 if(LINUX_SELF_CONTAINED)
0066   # Just to keep CMake quiet, not needed at run time.
0067   set_target_properties(
0068     ${plugin_TARGET} PROPERTIES INSTALL_RPATH "\$ORIGIN/../../..")
0069 endif()
0070 
0071 if(WIN32 AND NOT MSVC)
0072   set(_qmldirPluginName libkid3qml)
0073 else()
0074   set(_qmldirPluginName kid3qml)
0075 endif()
0076 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qmldir.in
0077                "${kid3_plugins_BINARY_DIR}/imports/Kid3/qmldir"
0078                @ONLY)
0079 add_custom_command(OUTPUT "${kid3_plugins_BINARY_DIR}/imports/Kid3/Kid3Script.qml"
0080   COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Kid3Script.qml "${kid3_plugins_BINARY_DIR}/imports/Kid3/"
0081   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Kid3Script.qml
0082   WORKING_DIRECTORY "${kid3_plugins_BINARY_DIR}/imports/Kid3"
0083 )
0084 
0085 if(APPLE)
0086   install(FILES "${kid3_plugins_BINARY_DIR}/imports/Kid3/qmldir"
0087                 "${kid3_plugins_BINARY_DIR}/imports/Kid3/Kid3Script.qml"
0088           DESTINATION ${WITH_QMLDIR}/imports/Kid3)
0089 else()
0090   install(FILES "${kid3_plugins_BINARY_DIR}/imports/Kid3/qmldir"
0091                 "${kid3_plugins_BINARY_DIR}/imports/Kid3/Kid3Script.qml"
0092           DESTINATION ${WITH_PLUGINSDIR}/imports/Kid3)
0093 endif()
0094 if(NOT WIN32 AND NOT ANDROID AND NOT APPLE)
0095   if(TARGET Qt${QT_VERSION_MAJOR}::qmake)
0096     get_target_property(_qmakeLocation Qt${QT_VERSION_MAJOR}::qmake LOCATION)
0097   endif()
0098   execute_process(COMMAND "${_qmakeLocation}" -query QT_INSTALL_BINS
0099     OUTPUT_VARIABLE _qtInstallBins OUTPUT_STRIP_TRAILING_WHITESPACE)
0100   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/runqmlplugindump.cmake.in
0101                  ${CMAKE_CURRENT_BINARY_DIR}/runqmlplugindump.cmake
0102                  @ONLY)
0103   add_custom_command(OUTPUT "${kid3_plugins_BINARY_DIR}/imports/Kid3/plugins.qmltypes"
0104     COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/runqmlplugindump.cmake
0105     DEPENDS ${plugin_TARGET}
0106     WORKING_DIRECTORY "${kid3_plugins_BINARY_DIR}/imports/Kid3")
0107   add_custom_target(plugins_qmltypes ALL
0108     DEPENDS "${kid3_plugins_BINARY_DIR}/imports/Kid3/plugins.qmltypes")
0109   add_dependencies(plugins_qmltypes ${plugin_TARGET})
0110 
0111   install(FILES "${kid3_plugins_BINARY_DIR}/imports/Kid3/plugins.qmltypes"
0112           DESTINATION ${WITH_PLUGINSDIR}/imports/Kid3 OPTIONAL)
0113 endif()
0114 
0115 if(WIN32 OR APPLE OR LINUX_SELF_CONTAINED)
0116   # Install essential QML modules.
0117   if(TARGET Qt${QT_VERSION_MAJOR}::qmake)
0118     get_target_property(QT_QML_DIR Qt${QT_VERSION_MAJOR}::qmake LOCATION)
0119   endif()
0120   get_filename_component(QT_QML_DIR ${QT_QML_DIR} PATH)
0121   get_filename_component(QT_QML_DIR ${QT_QML_DIR} PATH)
0122   set(QT_QML_DIR ${QT_QML_DIR}/qml)
0123   # With Qt from Homebrew, the QML imports cannot be found from the qmake location,
0124   # try with the qtquick2plugin location.
0125   if(NOT EXISTS ${QT_QML_DIR}/QtQuick/Layouts)
0126     if(TARGET Qt${QT_VERSION_MAJOR}::qtquick2plugin)
0127       get_target_property(QT_QML_DIR Qt${QT_VERSION_MAJOR}::qtquick2plugin LOCATION)
0128       get_filename_component(QT_QML_DIR ${QT_QML_DIR} PATH)
0129       get_filename_component(QT_QML_DIR ${QT_QML_DIR} PATH)
0130     endif()
0131   endif()
0132   if(APPLE)
0133     if(QT_VERSION VERSION_LESS 6.0)
0134       install(FILES "${QT_QML_DIR}/QtQuick.2/qmldir"
0135         DESTINATION "${WITH_QMLDIR}/imports/QtQuick.2")
0136       install(FILES "${QT_QML_DIR}/QtQuick/Layouts/qmldir"
0137         DESTINATION "${WITH_QMLDIR}/imports/QtQuick/Layouts")
0138       install(FILES "${QT_QML_DIR}/QtQuick.2/libqtquick2plugin.dylib"
0139                     "${QT_QML_DIR}/QtQuick/Layouts/libqquicklayoutsplugin.dylib"
0140         DESTINATION "${WITH_PLUGINSDIR}")
0141       install(CODE
0142         "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0143           \"../../../../PlugIns/libkid3qml.dylib\"
0144           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/Kid3/libkid3qml.dylib\")
0145         execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0146           \"../../../../PlugIns/libqtquick2plugin.dylib\"
0147           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/QtQuick.2/libqtquick2plugin.dylib\")
0148         execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0149           \"../../../../../PlugIns/libqquicklayoutsplugin.dylib\"
0150           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/QtQuick/Layouts/libqquicklayoutsplugin.dylib\")
0151         ")
0152     else()
0153       install(FILES "${QT_QML_DIR}/QtQuick/qmldir"
0154         DESTINATION "${WITH_QMLDIR}/imports/QtQuick")
0155       install(FILES "${QT_QML_DIR}/QtQuick/Layouts/qmldir"
0156         DESTINATION "${WITH_QMLDIR}/imports/QtQuick/Layouts")
0157       install(FILES "${QT_QML_DIR}/QtQml/WorkerScript/qmldir"
0158         DESTINATION "${WITH_QMLDIR}/imports/QtQml/WorkerScript")
0159       install(FILES "${QT_QML_DIR}/QtQuick/libqtquick2plugin.dylib"
0160                     "${QT_QML_DIR}/QtQuick/Layouts/libqquicklayoutsplugin.dylib"
0161                     "${QT_QML_DIR}/QtQml/WorkerScript/libworkerscriptplugin.dylib"
0162         DESTINATION "${WITH_PLUGINSDIR}")
0163       install(CODE
0164         "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0165           \"../../../../PlugIns/libkid3qml.dylib\"
0166           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/Kid3/libkid3qml.dylib\")
0167         execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0168           \"../../../../PlugIns/libqtquick2plugin.dylib\"
0169           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/QtQuick/libqtquick2plugin.dylib\")
0170         execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0171           \"../../../../../PlugIns/libqquicklayoutsplugin.dylib\"
0172           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/QtQuick/Layouts/libqquicklayoutsplugin.dylib\")
0173         execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
0174           \"../../../../../PlugIns/libworkerscriptplugin.dylib\"
0175           \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WITH_QMLDIR}/imports/QtQml/WorkerScript/libworkerscriptplugin.dylib\")
0176         ")
0177     endif()
0178   else()
0179     if(QT_VERSION VERSION_LESS 6.0)
0180       install(DIRECTORY "${QT_QML_DIR}/QtQuick.2"
0181         DESTINATION "${WITH_PLUGINSDIR}/imports"
0182         FILES_MATCHING PATTERN "*plugin${CMAKE_SHARED_LIBRARY_SUFFIX}"
0183                        PATTERN "qmldir"
0184                        PATTERN "*.dSYM" EXCLUDE)
0185     else()
0186       if(WIN32)
0187         install(FILES "${QT_QML_DIR}/QtQuick/qtquick2plugin${CMAKE_SHARED_LIBRARY_SUFFIX}"
0188           DESTINATION "${WITH_PLUGINSDIR}/imports/QtQuick")
0189       else()
0190         install(FILES "${QT_QML_DIR}/QtQuick/${CMAKE_SHARED_LIBRARY_PREFIX}qtquick2plugin${CMAKE_SHARED_LIBRARY_SUFFIX}"
0191           DESTINATION "${WITH_PLUGINSDIR}/imports/QtQuick")
0192       endif()
0193       install(FILES "${QT_QML_DIR}/QtQuick/qmldir"
0194         DESTINATION "${WITH_PLUGINSDIR}/imports/QtQuick")
0195       install(DIRECTORY "${QT_QML_DIR}/QtQml/WorkerScript"
0196         DESTINATION "${WITH_PLUGINSDIR}/imports/QtQml"
0197         FILES_MATCHING PATTERN "*plugin${CMAKE_SHARED_LIBRARY_SUFFIX}"
0198                        PATTERN "qmldir"
0199                        PATTERN "*.dSYM" EXCLUDE)
0200     endif()
0201     install(DIRECTORY "${QT_QML_DIR}/QtQuick/Layouts"
0202       DESTINATION "${WITH_PLUGINSDIR}/imports/QtQuick"
0203       FILES_MATCHING PATTERN "*plugin${CMAKE_SHARED_LIBRARY_SUFFIX}"
0204                      PATTERN "qmldir"
0205                      PATTERN "*.dSYM" EXCLUDE)
0206   endif()
0207 endif()