aboutsummaryrefslogtreecommitdiff
path: root/cmake/UseGdbusCodegen.cmake
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2013-06-27 10:43:13 -0500
committerTed Gould <ted@gould.cx>2013-06-27 10:43:13 -0500
commit9daa9b7b0849a121309b5522ef7eb6d34c6712b2 (patch)
treebfbda0045e277cef9420d2b4fb6b2d04986ca541 /cmake/UseGdbusCodegen.cmake
parent14b46999b69f8dac446e204604adf0981395449c (diff)
downloadayatana-greeter-session-broadcast-9daa9b7b0849a121309b5522ef7eb6d34c6712b2.tar.gz
ayatana-greeter-session-broadcast-9daa9b7b0849a121309b5522ef7eb6d34c6712b2.tar.bz2
ayatana-greeter-session-broadcast-9daa9b7b0849a121309b5522ef7eb6d34c6712b2.zip
Adding in a build system
Diffstat (limited to 'cmake/UseGdbusCodegen.cmake')
-rw-r--r--cmake/UseGdbusCodegen.cmake35
1 files changed, 35 insertions, 0 deletions
diff --git a/cmake/UseGdbusCodegen.cmake b/cmake/UseGdbusCodegen.cmake
new file mode 100644
index 0000000..aa23ca3
--- /dev/null
+++ b/cmake/UseGdbusCodegen.cmake
@@ -0,0 +1,35 @@
+cmake_minimum_required(VERSION 2.6)
+if(POLICY CMP0011)
+ cmake_policy(SET CMP0011 NEW)
+endif(POLICY CMP0011)
+
+find_program(GDBUS_CODEGEN NAMES gdbus-codegen DOC "gdbus-codegen executable")
+if(NOT GDBUS_CODEGEN)
+ message(FATAL_ERROR "Excutable gdbus-codegen not found")
+endif()
+
+function(add_gdbus_codegen)
+ set(_one_value OUTFILES NAME PREFIX NAMESPACE SERVICE_XML)
+ set(_multi_value DEPENDS)
+ cmake_parse_arguments (arg "" "${_one_value}" "${_multi_value}" ${ARGN})
+
+ if(arg_PREFIX)
+ set(PREFIX --interface-prefix ${arg_PREFIX})
+ endif()
+
+ if(arg_NAMESPACE)
+ set(NAMESPACE --c-namespace ${arg_NAMESPACE})
+ endif()
+
+ add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${arg_NAME}.h" "${CMAKE_CURRENT_BINARY_DIR}/${arg_NAME}.c"
+ COMMAND "${GDBUS_CODEGEN}"
+ --generate-c-code "${arg_NAME}"
+ ${PREFIX}
+ ${NAMESPACE}
+ "${arg_SERVICE_XML}"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS ${arg_DEPENDS} "${arg_SERVICE_XML}"
+ )
+ set(${arg_OUTFILES} ${${arg_OUTFILES}} "${CMAKE_CURRENT_BINARY_DIR}/${arg_NAME}.c" PARENT_SCOPE)
+endfunction(add_gdbus_codegen)