downstream: use ifdef SUPPORT_INPUT_FOCUS for keyboard focus functions.
[profile/ivi/wayland-ivi-extension.git] / protocol / CMakeLists.txt
1 ############################################################################
2 #
3 # Copyright 2014 BMW Car IT GmbH
4 #
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 ############################################################################
19
20 cmake_minimum_required (VERSION 2.6)
21
22 project(ivi-extension-protocol)
23
24 find_package(PkgConfig REQUIRED)
25 pkg_check_modules(WAYLAND_CLIENT wayland-client REQUIRED)
26 pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
27
28 find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
29
30 add_custom_command(
31     OUTPUT  ivi-application-client-protocol.h
32     COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
33             < ${CMAKE_SOURCE_DIR}/protocol/ivi-application.xml
34             > ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-client-protocol.h
35     DEPENDS ${CMAKE_SOURCE_DIR}/protocol/ivi-application.xml
36 )
37
38 add_custom_command(
39     OUTPUT  ivi-application-server-protocol.h
40     COMMAND ${WAYLAND_SCANNER_EXECUTABLE} server-header
41             < ${CMAKE_SOURCE_DIR}/protocol/ivi-application.xml
42             > ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-server-protocol.h
43     DEPENDS ${CMAKE_SOURCE_DIR}/protocol/ivi-application.xml
44 )
45
46 add_custom_command(
47     OUTPUT  ivi-application-protocol.c
48     COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
49             < ${CMAKE_SOURCE_DIR}/protocol/ivi-application.xml
50             > ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-protocol.c
51     DEPENDS ${CMAKE_SOURCE_DIR}/protocol/ivi-application.xml
52 )
53
54 add_custom_command(
55     OUTPUT  ivi-controller-client-protocol.h
56     COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header
57             < ${CMAKE_SOURCE_DIR}/protocol/ivi-controller.xml
58             > ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-client-protocol.h
59     DEPENDS ${CMAKE_SOURCE_DIR}/protocol/ivi-controller.xml
60 )
61
62 add_custom_command(
63     OUTPUT  ivi-controller-server-protocol.h
64     COMMAND ${WAYLAND_SCANNER_EXECUTABLE} server-header
65             < ${CMAKE_SOURCE_DIR}/protocol/ivi-controller.xml
66             > ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-server-protocol.h
67     DEPENDS ${CMAKE_SOURCE_DIR}/protocol/ivi-controller.xml
68 )
69
70 add_custom_command(
71     OUTPUT  ivi-controller-protocol.c
72     COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code
73             < ${CMAKE_SOURCE_DIR}/protocol/ivi-controller.xml
74             > ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-protocol.c
75     DEPENDS ${CMAKE_SOURCE_DIR}/protocol/ivi-controller.xml
76 )
77
78 include_directories(
79     ${CMAKE_CURRENT_BINARY_DIR}
80     ${WAYLAND_CLIENT_INCLUDE_DIRS}
81     ${WAYLAND_SERVER_INCLUDE_DIRS}
82 )
83
84 link_directories(
85     ${WAYLAND_CLIENT_LIBRARY_DIRS}
86     ${WAYLAND_SERVER_LIBRARY_DIRS}
87 )
88
89 add_library(${PROJECT_NAME} STATIC
90     ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-client-protocol.h
91     ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-server-protocol.h
92     ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-protocol.c
93     ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-client-protocol.h
94     ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-server-protocol.h
95     ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-protocol.c
96 )
97
98
99 #=============================================================================================
100 # generate documentation for ivi-application API
101 #=============================================================================================
102 SET(IVI_APP_XML      ${CMAKE_CURRENT_SOURCE_DIR}/ivi-application.xml)
103 SET(IVI_APP_CLIENT_H ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-client.h)
104 SET(IVI_APP_SERVER_H ${CMAKE_CURRENT_BINARY_DIR}/ivi-application-server.h)
105
106 add_custom_target(ivi-application-doc
107                   COMMAND wayland-scanner client-header < ${IVI_APP_XML} > ${IVI_APP_CLIENT_H}
108                   COMMAND wayland-scanner server-header < ${IVI_APP_XML} > ${IVI_APP_SERVER_H}
109
110                   COMMAND cat ${CMAKE_SOURCE_DIR}/doc/Doxyfile.template
111                           | sed 's!___DOC_NAME___!IVI Application API!'
112                           | sed 's!___DOC_VERSION___!${IVI_EXTENSION_VERSION}!'
113                           | sed 's!___INPUT_FILE___!${IVI_APP_CLIENT_H} ${IVI_APP_SERVER_H}!'
114                           | sed 's!___OUTPUT_DIR___!ivi-application-tmp!'
115                           | doxygen -
116
117                   COMMAND make --silent -C ivi-application-tmp/latex
118
119                   COMMAND cp ivi-application-tmp/latex/refman.pdf
120                              ${CMAKE_BINARY_DIR}/ivi-application-api-${IVI_EXTENSION_VERSION}.pdf
121
122                   DEPENDS ${IVI_APP_XML}
123
124                   COMMENT "Generating ivi-application-api-${IVI_EXTENSION_VERSION}.pdf"
125 )
126
127 #=============================================================================================
128 # generate documentation ivi-controller API
129 #=============================================================================================
130 SET(IVI_CTL_XML      ${CMAKE_CURRENT_SOURCE_DIR}/ivi-controller.xml)
131 SET(IVI_CTL_CLIENT_H ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-client.h)
132 SET(IVI_CTL_SERVER_H ${CMAKE_CURRENT_BINARY_DIR}/ivi-controller-server.h)
133
134 add_custom_target(ivi-controller-doc
135                   COMMAND wayland-scanner client-header < ${IVI_CTL_XML} > ${IVI_CTL_CLIENT_H}
136                   COMMAND wayland-scanner server-header < ${IVI_CTL_XML} > ${IVI_CTL_SERVER_H}
137
138                   COMMAND cat ${CMAKE_SOURCE_DIR}/doc/Doxyfile.template
139                           | sed 's!___DOC_NAME___!IVI Controller API!'
140                           | sed 's!___DOC_VERSION___!${IVI_EXTENSION_VERSION}!'
141                           | sed 's!___INPUT_FILE___!${IVI_CTL_CLIENT_H} ${IVI_CTL_SERVER_H}!'
142                           | sed 's!___OUTPUT_DIR___!ivi-controller-tmp!'
143                           | doxygen -
144
145                   COMMAND make --silent -C ivi-controller-tmp/latex
146
147                   COMMAND cp ivi-controller-tmp/latex/refman.pdf
148                              ${CMAKE_BINARY_DIR}/ivi-controller-api-${IVI_EXTENSION_VERSION}.pdf
149
150                   DEPENDS ${IVI_CTL_XML}
151
152                   COMMENT "Generating ivi-controller-api-${IVI_EXTENSION_VERSION}.pdf"
153 )
154