1
cmake_minimum_required(VERSION 2.6)
3
cmake_policy(SET CMP0011 NEW)
6
find_program(GLIB_MKENUMS glib-mkenums)
7
find_program(GLIB_GENMARSHAL glib-genmarshal)
9
macro(add_glib_marshal outfiles name prefix otherinclude)
11
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.h"
12
COMMAND ${GLIB_GENMARSHAL} --header "--prefix=${prefix}"
13
"${CMAKE_CURRENT_SOURCE_DIR}/${name}.list"
14
> "${CMAKE_CURRENT_BINARY_DIR}/${name}.h"
15
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${name}.list"
18
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
19
COMMAND echo "\\#include \\\"${otherinclude}\\\"" > "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
20
COMMAND echo "\\#include \\\"glib-object.h\\\"" >> "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
21
COMMAND echo "\\#include \\\"${name}.h\\\"" >> "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
22
COMMAND ${GLIB_GENMARSHAL} --body "--prefix=${prefix}"
23
"${CMAKE_CURRENT_SOURCE_DIR}/${name}.list"
24
>> "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
25
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${name}.list"
26
"${CMAKE_CURRENT_BINARY_DIR}/${name}.h"
28
list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c")
29
endmacro(add_glib_marshal)
31
macro(add_glib_enumtypes_t outfiles name htemplate ctemplate)
33
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.h"
34
COMMAND ${GLIB_MKENUMS}
35
--template "${htemplate}"
36
${ARGN} > "${CMAKE_CURRENT_BINARY_DIR}/${name}.h"
37
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
38
DEPENDS ${ARGN} "${htemplate}"
41
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
42
COMMAND ${GLIB_MKENUMS}
43
--template "${ctemplate}"
44
${ARGN} > "${CMAKE_CURRENT_BINARY_DIR}/${name}.c"
45
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
46
DEPENDS ${ARGN} ${ctemplate}
47
"${CMAKE_CURRENT_BINARY_DIR}/${name}.h"
49
list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c")
50
endmacro(add_glib_enumtypes_t)
52
macro(add_glib_enumtypes outfiles name namespace includeguard)
53
set(htemplate "${CMAKE_CURRENT_BINARY_DIR}/${name}.h.template")
54
set(ctemplate "${CMAKE_CURRENT_BINARY_DIR}/${name}.c.template")
56
# Write the .h template
58
OUTPUT ${htemplate} ${ctemplate}
59
COMMAND ${CMAKE_COMMAND}
60
"-Dctemplate=${ctemplate}"
61
"-Dhtemplate=${htemplate}"
63
"-Dnamespace=${namespace}"
64
"-Dincludeguard=${includeguard}"
65
"\"-Dheaders=${ARGN}\""
66
-P "${CMAKE_SOURCE_DIR}/cmake/GlibGenerationTemplates.cmake"
67
DEPENDS "${CMAKE_SOURCE_DIR}/cmake/GlibGenerationTemplates.cmake" ${headers}
70
add_glib_enumtypes_t(${outfiles} ${name} ${htemplate} ${ctemplate} ${ARGN})
71
endmacro(add_glib_enumtypes)