| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- ############################################################################
- # FindMdebTLS.txt
- # Copyright (C) 2015 Belledonne Communications, Grenoble France
- #
- ############################################################################
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- #
- ############################################################################
- #
- # - Find the mbedTLS include file and library
- #
- # MBEDTLS_FOUND - system has mbedTLS
- # MBEDTLS_INCLUDE_DIRS - the mbedTLS include directory
- # MBEDTLS_LIBRARIES - The libraries needed to use mbedTLS
- include(CMakePushCheckState)
- include(CheckIncludeFile)
- include(CheckCSourceCompiles)
- include(CheckSymbolExists)
- find_path(MBEDTLS_INCLUDE_DIRS
- NAMES mbedtls/ssl.h
- PATH_SUFFIXES include
- )
- # find the three mbedtls library
- find_library(MBEDTLS_LIBRARY
- NAMES mbedtls
- )
- find_library(MBEDX509_LIBRARY
- NAMES mbedx509
- )
- find_library(MBEDCRYPTO_LIBRARY
- NAMES mbedcrypto
- )
- cmake_push_check_state(RESET)
- set(CMAKE_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIRS} ${CMAKE_REQUIRED_INCLUDES_${BUILD_TYPE}})
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRARY})
- # check we have a mbedTLS version 2 or above(all functions are prefixed mbedtls_)
- if(MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY)
- check_symbol_exists(mbedtls_ssl_init "mbedtls/ssl.h" MBEDTLS_V2)
- if(NOT MBEDTLS_V2)
- message ("MESSAGE: NO MBEDTLS_V2")
- message ("MESSAGE: MBEDTLS_LIBRARY=" ${MBEDTLS_LIBRARY})
- message ("MESSAGE: MBEDX509_LIBRARY=" ${MBEDX509_LIBRARY})
- message ("MESSAGE: MBEDCRYPTO_LIBRARY=" ${MBEDCRYPTO_LIBRARY})
- set (MBEDTLS_VERSION_1 On)
- else()
- # Are we mbdetls 2 or 3?
- # from version 3 and on, version number is given in include/mbedtls/build_info.h.
- # This file does not exists before version 3
- if (EXISTS "${MBEDTLS_INCLUDE_DIRS}/mbedtls/build_info.h")
- set (MBEDTLS_VERSION_3 On)
- else()
- set (MBEDTLS_VERSION_2 On)
- endif()
- endif()
- endif()
- check_symbol_exists(mbedtls_ssl_conf_dtls_srtp_protection_profiles "mbedtls/ssl.h" DTLS_SRTP_AVAILABLE)
- # Define the imported target for the three mbedtls libraries
- foreach(targetname "mbedtls" "mbedx509" "mbedcrypto")
- string(TOUPPER ${targetname} varprefix)
- add_library(${targetname} SHARED IMPORTED)
- if (WIN32)
- set_target_properties(${targetname} PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${${varprefix}_INCLUDE_DIRS}"
- IMPORTED_IMPLIB "${${varprefix}_LIBRARY}"
- )
- else()
- set_target_properties(${targetname} PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${${varprefix}_INCLUDE_DIRS}"
- IMPORTED_LOCATION "${${varprefix}_LIBRARY}"
- )
- endif()
- endforeach()
- unset(varprefix)
- # MBEDTLS_LIBRARIES only needs to contain the name of the targets
- set (MBEDTLS_LIBRARIES
- mbedtls
- mbedx509
- mbedcrypto
- )
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(MbedTLS
- DEFAULT_MSG
- MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARIES
- )
- cmake_pop_check_state()
- mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARIES DTLS_SRTP_AVAILABLE)
|