diff options
author | Alexander Neundorf <neundorf@kde.org> | 2006-07-02 13:12:44 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2006-07-02 13:12:44 +0000 |
commit | 9e8ba3300c947ae5df7fbb2d498365e7710e95cd (patch) | |
tree | 9d9b990d1d9f61287acf2e560b02012bbccc9003 | |
parent | 399b0cb1979cec7092f65dcbaa4a2e7e4b0a69de (diff) | |
download | extra-cmake-modules-9e8ba3300c947ae5df7fbb2d498365e7710e95cd.tar.gz extra-cmake-modules-9e8ba3300c947ae5df7fbb2d498365e7710e95cd.tar.bz2 |
-add macros for dealing with dbus stuff:
QT_ADD_DBUS_INTERFACES( sources xmlfile1 ... xmlfileN)
QT_ADD_DBUS_ADAPTORS( sources xmlfile1 ... xmlfileN)
Alex
svn path=/trunk/KDE/kdelibs/; revision=557126
-rw-r--r-- | modules/FindQt4.cmake | 100 | ||||
-rw-r--r-- | modules/KDE4Macros.cmake | 5 |
2 files changed, 101 insertions, 4 deletions
diff --git a/modules/FindQt4.cmake b/modules/FindQt4.cmake index 0761f8f6..69eedc44 100644 --- a/modules/FindQt4.cmake +++ b/modules/FindQt4.cmake @@ -19,7 +19,6 @@ # QT_USE_QTOPENGL # QT_USE_QTSQL # QT_USE_QTXML -# # All the libraries required are stored in a variable called QT_LIBRARIES. # Add this variable to your TARGET_LINK_LIBRARIES. # @@ -28,7 +27,30 @@ # macro QT4_ADD_RESOURCE(outfiles inputfile ... ) # macro QT4_AUTOMOC(inputfile ... ) # macro QT4_GENERATE_MOC(inputfile outputfile ) -# +# +# macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename) +# create a the interface header and implementation files with the +# given basename from the given interface xml file and add it to +# the list of sources +# +# macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... ) +# create the interface header and implementation files +# for all listed interface xml files +# the name will be automatically determined from the name of the xml file +# +# macro QT4_ADD_DBUS_ADAPTOR(outfiles interface basename ) +# create a the adaptor header and implementation files with the +# given basename from the given interface xml file and add it to +# the list of sources +# +# macro QT4_ADD_DBUS_ADAPTORS(outfiles inputfile ... ) +# create the adaptor header and implementation files +# for all listed interface xml files +# the name will be automatically determined from the name of the xml file +# +# macro QT4_GENERATE_DBUS_INTERFACE( header) +# generate the xml interface file from the given header +# # QT_FOUND If false, don't try to use Qt. # QT4_FOUND If false, don't try to use Qt 4. # @@ -819,6 +841,80 @@ IF (QT4_QMAKE_FOUND) ENDMACRO (QT4_ADD_RESOURCES) + MACRO(QT4_ADD_DBUS_INTERFACE _sources _interface _basename) + GET_FILENAME_COMPONENT(_infile ${_interface} ABSOLUTE) + SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) + SET(_impl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) + SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc) + + ADD_CUSTOM_COMMAND(OUTPUT ${_impl} ${_header} + COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} -m -p ${_basename} ${_infile} + DEPENDS ${_infile}) + + SET_SOURCE_FILES_PROPERTIES(${_impl} PROPERTIES SKIP_AUTOMOC TRUE) + + QT4_GENERATE_MOC(${_header} ${_moc}) + + SET(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc}) + + ENDMACRO(QT4_ADD_DBUS_INTERFACE) + + + MACRO(QT4_ADD_DBUS_INTERFACES _sources) + FOREACH (_current_FILE ${ARGN}) + GET_FILENAME_COMPONENT(_infile ${_current_FILE} ABSOLUTE) + + # get the part before the ".xml" suffix + STRING(REGEX REPLACE "(.*[/\\.])?([^\\.]+)\\.xml" "\\2" _basename ${_current_FILE}) + STRING(TOLOWER ${_basename} _basename) + + QT4_ADD_DBUS_INTERFACE(${_sources} ${_infile} ${_basename}interface) + ENDFOREACH (_current_FILE) + ENDMACRO(QT4_ADD_DBUS_INTERFACES) + + + MACRO(QT4_GENERATE_DBUS_INTERFACE _header) + GET_FILENAME_COMPONENT(_in_file ${_header} ABSOLUTE) + GET_FILENAME_COMPONENT(_basename ${_header} NAME_WE) + SET(_target ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.xml) + + ADD_CUSTOM_COMMAND(OUTPUT ${_target} + COMMAND ${QT_DBUSCPP2XML_EXECUTABLE} ${_in_file} > ${_target} + DEPENDS ${_in_file} + ) + ENDMACRO(QT4_GENERATE_DBUS_INTERFACE) + + + MACRO(QT4_ADD_DBUS_ADAPTOR _sources _interface _basename) + GET_FILENAME_COMPONENT(_infile ${_interface} ABSOLUTE) + + SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) + SET(_impl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) + SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc) + + ADD_CUSTOM_COMMAND(OUTPUT ${_target_base}.cpp ${_target_base}.h + COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} -m -a ${_basename} ${_infile} + DEPENDS ${_infile} + ) + + QT4_GENERATE_MOC(${_header} ${_moc}) + SET_SOURCE_FILES_PROPERTIES(${_impl} PROPERTIES SKIP_AUTOMOC TRUE) + + SET(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc}) + ENDMACRO(QT4_ADD_DBUS_ADAPTOR) + + + MACRO(QT4_ADD_DBUS_ADAPTORS _sources) + FOREACH (_current_FILE ${ARGN}) + GET_FILENAME_COMPONENT(_xml_file ${_current_FILE} ABSOLUTE) + STRING(REGEX REPLACE "(.*[/\\.])?([^\\.]+)\\.xml" "\\2" _basename ${_current_FILE}) + STRING(TOLOWER ${_basename} _basename) + + QT4_ADD_DBUS_ADAPTOR(${_sources} ${_xml_file} ${_basename}adaptor) + ENDFOREACH (_current_FILE ${ARGN}) + ENDMACRO(QT4_ADD_DBUS_ADAPTORS) + + MACRO(QT4_AUTOMOC) QT4_GET_MOC_INC_DIRS(_moc_INCS) diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 9ec851d7..c43ccd2e 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -33,8 +33,9 @@ macro (KDE4_ADD_KCFG_FILES _sources) MAIN_DEPENDENCY ${_tmp_FILE} DEPENDS ${_abs_PATH}/${_kcfg_FILE} ${_KDE4_KCONFIG_COMPILER_DEP} ) - QT4_GENERATE_MOC(${_header_FILE} ${_moc_FILE} ) - MACRO_ADD_FILE_DEPENDENCIES(${_src_FILE} ${_moc_FILE} ) + qt4_generate_moc(${_header_FILE} ${_moc_FILE} ) + set_source_files_properties(${_src_FILE} PROPERTIES SKIP_AUTOMOC TRUE) # dont run automoc on this file + macro_add_file_dependencies(${_src_FILE} ${_moc_FILE} ) set(${_sources} ${${_sources}} ${_src_FILE} ${_header_FILE}) |