~cjwatson/ubuntu-app-launch/libclick-manifest

« back to all changes in this revision

Viewing changes to cmake/UseGlibGeneration.cmake

  • Committer: Ted Gould
  • Date: 2013-07-24 21:13:19 UTC
  • mto: (33.6.1 libupstart-flesh)
  • mto: This revision was merged to the branch mainline in revision 38.
  • Revision ID: ted@gould.cx-20130724211319-jfznxhm4h7s0nuk2
Base CMake stuff

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
cmake_minimum_required(VERSION 2.6)
 
2
if(POLICY CMP0011)
 
3
  cmake_policy(SET CMP0011 NEW)
 
4
endif(POLICY CMP0011)
 
5
 
 
6
find_program(GLIB_MKENUMS glib-mkenums)
 
7
find_program(GLIB_GENMARSHAL glib-genmarshal)
 
8
 
 
9
macro(add_glib_marshal outfiles name prefix otherinclude)
 
10
  add_custom_command(
 
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"
 
16
  )
 
17
  add_custom_command(
 
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"
 
27
  )
 
28
  list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c")
 
29
endmacro(add_glib_marshal)
 
30
 
 
31
macro(add_glib_enumtypes_t outfiles name htemplate ctemplate)
 
32
  add_custom_command(
 
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}"
 
39
  )
 
40
  add_custom_command(
 
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"
 
48
  )
 
49
  list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c")
 
50
endmacro(add_glib_enumtypes_t)
 
51
 
 
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")
 
55
 
 
56
  # Write the .h template
 
57
  add_custom_command(
 
58
    OUTPUT ${htemplate} ${ctemplate}
 
59
    COMMAND ${CMAKE_COMMAND}
 
60
        "-Dctemplate=${ctemplate}"
 
61
        "-Dhtemplate=${htemplate}"
 
62
        "-Dname=${name}"
 
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}
 
68
  )
 
69
 
 
70
  add_glib_enumtypes_t(${outfiles} ${name} ${htemplate} ${ctemplate} ${ARGN})
 
71
endmacro(add_glib_enumtypes)