telldus/telldus-gui/3rdparty/qt-components-desktop.cmake
2013-10-10 16:10:33 +02:00

98 lines
3.2 KiB
CMake

FIND_PACKAGE( Qt4 REQUIRED )
SET(BASE_PATH "${CMAKE_SOURCE_DIR}/3rdparty/qt-components-desktop")
FILE(GLOB SRCS ${BASE_PATH}/src/*.cpp)
FILE(GLOB HDRS ${BASE_PATH}/src/*.h)
FILE(GLOB_RECURSE QML ${BASE_PATH}/components/*.qml)
FILE(GLOB_RECURSE JS ${BASE_PATH}/components/*.js)
FILE(GLOB_RECURSE PNG ${BASE_PATH}/components/*.png)
FILE(GLOB_RECURSE QMLDIR ${BASE_PATH}/components/qmldir)
SET(EXTRA_FILES ${QML} ${JS} ${PNG} ${QMLDIR})
IF (QT_COMPONENTS_OUTPUT_DIR)
SET(QT_COMPONENTS_OUTPUT_DIR "${QT_COMPONENTS_OUTPUT_DIR}/QtDesktop")
ELSE()
SET(QT_COMPONENTS_OUTPUT_DIR "QtDesktop")
ENDIF()
STRING(LENGTH "${BASE_PATH}/components" BASE_LENGTH)
FOREACH(_FILE ${EXTRA_FILES})
STRING(LENGTH ${_FILE} _FILE_LENGTH)
MATH(EXPR _TOP_LENGTH "${_FILE_LENGTH}-${BASE_LENGTH}")
STRING(SUBSTRING ${_FILE} ${BASE_LENGTH} ${_TOP_LENGTH} _OUT_FILE)
GET_FILENAME_COMPONENT(_FILENAME ${_FILE} NAME)
SET(_OUTFILEPATH ${QT_COMPONENTS_OUTPUT_DIR}${_OUT_FILE})
LIST(APPEND SRCS ${_OUTFILEPATH})
ADD_CUSTOM_COMMAND(
OUTPUT ${_OUTFILEPATH}
DEPENDS ${_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${_FILE} ${_OUTFILEPATH}
COMMENT "Copy ${_FILENAME} to destination"
)
ENDFOREACH(_FILE)
QT4_WRAP_CPP( MOC_SRCS ${HDRS} )
QT4_AUTOMOC ( ${SRCS} )
SET(LIBRARIES ${QT_LIBRARIES})
IF (APPLE)
FIND_LIBRARY(CARBON_LIBRARY Carbon)
LIST(APPEND LIBRARIES ${CARBON_LIBRARY})
ENDIF ()
ADD_LIBRARY(styleplugin SHARED
${SRCS}
${MOC_SRCS}
)
TARGET_LINK_LIBRARIES( styleplugin ${LIBRARIES} )
IF (WIN32)
SET_TARGET_PROPERTIES(styleplugin PROPERTIES
PREFIX "Plugins/declarative/QtDesktop/plugin/"
)
ELSEIF(APPLE)
ADD_CUSTOM_COMMAND(TARGET styleplugin POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${QT_COMPONENTS_OUTPUT_DIR}/plugin/
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libstyleplugin.dylib
${QT_COMPONENTS_OUTPUT_DIR}/plugin/
COMMENT "Copy plugin to destination bundle"
)
INSTALL(CODE "
GET_FILENAME_COMPONENT(DESTDIR \"\$ENV{DESTDIR}\" ABSOLUTE)
SET(app \"\${DESTDIR}/Applications/TelldusCenter.app\")
GET_BUNDLE_AND_EXECUTABLE(\"\${app}\" bundle exe valid)
GET_FILENAME_COMPONENT(exedir \"\${exe}\" PATH)
SET(plugin \"\${bundle}/Contents/Plugins/declarative/QtDesktop/plugin/libstyleplugin${CMAKE_SHARED_LIBRARY_SUFFIX}\")
GET_ITEM_KEY(\"\${plugin}\" pkey)
SET(prereqs \"\")
GET_PREREQUISITES(\${plugin} prereqs 1 0 \"\${exe}\" \"\${bundle}/Contents/Frameworks/\")
FOREACH(pr \${prereqs})
GET_ITEM_KEY(\"\${pr}\" rkey)
#Check to see if this is ourself
IF (NOT \${pkey} STREQUAL \${rkey})
SET(kv \"\")
SET_BUNDLE_KEY_VALUES(kv \"\${pr}\" \"\${pr}\" \"\${exedir}\" \"\${bundle}/Contents/Frameworks/\" 1)
IF (NOT EXISTS \"\${\${kv}_RESOLVED_EMBEDDED_ITEM}\")
COPY_RESOLVED_FRAMEWORK_INTO_BUNDLE(\"\${\${kv}_RESOLVED_ITEM}\" \"\${\${kv}_RESOLVED_EMBEDDED_ITEM}\")
ENDIF ()
EXECUTE_PROCESS(COMMAND install_name_tool
-change \"\${pr}\" \"\${\${rkey}_EMBEDDED_ITEM}\" \"\${plugin}\"
)
ENDIF ()
ENDFOREACH()
")
ELSE()
SET_TARGET_PROPERTIES(styleplugin PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${QT_COMPONENTS_OUTPUT_DIR}/plugin
)
ENDIF()
IF(UNIX AND NOT APPLE)
INSTALL(DIRECTORY "${CMAKE_BINARY_DIR}/TelldusCenter/Plugins/declarative" DESTINATION "${PLUGIN_LIB_FULL_PATH}")
ENDIF()