build: Discover libepoll-shim on FreeBSD
FreeBSD doesn't offer epoll, but an implementation which uses kqueue is available as an external library. On FreeBSD in subsystems which require epoll have cmake look for libepoll-shim. Type: improvement Change-Id: Iafd5406a9e2ebaa53fd94034489ffbbf87a7d040 Signed-off-by: Tom Jones <thj@freebsd.org>
This commit is contained in:
@ -244,6 +244,21 @@ include(cmake/library.cmake)
|
||||
include(cmake/exec.cmake)
|
||||
include(cmake/plugin.cmake)
|
||||
|
||||
##############################################################################
|
||||
# FreeBSD - use epoll-shim
|
||||
##############################################################################
|
||||
set(EPOLL_LIB "")
|
||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
|
||||
find_path(EPOLL_SHIM_INCLUDE_DIR NAMES sys/epoll.h HINTS /usr/local/include/libepoll-shim)
|
||||
find_library(EPOLL_SHIM_LIB NAMES epoll-shim HINTS /usr/local/lib)
|
||||
|
||||
if(EPOLL_SHIM_INCLUDE_DIR AND EPOLL_SHIM_LIB)
|
||||
message(STATUS "Found epoll-shim in ${EPOLL_SHIM_INCLUDE_DIR}")
|
||||
include_directories(${EPOLL_SHIM_INCLUDE_DIR})
|
||||
string(JOIN " " EPOLL_LIB "${EPOLL_SHIM_LIB}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
##############################################################################
|
||||
# subdirs - order matters
|
||||
##############################################################################
|
||||
|
@ -153,7 +153,7 @@ add_vpp_library(vlib
|
||||
API_FILES
|
||||
pci/pci_types.api
|
||||
|
||||
LINK_LIBRARIES vppinfra svm ${CMAKE_DL_LIBS}
|
||||
LINK_LIBRARIES vppinfra svm ${CMAKE_DL_LIBS} ${EPOLL_LIB}
|
||||
|
||||
DEPENDS api_headers
|
||||
)
|
||||
|
@ -90,7 +90,7 @@ endif()
|
||||
add_vpp_executable(vpp
|
||||
ENABLE_EXPORTS
|
||||
SOURCES ${VPP_SOURCES}
|
||||
LINK_LIBRARIES svm vlib vppinfra vlibmemory vnet Threads::Threads ${CMAKE_DL_LIBS}
|
||||
LINK_LIBRARIES svm vlib vppinfra vlibmemory vnet Threads::Threads ${CMAKE_DL_LIBS} ${EPOLL_LIB}
|
||||
DEPENDS vpp_version_h api_headers
|
||||
)
|
||||
|
||||
@ -99,7 +99,7 @@ add_vpp_executable(vpp
|
||||
##############################################################################
|
||||
add_vpp_executable(vppctl
|
||||
SOURCES app/vppctl.c
|
||||
LINK_LIBRARIES vppinfra
|
||||
LINK_LIBRARIES vppinfra ${EPOLL_LIB}
|
||||
)
|
||||
|
||||
##############################################################################
|
||||
@ -122,7 +122,7 @@ add_vpp_executable(vpp_get_stats
|
||||
|
||||
add_vpp_executable(vpp_prometheus_export
|
||||
SOURCES app/vpp_prometheus_export.c
|
||||
LINK_LIBRARIES vppapiclient vppinfra svm vlibmemoryclient
|
||||
LINK_LIBRARIES vppapiclient vppinfra svm vlibmemoryclient ${EPOLL_LIB}
|
||||
DEPENDS api_headers
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user