API: Change ip4_address and ip6_address to use type alias.
[vpp.git] / src / vpp-api / vapi / CMakeLists.txt
1 # Copyright (c) 2018 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
5 #
6 #     http://www.apache.org/licenses/LICENSE-2.0
7 #
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
13
14 include_directories (
15   ${CMAKE_CURRENT_SOURCE_DIR}/..
16   ${CMAKE_CURRENT_BINARY_DIR}/..
17 )
18
19 unset(VAPICLIENT_API_C_HEADERS)
20 unset(VAPICLIENT_API_CPP_HEADERS)
21
22 get_property(VPP_API_FILES GLOBAL PROPERTY VPP_API_FILES)
23 foreach(f ${VPP_API_FILES})
24   get_filename_component(output ${f}.vapi.h NAME)
25   set(input ${CMAKE_BINARY_DIR}/${f}.json)
26
27   # C VAPI Headers
28   add_custom_command(
29     OUTPUT ${output}
30     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
31     COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vapi_c_gen.py
32     ARGS --remove-path ${input}
33     DEPENDS ${input} vapi_c_gen.py vapi_json_parser.py api_headers
34     COMMENT "Generating VAPI C header ${output}"
35   )
36   install(
37     FILES ${CMAKE_CURRENT_BINARY_DIR}/${output}
38     DESTINATION include/vapi
39     COMPONENT vpp-dev
40   )
41   list(APPEND VAPICLIENT_API_CPP_HEADERS ${output})
42
43   # C++ VAPI Headers
44   get_filename_component(output ${f}.vapi.hpp NAME)
45   add_custom_command(
46     OUTPUT ${output}
47     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
48     COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vapi_cpp_gen.py
49     ARGS --gen-h-prefix=vapi --remove-path ${input}
50     DEPENDS ${input} vapi_cpp_gen.py vapi_json_parser.py api_headers
51     COMMENT "Generating VAPI C++ header ${output}"
52   )
53   install(
54     FILES ${CMAKE_CURRENT_BINARY_DIR}/${output}
55     DESTINATION include/vapi
56     COMPONENT vpp-dev
57   )
58   list(APPEND VAPICLIENT_API_CPP_HEADERS ${output})
59 endforeach ()
60
61 add_custom_target(all-vapi-headers DEPENDS
62   ${VAPICLIENT_API_C_HEADERS}
63   ${VAPICLIENT_API_CPP_HEADERS}
64 )
65
66 add_vpp_library(vapiclient
67   SOURCES
68   vapi.c
69   libvapiclient.map
70
71   LINK_LIBRARIES vppinfra vlibmemoryclient svm pthread m rt
72   DEPENDS all-vapi-headers
73 )
74
75 install(
76   FILES
77   vapi.h
78   vapi_common.h
79   vapi_dbg.h
80   vapi.hpp
81   vapi_internal.h
82
83   DESTINATION include/vapi
84   COMPONENT vpp-dev
85 )