diff options
Diffstat (limited to 'cmake/modules/Findnl.cmake')
-rw-r--r-- | cmake/modules/Findnl.cmake | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/cmake/modules/Findnl.cmake b/cmake/modules/Findnl.cmake new file mode 100644 index 000000000..1fd2fcda6 --- /dev/null +++ b/cmake/modules/Findnl.cmake @@ -0,0 +1,50 @@ +# - Find libnl +# Find the libnl-3 library and includes +# +# nl_INCLUDE_DIR - where to find netlink.h, etc. +# nl_<COMPONENT>_LIBRARY - library when using nl::<COMPONENT>. +# nl_FOUND - True if nl found. + +find_path(nl_INCLUDE_DIR + NAMES + netlink/netlink.h + PATH_SUFFIXES + libnl3) + +foreach(component "core" ${nl_FIND_COMPONENTS}) + set(nl_COMPONENTS core cli genl idiag nf route xfrm) + list(FIND nl_COMPONENTS "${component}" found) + if(found EQUAL -1) + message(FATAL_ERROR "unknown libnl-3 component: ${component}") + endif() + if(component STREQUAL "core") + find_library(nl_${component}_LIBRARY nl-3) + else() + find_library(nl_${component}_LIBRARY nl-${component}-3) + endif() + list(APPEND nl_LIBRARIES "nl_${component}_LIBRARY") +endforeach() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(nl + DEFAULT_MSG ${nl_LIBRARIES} nl_INCLUDE_DIR) + +mark_as_advanced( + ${nl_LIBRARIES} + nl_INCLUDE_DIR) + +if(nl_FOUND) + foreach(component "core" ${nl_FIND_COMPONENTS}) + if(NOT TARGET nl::${component}) + add_library(nl::${component} UNKNOWN IMPORTED) + set_target_properties(nl::${component} PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${nl_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${nl_${component}_LIBRARY}") + if(NOT component STREQUAL "core") + set_target_properties(nl::${component} PROPERTIES + INTERFACE_LINK_LIBRARIES "${nl_core_LIBRARY}") + endif() + endif() + endforeach() +endif() |