build: export vapi generation in vpp-dev
[vpp.git] / src / cmake / library.cmake
index 9ed53e9..dc14ae5 100644 (file)
 macro(add_vpp_library lib)
   cmake_parse_arguments(ARG
     ""
-    ""
+    "COMPONENT"
     "SOURCES;MULTIARCH_SOURCES;API_FILES;LINK_LIBRARIES;INSTALL_HEADERS;DEPENDS"
     ${ARGN}
   )
 
   add_library(${lib} SHARED ${ARG_SOURCES})
+  if(VPP_LIB_VERSION)
+    set_target_properties(${lib} PROPERTIES SOVERSION ${VPP_LIB_VERSION})
+  endif()
 
   # library deps
   if(ARG_LINK_LIBRARIES)
     target_link_libraries(${lib} ${ARG_LINK_LIBRARIES})
   endif()
   # install .so
-  install(TARGETS ${lib} DESTINATION ${VPP_LIB_DIR_NAME})
+  if(NOT ARG_COMPONENT)
+    set(ARG_COMPONENT vpp)
+  endif()
+  install(
+    TARGETS ${lib}
+    DESTINATION lib
+    COMPONENT ${ARG_COMPONENT}
+  )
 
   if(ARG_MULTIARCH_SOURCES)
     vpp_library_set_multiarch_sources(${lib} ${ARG_MULTIARCH_SOURCES})
   endif()
 
   if(ARG_API_FILES)
-    vpp_add_api_files(${lib} ${ARG_API_FILES})
+    vpp_add_api_files(${lib} core vpp ${ARG_API_FILES})
     foreach(file ${ARG_API_FILES})
       get_filename_component(dir ${file} DIRECTORY)
-      install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${file}.h DESTINATION include/${lib}/${dir})
+      install(
+       FILES ${file} ${CMAKE_CURRENT_BINARY_DIR}/${file}.h
+       ${CMAKE_CURRENT_BINARY_DIR}/${file}_enum.h
+       ${CMAKE_CURRENT_BINARY_DIR}/${file}_types.h
+       DESTINATION include/${lib}/${dir}
+       COMPONENT vpp-dev
+      )
     endforeach()
   endif()
 
@@ -48,7 +64,11 @@ macro(add_vpp_library lib)
   if(ARG_INSTALL_HEADERS)
     foreach(file ${ARG_INSTALL_HEADERS})
       get_filename_component(dir ${file} DIRECTORY)
-      install(FILES ${file} DESTINATION include/${lib}/${dir})
+      install(
+       FILES ${file}
+       DESTINATION include/${lib}/${dir}
+       COMPONENT ${ARG_COMPONENT}-dev
+      )
     endforeach()
   endif()
 endmacro()
@@ -59,6 +79,10 @@ endmacro()
 function (add_vpp_headers path)
   foreach(file ${ARGN})
     get_filename_component(dir ${file} DIRECTORY)
-    install(FILES ${file} DESTINATION include/${path}/${dir})
+    install(
+      FILES ${file}
+      DESTINATION include/${path}/${dir}
+      COMPONENT vpp-dev
+    )
   endforeach()
 endfunction()