aboutsummaryrefslogtreecommitdiff
path: root/src/backend-dbus/CMakeLists.txt
blob: a477cfe5a589f3a8a5281597dfcecd191bc16d02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# autogenerate source code files for our DBus proxies
function(gdbus_codegen XML_FILE INTERFACE_PREFIX SOURCE_PREFIX)

  set (SRC_C, ${SOURCE_PREFIX}.c)
  set (SRC_H, ${SOURCE_PREFIX}.h)

  # check for the app
  find_program (GDBUS_CODEGEN_EXECUTABLE NAMES gdbus-codegen DOC "gdbus-codegen executable")
  if(NOT GDBUS_CODEGEN_EXECUTABLE)
    message(FATAL_ERROR "Executable gdbus-codegen not found")
  endif()

  # generate the code
  add_custom_command (
    OUTPUT ${SOURCE_PREFIX}.c ${SOURCE_PREFIX}.h 
    COMMAND gdbus-codegen ARGS --interface-prefix ${INTERFACE_PREFIX} --generate-c-code ${SOURCE_PREFIX} ${CMAKE_CURRENT_SOURCE_DIR}/${XML_FILE}
    DEPENDS ${XML_FILE})

  # update our variables
  set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${SRC_C})
  set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${SRC_H})
  set_property (SOURCE ${SRC_C} ${SRC_H} PROPERTY GENERATED)

  # cleanup
  unset (SRC_C)
  unset (SRC_H)

endfunction(gdbus_codegen)
gdbus_codegen ("display-manager.xml" "org.freedesktop" "dbus-display-manager")
gdbus_codegen ("com.canonical.indicators.webcredentials.xml" "com.canonical.indicators" "dbus-webcredentials")
gdbus_codegen ("org.freedesktop.Accounts.xml" "org.freedesktop" "dbus-accounts")
gdbus_codegen ("org.freedesktop.Accounts.User.xml" "org.freedesktop" "dbus-user")
gdbus_codegen ("org.freedesktop.ConsoleKit.Manager.xml" "org.freedesktop" "dbus-consolekit-manager")
gdbus_codegen ("org.freedesktop.ConsoleKit.Seat.xml" "org.freedesktop" "dbus-consolekit-seat")
gdbus_codegen ("org.freedesktop.ConsoleKit.Session.xml" "org.freedesktop" "dbus-consolekit-session")
gdbus_codegen ("org.gnome.ScreenSaver.xml" "org" "gnome-screen-saver")
gdbus_codegen ("org.gnome.SessionManager.xml" "org" "gnome-session-manager")
gdbus_codegen ("org.gnome.SessionManager.EndSessionDialog.xml" "org.gnome.SessionManager" "dbus-end-session-dialog")
gdbus_codegen ("upower.xml" "org.freedesktop" "dbus-upower")

# add warnings/coverage info on handwritten files
# but not the autogenerated ones...
set_source_files_properties (actions.c
                             backend-dbus.c
                             guest.c
                             users.c
                             utils.c
                             PROPERTIES COMPILE_FLAGS " -g ${CC_WARNING_ARGS} ${GCOV_FLAGS}")

# add the bin dir to our include path s.t. our code can find the autogenerated header files
include_directories (${CMAKE_CURRENT_BINARY_DIR} ${SERVICE_INCLUDE_DIRS})

add_library (backenddbus STATIC
             gnome-screen-saver.c
             gnome-screen-saver.h
             gnome-session-manager.c
             gnome-session-manager.h
             dbus-display-manager.c
             dbus-display-manager.h
             dbus-consolekit-manager.c
             dbus-consolekit-manager.h
             dbus-consolekit-seat.c
             dbus-consolekit-seat.h
             dbus-consolekit-session.c
             dbus-consolekit-session.h
             dbus-accounts.c
             dbus-accounts.h
             dbus-upower.c
             dbus-upower.h
             dbus-user.c
             dbus-user.h
             dbus-webcredentials.c
             dbus-webcredentials.h
             dbus-end-session-dialog.c
             dbus-end-session-dialog.h
             actions.c
             actions.h
             backend-dbus.c
             backend-dbus.h
             guest.c
             guest.h
             users.c
             users.h
             utils.c
             utils.h)