telldus/telldus-gui/Plugins/TelldusCenterPlugin.cmake
2013-10-10 16:11:24 +02:00

159 lines
5 KiB
CMake

FIND_PACKAGE( Qt4 REQUIRED )
SET(QT_USE_QTSCRIPT TRUE)
INCLUDE( ${QT_USE_FILE} )
FIND_PACKAGE( SignTool REQUIRED )
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
QT4_WRAP_CPP( Plugin_MOC_SRCS ${Plugin_MOC_HDRS} )
QT4_AUTOMOC ( ${Plugin_SRCS} )
IF(Plugin_RESOURCES)
QT4_ADD_RESOURCES(Plugin_RSRCS ${Plugin_RESOURCES})
ENDIF(Plugin_RESOURCES)
SET( Plugin_LIBRARIES
${Plugin_LIBRARIES}
${QT_LIBRARIES}
)
ADD_DEFINITIONS(${QT_DEFINITIONS})
ADD_DEFINITIONS(-DQT_PLUGIN)
ADD_DEFINITIONS(-DQT_NO_DEBUG)
ADD_DEFINITIONS(-DQT_SHARED)
#SET( LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH/Plugins} )
FOREACH(lang ${LANGUAGES})
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/translation_${lang}.ts" OR UPDATE_TRANSLATIONS)
LIST(APPEND Plugin_TS "translation_${lang}.ts")
ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/translation_${lang}.ts" OR UPDATE_TRANSLATIONS)
ENDFOREACH(lang)
SET(translation_sources ${Plugin_SRCS})
IF(Plugin_PATH)
STRING(REPLACE "." "/"
Plugin_PATH_relative ${Plugin_PATH}
)
IF (APPLE)
SET(Plugin_PATH "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/TelldusCenter.app/Contents/Plugins/script/${Plugin_PATH_relative}")
ELSEIF (WIN32)
SET(Plugin_PATH "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/Plugins/script/${Plugin_PATH_relative}")
ELSE (APPLE)
SET(Plugin_PATH "${CMAKE_BINARY_DIR}/TelldusCenter/Plugins/script/${Plugin_PATH_relative}")
ENDIF (APPLE)
LIST(APPEND translation_sources
"${CMAKE_CURRENT_SOURCE_DIR}/__init__.js"
)
LIST(APPEND Plugin_FILES "${CMAKE_CURRENT_SOURCE_DIR}/__init__.js")
#Add all extra files
FOREACH(_FILE ${Plugin_EXTRA})
GET_FILENAME_COMPONENT(ext "${CMAKE_CURRENT_SOURCE_DIR}/${_FILE}" EXT)
IF (ext STREQUAL ".qml" OR ext STREQUAL ".ui")
LIST(APPEND translation_sources "${CMAKE_CURRENT_SOURCE_DIR}/${_FILE}")
ENDIF ()
LIST(APPEND Plugin_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${_FILE}")
ENDFOREACH(_FILE)
ENDIF(Plugin_PATH)
IF (UPDATE_TRANSLATIONS)
QT4_CREATE_TRANSLATION( QM_FILES ${Plugin_SRCS} ${translation_sources} ${Plugin_TS} )
ELSE (UPDATE_TRANSLATIONS)
QT4_ADD_TRANSLATION(Plugin_QM ${Plugin_TS})
LIST(APPEND Plugin_FILES ${Plugin_QM})
ENDIF (UPDATE_TRANSLATIONS)
IF(Plugin_PATH)
FOREACH(_FILE ${Plugin_FILES})
GET_FILENAME_COMPONENT(_FILENAME ${_FILE} NAME)
ADD_CUSTOM_COMMAND( OUTPUT ${Plugin_PATH}/${_FILENAME}
COMMAND ${CMAKE_COMMAND} -E copy ${_FILE} ${Plugin_PATH}/${_FILENAME}
DEPENDS ${_FILE}
COMMENT "Copy ${_FILENAME} for plugin ${Plugin_NAME}"
)
LIST(APPEND Plugin_TARGET_FILES "${Plugin_PATH}/${_FILENAME}")
IF (NOT APPLE)
INSTALL(FILES ${_FILE} DESTINATION "${PLUGIN_LIB_FULL_PATH}/script/${Plugin_PATH_relative}")
ENDIF ()
ENDFOREACH(_FILE)
ENDIF(Plugin_PATH)
IF(Plugin_SRCS)
ADD_LIBRARY(${Plugin_NAME} SHARED
${Plugin_SRCS}
${Plugin_HDRS}
${Plugin_RSRCS}
${Plugin_MOC_HDRS}
${Plugin_MOC_SRCS}
${Plugin_MOC_HDRS}
${Plugin_FILES}
${Plugin_TS}
${Plugin_QM}
${Plugin_TARGET_FILES}
)
TARGET_LINK_LIBRARIES( ${Plugin_NAME} ${Plugin_LIBRARIES} )
IF (APPLE)
SET_TARGET_PROPERTIES(${Plugin_NAME} PROPERTIES
PREFIX ""
)
ELSEIF (WIN32)
SET_TARGET_PROPERTIES(${Plugin_NAME} PROPERTIES
PREFIX "Plugins/script/"
)
ELSE ()
SET_TARGET_PROPERTIES(${Plugin_NAME} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/TelldusCenter/Plugins/script
)
INSTALL(TARGETS ${Plugin_NAME}
LIBRARY DESTINATION "${PLUGIN_LIB_FULL_PATH}/script"
)
ENDIF ()
SIGN(${Plugin_NAME})
IF(APPLE)
ADD_CUSTOM_COMMAND(TARGET ${Plugin_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${Plugin_NAME}.dylib
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/TelldusCenter.app/Contents/Plugins/script
COMMENT "Copy plugin ${Plugin_NAME} 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/script/${Plugin_NAME}${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)
#Don't change the path to TelldusCore
IF (NOT \"\${rkey}\" STREQUAL \"TelldusCore\")
#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 ()
ENDIF ()
ENDFOREACH()
")
ENDIF()
ELSE(Plugin_SRCS)
ADD_CUSTOM_TARGET(${Plugin_NAME} ALL
SOURCES ${Plugin_FILES} ${Plugin_TARGET_FILES}
)
ENDIF(Plugin_SRCS)