nat: Include platform specific headers on FreeBSD
[vpp.git] / src / plugins / tlspicotls / CMakeLists.txt
1 include (CheckFunctionExists)
2
3 if(NOT OPENSSL_FOUND)
4   message(WARNING "OpenSSL not found - tlspicotls plugin disabled")
5   return()
6 endif()
7
8 # We should rely on a picotls specific version, but as
9 # we expect dependancies to be built with vpp-ext-deps
10 # it's reasonable to make this check to avoid breaking
11 # existing builds when upgrading the quicly/picotls
12 # versions
13 set(EXPECTED_QUICLY_VERSION "0.1.4-vpp")
14
15
16 vpp_find_path(QUICLY_INCLUDE_DIR NAMES quicly.h)
17 vpp_find_path(PICOTLS_INCLUDE_DIR NAMES picotls.h)
18 vpp_find_library(PICOTLS_CORE_LIBRARY NAMES "libpicotls-core.a")
19 vpp_find_library(PICOTLS_OPENSSL_LIBRARY NAMES "libpicotls-openssl.a")
20
21 list (APPEND PICOTLS_LINK_LIBRARIES
22     ${PICOTLS_CORE_LIBRARY}
23     ${PICOTLS_OPENSSL_LIBRARY}
24 )
25
26 if(QUICLY_INCLUDE_DIR AND PICOTLS_INCLUDE_DIR AND PICOTLS_LINK_LIBRARIES)
27   if(EXISTS "${QUICLY_INCLUDE_DIR}/quicly/version.h")
28     file(STRINGS "${QUICLY_INCLUDE_DIR}/quicly/version.h" quicly_version_str REGEX "^#define[\t ]+LIBQUICLY_VERSION[\t ]+\".*\"")
29     string(REGEX REPLACE "^#define[\t ]+LIBQUICLY_VERSION[\t ]+\"([^\"]*)\".*" "\\1" QUICLY_VERSION_STRING "${quicly_version_str}")
30     unset(quicly_version_str)
31   endif()
32
33   if (${QUICLY_VERSION_STRING} MATCHES "${EXPECTED_QUICLY_VERSION}")
34     include_directories (${PICOTLS_INCLUDE_DIR})
35     add_vpp_plugin(tlspicotls
36         SOURCES
37         tls_picotls.c
38         pico_vpp_crypto.c
39         certs.c
40
41         LINK_LIBRARIES ${PICOTLS_LINK_LIBRARIES} ${OPENSSL_LIBRARIES}
42     )
43     message (STATUS "Found picotls in ${PICOTLS_INCLUDE_DIR} and ${PICOTLS_CORE_LIBRARY}")
44   else()
45     message(STATUS "-- quicly ${EXPECTED_QUICLY_VERSION} not found - tlspicotls plugin disabled")
46   endif()
47 else ()
48     message (WARNING "-- picotls not found - tlspicotls plugin disabled")
49 endif ()