${ARGN}
)
- add_library(${lib} SHARED ${ARG_SOURCES})
+ set (lo ${lib}_objs)
+ add_library(${lo} OBJECT ${ARG_SOURCES})
+ set_target_properties(${lo} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+ target_compile_options(${lo} PUBLIC ${VPP_DEFAULT_MARCH_FLAGS})
+
+ add_library(${lib} SHARED)
+ target_sources(${lib} PRIVATE $<TARGET_OBJECTS:${lo}>)
+
if(VPP_LIB_VERSION)
set_target_properties(${lib} PROPERTIES SOVERSION ${VPP_LIB_VERSION})
endif()
)
if (ARG_LTO AND VPP_USE_LTO)
+ set_property(TARGET ${lo} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
set_property(TARGET ${lib} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
target_compile_options (${lib} PRIVATE "-ffunction-sections")
target_compile_options (${lib} PRIVATE "-fdata-sections")
endif()
if(NOT VPP_EXTERNAL_PROJECT)
- add_dependencies(${lib} api_headers)
+ add_dependencies(${lo} api_headers)
endif()
if(ARG_DEPENDS)
- add_dependencies(${lib} ${ARG_DEPENDS})
+ add_dependencies(${lo} ${ARG_DEPENDS})
endif()
# install headers
get_filename_component(name ${file} NAME_WE)
set(test_lib ${lib}_${name}_plugin)
add_library(${test_lib} SHARED ${file}_test2.c)
+ target_compile_options(${test_lib} PUBLIC ${VPP_DEFAULT_MARCH_FLAGS})
if(NOT VPP_EXTERNAL_PROJECT)
add_dependencies(${test_lib} api_headers)
endif()
PREFIX ""
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/vat2_plugins)
- # Later: Install and package
# install .so
- #install(
- # TARGETS ${test_lib}
- # DESTINATION ${VPP_LIBRARY_DIR}/vat2_plugins
- # #COMPONENT ${ARG_COMPONENT}
- # )
+ install(
+ TARGETS ${test_lib}
+ DESTINATION ${VPP_LIBRARY_DIR}/vat2_plugins
+ COMPONENT ${ARG_COMPONENT}
+ )
endforeach()
endmacro()
+
+macro(vpp_find_library var)
+ find_library(${var} ${ARGN})
+ mark_as_advanced(${var})
+endmacro()
+macro(vpp_find_path var)
+ find_path(${var} ${ARGN})
+ mark_as_advanced(${var})
+endmacro()