tests: don't install vapi_c{,pp}_test
[vpp.git] / src / vpp-api / vapi / CMakeLists.txt
index 120bfd4..e016922 100644 (file)
 include_directories (
   ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_BINARY_DIR}/..
+  ${CMAKE_CURRENT_BINARY_DIR}
 )
 
-unset(VAPICLIENT_API_C_HEADERS)
-unset(VAPICLIENT_API_CPP_HEADERS)
+add_vpp_library(vapiclient
+  SOURCES
+  vapi.c
+  libvapiclient.map
+
+  LINK_LIBRARIES vppinfra vlibmemoryclient svm pthread m rt
+  DEPENDS api_headers
+)
+
+install(
+  FILES
+    vapi.h
+    vapi_common.h
+    vapi_dbg.h
+    vapi.hpp
+    vapi_internal.h
+  DESTINATION
+    ${CMAKE_INSTALL_INCLUDEDIR}/vapi
+  COMPONENT
+    vpp-dev
+)
+
+install(
+  FILES
+    vapi_c_gen.py
+    vapi_json_parser.py
+    vapi_cpp_gen.py
+  DESTINATION
+    share/vpp
+  COMPONENT
+    vpp-dev
+)
+
+install(
+  PROGRAMS
+  vapi_c_gen.py
+  vapi_cpp_gen.py
+  vapi_json_parser.py
+
+  DESTINATION ${VPP_RUNTIME_DIR}
+  COMPONENT vpp-dev
+)
+
+vpp_find_path(SUBUNIT_INCLUDE_DIR NAMES subunit/child.h)
+vpp_find_library(SUBUNIT_LIB NAMES subunit)
 
-get_property(VPP_API_FILES GLOBAL PROPERTY VPP_API_FILES)
-foreach(f ${VPP_API_FILES})
-  get_filename_component(output ${f}.vapi.h NAME)
-  set(input ${CMAKE_BINARY_DIR}/${f}.json)
+if(SUBUNIT_INCLUDE_DIR AND SUBUNIT_LIB)
+  message (STATUS "Found subunit in ${SUBUNIT_INCLUDE_DIR} and ${SUBUNIT_LIB}")
 
-  # C VAPI Headers
   add_custom_command(
-    OUTPUT ${output}
+    OUTPUT fake.api.vapi.h
     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vapi_c_gen.py
-    ARGS --remove-path ${input}
-    DEPENDS ${input} vapi_c_gen.py vapi_json_parser.py api_headers
-    COMMENT "Generating VAPI C header ${output}"
+    COMMAND ${PYENV} ${CMAKE_CURRENT_SOURCE_DIR}/vapi_c_gen.py
+    ARGS --remove-path ${CMAKE_CURRENT_SOURCE_DIR}/fake.api.json
+    DEPENDS fake.api.json
+    COMMENT "Generating fake VAPI C header ${output_name}"
   )
-  install(
-    FILES ${CMAKE_CURRENT_BINARY_DIR}/${output}
-    DESTINATION include/vapi
-    COMPONENT vpp-dev
-  )
-  list(APPEND VAPICLIENT_API_CPP_HEADERS ${output})
 
-  # C++ VAPI Headers
-  get_filename_component(output ${f}.vapi.hpp NAME)
   add_custom_command(
-    OUTPUT ${output}
+    OUTPUT fake.api.vapi.hpp
     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vapi_cpp_gen.py
-    ARGS --gen-h-prefix=vapi --remove-path ${input}
-    DEPENDS ${input} vapi_cpp_gen.py vapi_json_parser.py api_headers
-    COMMENT "Generating VAPI C++ header ${output}"
-  )
-  install(
-    FILES ${CMAKE_CURRENT_BINARY_DIR}/${output}
-    DESTINATION include/vapi
-    COMPONENT vpp-dev
+    COMMAND ${PYENV} ${CMAKE_CURRENT_SOURCE_DIR}/vapi_cpp_gen.py
+    ARGS --remove-path ${CMAKE_CURRENT_SOURCE_DIR}/fake.api.json
+    DEPENDS fake.api.json
+    COMMENT "Generating fake VAPI C++ header ${output_name}"
   )
-  list(APPEND VAPICLIENT_API_CPP_HEADERS ${output})
-endforeach ()
 
-add_custom_target(all-vapi-headers DEPENDS
-  ${VAPICLIENT_API_C_HEADERS}
-  ${VAPICLIENT_API_CPP_HEADERS}
-)
+  add_custom_target(fake_api_vapi_h DEPENDS fake.api.vapi.h)
+  add_custom_target(fake_api_vapi_hpp DEPENDS fake.api.vapi.hpp)
 
-add_vpp_library(vapiclient
-  SOURCES
-  vapi.c
-  libvapiclient.map
+  set(libs vppinfra vlibmemoryclient svm pthread check rt m vapiclient ${SUBUNIT_LIB})
 
-  LINK_LIBRARIES vppinfra vlibmemoryclient svm pthread m rt
-  DEPENDS all-vapi-headers
-)
+  add_vpp_executable(vapi_c_test
+    SOURCES
+    vapi_c_test.c
+    DEPENDS fake_api_vapi_h
+    LINK_LIBRARIES ${libs}
+    NO_INSTALL
+  )
 
-install(
-  FILES
-  vapi.h
-  vapi_common.h
-  vapi_dbg.h
-  vapi.hpp
-  vapi_internal.h
+  enable_language(CXX)
+  add_vpp_executable(vapi_cpp_test
+    SOURCES
+    vapi_cpp_test.cpp
+    DEPENDS fake_api_vapi_hpp
+    LINK_LIBRARIES ${libs}
+    NO_INSTALL
+  )
 
-  DESTINATION include/vapi
-  COMPONENT vpp-dev
-)
+else()
+  message (WARNING "subunit library not found - vapi tests disabled")
+endif()