aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmake/library.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmake/library.cmake')
-rw-r--r--src/cmake/library.cmake49
1 files changed, 44 insertions, 5 deletions
diff --git a/src/cmake/library.cmake b/src/cmake/library.cmake
index d19eb3c80cc..a06a795c69f 100644
--- a/src/cmake/library.cmake
+++ b/src/cmake/library.cmake
@@ -41,8 +41,10 @@ macro(add_vpp_library lib)
endif()
install(
TARGETS ${lib}
- DESTINATION ${VPP_LIBRARY_DIR}
- COMPONENT ${ARG_COMPONENT}
+ LIBRARY
+ DESTINATION ${VPP_LIBRARY_DIR}
+ COMPONENT ${ARG_COMPONENT}
+ NAMELINK_COMPONENT ${ARG_COMPONENT}-dev
)
if (ARG_LTO AND VPP_USE_LTO)
@@ -51,6 +53,9 @@ macro(add_vpp_library lib)
target_compile_options (${lib} PRIVATE "-ffunction-sections")
target_compile_options (${lib} PRIVATE "-fdata-sections")
target_link_libraries (${lib} "-Wl,--gc-sections")
+ if(compiler_flag_no_stringop_overflow)
+ target_link_libraries (${lib} "-Wno-stringop-overflow")
+ endif()
endif()
if(ARG_MULTIARCH_SOURCES)
@@ -67,7 +72,7 @@ macro(add_vpp_library lib)
${CMAKE_CURRENT_BINARY_DIR}/${file}_types.h
${CMAKE_CURRENT_BINARY_DIR}/${file}_tojson.h
${CMAKE_CURRENT_BINARY_DIR}/${file}_fromjson.h
- DESTINATION include/${lib}/${dir}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${lib}/${dir}
COMPONENT vpp-dev
)
endforeach()
@@ -77,6 +82,10 @@ macro(add_vpp_library lib)
add_dependencies(${lo} api_headers)
endif()
+ if(VPP_EXTERNAL_PROJECT AND ARG_API_FILES)
+ add_dependencies(${lo} ${lib}_api_headers)
+ endif()
+
if(ARG_DEPENDS)
add_dependencies(${lo} ${ARG_DEPENDS})
endif()
@@ -87,7 +96,7 @@ macro(add_vpp_library lib)
get_filename_component(dir ${file} DIRECTORY)
install(
FILES ${file}
- DESTINATION include/${lib}/${dir}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${lib}/${dir}
COMPONENT ${ARG_COMPONENT}-dev
)
endforeach()
@@ -102,12 +111,42 @@ function (add_vpp_headers path)
get_filename_component(dir ${file} DIRECTORY)
install(
FILES ${file}
- DESTINATION include/${path}/${dir}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${path}/${dir}
COMPONENT vpp-dev
)
endforeach()
endfunction()
+macro(add_vat_test_library lib)
+ cmake_parse_arguments(TEST
+ ""
+ ""
+ ${ARGN}
+ )
+
+ foreach(file ${ARGN})
+ get_filename_component(name ${file} NAME_WE)
+ set(test_lib ${lib}_${name}_plugin)
+ add_library(${test_lib} SHARED ${file})
+ target_compile_options(${test_lib} PUBLIC ${VPP_DEFAULT_MARCH_FLAGS})
+ if(NOT VPP_EXTERNAL_PROJECT)
+ add_dependencies(${test_lib} api_headers)
+ endif()
+ include_directories(${CMAKE_CURRENT_BINARY_DIR})
+ set_target_properties(${test_lib} PROPERTIES NO_SONAME 1)
+ set_target_properties(${test_lib} PROPERTIES
+ PREFIX ""
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/vpp_api_test_plugins)
+
+ # install .so
+ install(
+ TARGETS ${test_lib}
+ DESTINATION ${VPP_LIBRARY_DIR}/vpp_api_test_plugins
+ COMPONENT ${ARG_COMPONENT}
+ )
+ endforeach()
+endmacro()
+
macro(add_vpp_test_library lib)
cmake_parse_arguments(TEST
""