aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/FindQt4.cmake100
-rw-r--r--modules/KDE4Macros.cmake5
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})