118 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								#***************************************************************************
							 | 
						||
| 
								 | 
							
								#                                  _   _ ____  _
							 | 
						||
| 
								 | 
							
								#  Project                     ___| | | |  _ \| |
							 | 
						||
| 
								 | 
							
								#                             / __| | | | |_) | |
							 | 
						||
| 
								 | 
							
								#                            | (__| |_| |  _ <| |___
							 | 
						||
| 
								 | 
							
								#                             \___|\___/|_| \_\_____|
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This software is licensed as described in the file COPYING, which
							 | 
						||
| 
								 | 
							
								# you should have received as part of this distribution. The terms
							 | 
						||
| 
								 | 
							
								# are also available at https://curl.se/docs/copyright.html.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# You may opt to use, copy, modify, merge, publish, distribute and/or sell
							 | 
						||
| 
								 | 
							
								# copies of the Software, and permit persons to whom the Software is
							 | 
						||
| 
								 | 
							
								# furnished to do so, under the terms of the COPYING file.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
							 | 
						||
| 
								 | 
							
								# KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# SPDX-License-Identifier: curl
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								###########################################################################
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#[=======================================================================[.rst:
							 | 
						||
| 
								 | 
							
								FindNGTCP2
							 | 
						||
| 
								 | 
							
								----------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Find the ngtcp2 library
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This module accepts optional COMPONENTS to control the crypto library (these are
							 | 
						||
| 
								 | 
							
								mutually exclusive)::
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  quictls, LibreSSL:  Use libngtcp2_crypto_quictls
							 | 
						||
| 
								 | 
							
								  BoringSSL, AWS-LC:  Use libngtcp2_crypto_boringssl
							 | 
						||
| 
								 | 
							
								  wolfSSL:            Use libngtcp2_crypto_wolfssl
							 | 
						||
| 
								 | 
							
								  GnuTLS:             Use libngtcp2_crypto_gnutls
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Result Variables
							 | 
						||
| 
								 | 
							
								^^^^^^^^^^^^^^^^
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``NGTCP2_FOUND``
							 | 
						||
| 
								 | 
							
								  System has ngtcp2
							 | 
						||
| 
								 | 
							
								``NGTCP2_INCLUDE_DIRS``
							 | 
						||
| 
								 | 
							
								  The ngtcp2 include directories.
							 | 
						||
| 
								 | 
							
								``NGTCP2_LIBRARIES``
							 | 
						||
| 
								 | 
							
								  The libraries needed to use ngtcp2
							 | 
						||
| 
								 | 
							
								``NGTCP2_VERSION``
							 | 
						||
| 
								 | 
							
								  version of ngtcp2.
							 | 
						||
| 
								 | 
							
								#]=======================================================================]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(UNIX)
							 | 
						||
| 
								 | 
							
								  find_package(PkgConfig QUIET)
							 | 
						||
| 
								 | 
							
								  pkg_search_module(PC_NGTCP2 libngtcp2)
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_path(NGTCP2_INCLUDE_DIR ngtcp2/ngtcp2.h
							 | 
						||
| 
								 | 
							
								  HINTS
							 | 
						||
| 
								 | 
							
								    ${PC_NGTCP2_INCLUDEDIR}
							 | 
						||
| 
								 | 
							
								    ${PC_NGTCP2_INCLUDE_DIRS}
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								find_library(NGTCP2_LIBRARY NAMES ngtcp2
							 | 
						||
| 
								 | 
							
								  HINTS
							 | 
						||
| 
								 | 
							
								    ${PC_NGTCP2_LIBDIR}
							 | 
						||
| 
								 | 
							
								    ${PC_NGTCP2_LIBRARY_DIRS}
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(PC_NGTCP2_VERSION)
							 | 
						||
| 
								 | 
							
								  set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(NGTCP2_FIND_COMPONENTS)
							 | 
						||
| 
								 | 
							
								  set(NGTCP2_CRYPTO_BACKEND "")
							 | 
						||
| 
								 | 
							
								  foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
							 | 
						||
| 
								 | 
							
								    if(component MATCHES "^(BoringSSL|quictls|wolfSSL|GnuTLS)")
							 | 
						||
| 
								 | 
							
								      if(NGTCP2_CRYPTO_BACKEND)
							 | 
						||
| 
								 | 
							
								        message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
							 | 
						||
| 
								 | 
							
								      endif()
							 | 
						||
| 
								 | 
							
								      set(NGTCP2_CRYPTO_BACKEND ${component})
							 | 
						||
| 
								 | 
							
								    endif()
							 | 
						||
| 
								 | 
							
								  endforeach()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if(NGTCP2_CRYPTO_BACKEND)
							 | 
						||
| 
								 | 
							
								    string(TOLOWER "ngtcp2_crypto_${NGTCP2_CRYPTO_BACKEND}" _crypto_library)
							 | 
						||
| 
								 | 
							
								    if(UNIX)
							 | 
						||
| 
								 | 
							
								      pkg_search_module(PC_${_crypto_library} lib${_crypto_library})
							 | 
						||
| 
								 | 
							
								    endif()
							 | 
						||
| 
								 | 
							
								    find_library(${_crypto_library}_LIBRARY
							 | 
						||
| 
								 | 
							
								      NAMES
							 | 
						||
| 
								 | 
							
								        ${_crypto_library}
							 | 
						||
| 
								 | 
							
								      HINTS
							 | 
						||
| 
								 | 
							
								        ${PC_${_crypto_library}_LIBDIR}
							 | 
						||
| 
								 | 
							
								        ${PC_${_crypto_library}_LIBRARY_DIRS}
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    if(${_crypto_library}_LIBRARY)
							 | 
						||
| 
								 | 
							
								      set(NGTCP2_${NGTCP2_CRYPTO_BACKEND}_FOUND TRUE)
							 | 
						||
| 
								 | 
							
								      set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library}_LIBRARY})
							 | 
						||
| 
								 | 
							
								    endif()
							 | 
						||
| 
								 | 
							
								  endif()
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include(FindPackageHandleStandardArgs)
							 | 
						||
| 
								 | 
							
								find_package_handle_standard_args(NGTCP2
							 | 
						||
| 
								 | 
							
								  REQUIRED_VARS
							 | 
						||
| 
								 | 
							
								    NGTCP2_LIBRARY
							 | 
						||
| 
								 | 
							
								    NGTCP2_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								  VERSION_VAR NGTCP2_VERSION
							 | 
						||
| 
								 | 
							
								  HANDLE_COMPONENTS
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(NGTCP2_FOUND)
							 | 
						||
| 
								 | 
							
								  set(NGTCP2_LIBRARIES    ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY})
							 | 
						||
| 
								 | 
							
								  set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR})
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mark_as_advanced(NGTCP2_INCLUDE_DIRS NGTCP2_LIBRARIES)
							 |