tls: tlspicotls require version when building
[vpp.git] / src / plugins / tlspicotls / CMakeLists.txt
index 74eff8c..baf4c69 100644 (file)
@@ -1,8 +1,14 @@
 include (CheckFunctionExists)
 
-message(STATUS "Looking for picotls")
+# We should rely on a picotls specific version, but as
+# we expect dependancies to be built with vpp-ext-deps
+# it's reasonable to make this check to avoid breaking
+# existing builds when upgrading the quicly/picotls
+# versions
+set(EXPECTED_QUICLY_VERSION "0.1.3-vpp")
 
 
+find_path(QUICLY_INCLUDE_DIR NAMES quicly.h)
 find_path (PICOTLS_INCLUDE_DIR NAMES picotls.h)
 find_library (PICOTLS_CORE_LIBRARY NAMES "libpicotls-core.a")
 find_library (PICOTLS_OPENSSL_LIBRARY NAMES "libpicotls-openssl.a")
@@ -12,7 +18,14 @@ list (APPEND PICOTLS_LINK_LIBRARIES
     ${PICOTLS_OPENSSL_LIBRARY}
 )
 
-if (PICOTLS_INCLUDE_DIR AND PICOTLS_LINK_LIBRARIES)
+if(QUICLY_INCLUDE_DIR AND PICOTLS_INCLUDE_DIR AND PICOTLS_LINK_LIBRARIES)
+  if(EXISTS "${QUICLY_INCLUDE_DIR}/quicly/version.h")
+    file(STRINGS "${QUICLY_INCLUDE_DIR}/quicly/version.h" quicly_version_str REGEX "^#define[\t ]+LIBQUICLY_VERSION[\t ]+\".*\"")
+    string(REGEX REPLACE "^#define[\t ]+LIBQUICLY_VERSION[\t ]+\"([^\"]*)\".*" "\\1" QUICLY_VERSION_STRING "${quicly_version_str}")
+    unset(quicly_version_str)
+  endif()
+
+  if (${QUICLY_VERSION_STRING} MATCHES "${EXPECTED_QUICLY_VERSION}")
     include_directories (${PICOTLS_INCLUDE_DIR})
     add_vpp_plugin(tlspicotls
         SOURCES
@@ -23,6 +36,9 @@ if (PICOTLS_INCLUDE_DIR AND PICOTLS_LINK_LIBRARIES)
         LINK_LIBRARIES ${PICOTLS_LINK_LIBRARIES}
     )
     message (STATUS "Found picotls in ${PICOTLS_INCLUDE_DIR} and ${PICOTLS_CORE_LIBRARY}")
+  else()
+    message(STATUS "-- quicly ${EXPECTED_QUICLY_VERSION} not found - tlspicotls plugin disabled")
+  endif()
 else ()
-    message (WARNING "-- picotls not found")
+    message (WARNING "-- picotls not found - tlspicotls plugin disabled")
 endif ()