File: FindMbedTLS.cmake

package info (click to toggle)
libssh 0.11.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,420 kB
  • sloc: ansic: 100,132; cpp: 421; sh: 186; makefile: 25; javascript: 20; python: 9
file content (141 lines) | stat: -rw-r--r-- 4,876 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# - Try to find mbedTLS
# Once done this will define
#
#  MBEDTLS_FOUND - system has mbedTLS
#  MBEDTLS_INCLUDE_DIRS - the mbedTLS include directory
#  MBEDTLS_LIBRARIES - Link these to use mbedTLS
#  MBEDTLS_DEFINITIONS - Compiler switches required for using mbedTLS
#=============================================================================
#  Copyright (c) 2017 Sartura d.o.o.
#
#  Author: Juraj Vijtiuk <juraj.vijtiuk@sartura.hr>
#
#  Distributed under the OSI-approved BSD License (the "License");
#  see accompanying file Copyright.txt for details.
#
#  This software is distributed WITHOUT ANY WARRANTY; without even the
#  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#  See the License for more information.
#=============================================================================
#


set(_MBEDTLS_ROOT_HINTS
    $ENV{MBEDTLS_ROOT_DIR}
    ${MBEDTLS_ROOT_DIR})

set(_MBEDTLS_ROOT_PATHS
    "$ENV{PROGRAMFILES}/libmbedtls")

set(_MBEDTLS_ROOT_HINTS_AND_PATHS
    HINTS ${_MBEDTLS_ROOT_HINTS}
    PATHS ${_MBEDTLS_ROOT_PATHS})


find_path(MBEDTLS_INCLUDE_DIR
    NAMES
        mbedtls/ssl.h
    HINTS
        ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
    PATH_SUFFIXES
       include
)

find_library(MBEDTLS_SSL_LIBRARY
        NAMES
            mbedtls
        HINTS
            ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
        PATH_SUFFIXES
            lib

)

find_library(MBEDTLS_CRYPTO_LIBRARY
        NAMES
            mbedcrypto
        HINTS
            ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
        PATH_SUFFIXES
            lib
)

find_library(MBEDTLS_X509_LIBRARY
        NAMES
            mbedx509
        HINTS
            ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
        PATH_SUFFIXES
            lib
)

set(MBEDTLS_LIBRARIES ${MBEDTLS_SSL_LIBRARY} ${MBEDTLS_CRYPTO_LIBRARY}
        ${MBEDTLS_X509_LIBRARY})

if (MBEDTLS_INCLUDE_DIR AND EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h")
    # mbedtls 2.8
    file(STRINGS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h" _mbedtls_version_str REGEX
            "^#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"[0-9]+.[0-9]+.[0-9]+\"")

    string(REGEX REPLACE "^.*MBEDTLS_VERSION_STRING.*([0-9]+.[0-9]+.[0-9]+).*"
            "\\1" MBEDTLS_VERSION "${_mbedtls_version_str}")
elseif (MBEDTLS_INCLUDE_DIR AND EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h")
    # mbedtls 3.6
    file(STRINGS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h" _mbedtls_version_str REGEX
            "^#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"[0-9]+.[0-9]+.[0-9]+\"")

    string(REGEX REPLACE "^.*MBEDTLS_VERSION_STRING.*([0-9]+.[0-9]+.[0-9]+).*"
            "\\1" MBEDTLS_VERSION "${_mbedtls_version_str}")
endif ()

include(FindPackageHandleStandardArgs)
if (MBEDTLS_VERSION)
    find_package_handle_standard_args(MbedTLS
        REQUIRED_VARS
            MBEDTLS_INCLUDE_DIR
            MBEDTLS_LIBRARIES
        VERSION_VAR
            MBEDTLS_VERSION
        FAIL_MESSAGE
            "Could NOT find mbedTLS, try to set the path to mbedTLS root folder
            in the system variable MBEDTLS_ROOT_DIR"
    )
else (MBEDTLS_VERSION)
    find_package_handle_standard_args(MbedTLS
        "Could NOT find mbedTLS, try to set the path to mbedTLS root folder in
        the system variable MBEDTLS_ROOT_DIR"
        MBEDTLS_INCLUDE_DIR
        MBEDTLS_LIBRARIES)
endif (MBEDTLS_VERSION)

# show the MBEDTLS_INCLUDE_DIRS and MBEDTLS_LIBRARIES variables only in the advanced view
mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARIES)

if(MBEDTLS_FOUND)
  if(NOT TARGET MbedTLS::mbedcrypto)
      add_library(MbedTLS::mbedcrypto UNKNOWN IMPORTED)
      set_target_properties(MbedTLS::mbedcrypto PROPERTIES
                            INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}"
                            INTERFACE_LINK_LIBRARIES MbedTLS::mbedcrypto
                            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
                            IMPORTED_LOCATION "${MBEDTLS_CRYPTO_LIBRARY}")
  endif()

  if(NOT TARGET MbedTLS::mbedx509)
      add_library(MbedTLS::mbedx509 UNKNOWN IMPORTED)
      set_target_properties(MbedTLS::mbedx509 PROPERTIES
                            INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}"
                            INTERFACE_LINK_LIBRARIES MbedTLS::mbedx509
                            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
                            IMPORTED_LOCATION "${MBEDTLS_X509_LIBRARY}")
  endif()

  if(NOT TARGET MbedTLS::mbedtls)
      add_library(MbedTLS::mbedtls UNKNOWN IMPORTED)
      set_target_properties(MbedTLS::mbedtls PROPERTIES
                            INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIR}"
                            INTERFACE_LINK_LIBRARIES MbedTLS::mbedtls
                            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
                            IMPORTED_LOCATION "${MBEDTLS_LIBRARY}")
  endif()
endif()