dbuscommon.pri 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #
  2. # W A R N I N G
  3. # -------------
  4. #
  5. # This file is not part of the Qt API. It exists purely as an
  6. # implementation detail. It may change from version to version
  7. # without notice, or even be removed.
  8. #
  9. # We mean it.
  10. #
  11. load(moc)
  12. qtPrepareTool(QMAKE_QDBUSXML2CPP, qdbusxml2cpp)
  13. defineReplace(qdbusOutputBasename) {
  14. return($$lower($$section($$list($$basename(1)),.,-2,-2)))
  15. }
  16. dbus_TYPE = $$upper($$dbus_type)
  17. groups =
  18. for(entry, DBUS_$${dbus_TYPE}S) {
  19. files = $$eval($${entry}.files)
  20. isEmpty(files) {
  21. files = $$entry
  22. group = dbus_$${dbus_type}
  23. } else {
  24. group = $${entry}_dbus_$${dbus_type}
  25. }
  26. groups *= $$group
  27. input_list = $$upper($$group)_LIST
  28. for(subent, $$list($$unique(files))) {
  29. !contains(subent, .*\\w\\.xml$) {
  30. warning("Invalid D-BUS $${dbus_type}: '$$subent', please use 'com.mydomain.myinterface.xml' instead.")
  31. next()
  32. }
  33. $$input_list += $$subent
  34. }
  35. }
  36. for(group, groups) {
  37. GROUP = $$upper($$group)
  38. input_list = $${GROUP}_LIST
  39. # qmake does not keep empty elements in lists, so we reverse-engineer the short name
  40. grp = $$replace(group, _?dbus_$${dbus_type}\$, )
  41. isEmpty(grp) {
  42. hdr_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_HEADER_FLAGS)
  43. src_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_SOURCE_FLAGS)
  44. } else {
  45. hdr_flags = $$eval($${grp}.header_flags)
  46. src_flags = $$eval($${grp}.source_flags)
  47. }
  48. $${group}_header.commands = $$QMAKE_QDBUSXML2CPP $$hdr_flags $$qdbusxml2cpp_option ${QMAKE_FILE_OUT}: ${QMAKE_FILE_IN}
  49. $${group}_header.depends += $$QMAKE_QDBUSXML2CPP_EXE
  50. $${group}_header.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.h
  51. $${group}_header.name = DBUSXML2CPP $${dbus_TYPE} HEADER ${QMAKE_FILE_IN}
  52. $${group}_header.variable_out = $${GROUP}_HEADERS
  53. $${group}_header.input = $$input_list
  54. $${group}_source.commands = $$QMAKE_QDBUSXML2CPP -i ${QMAKE_FILE_OUT_BASE}.h $$src_flags $$qdbusxml2cpp_option :${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
  55. $${group}_source.depends += $$QMAKE_QDBUSXML2CPP_EXE
  56. $${group}_source.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.cpp
  57. $${group}_source.name = DBUSXML2CPP $${dbus_TYPE} SOURCE ${QMAKE_FILE_IN}
  58. $${group}_source.variable_out = SOURCES
  59. $${group}_source.input = $$input_list
  60. $${group}_source.depends += $$eval($${group}_header.output) # this actually belongs to the object file
  61. $${group}_moc.commands = $$moc_header.commands
  62. $${group}_moc.depends += $$QMAKE_MOC_EXE
  63. $${group}_moc.output = $$moc_header.output
  64. $${group}_moc.input = $${GROUP}_HEADERS
  65. $${group}_moc.variable_out = GENERATED_SOURCES
  66. $${group}_moc.name = $${GROUP}_$$moc_header.name
  67. QMAKE_EXTRA_COMPILERS += $${group}_header $${group}_source $${group}_moc
  68. }