[cmake][GStreamer][MSE][EME] Build MSE and EME code after refactoring
[WebKit.git] / Source / cmake / FindLibGcrypt.cmake
1 #.rst
2 # FindLibGcrypt
3 # -------------
4 #
5 # Finds the Libgcrypt library.
6 #
7 # This will define the following variables:
8 #
9 # ``LIBGCRYPT_FOUND``
10 #     True if the requested version of gcrypt was found
11 # ``LIBGCRYPT_VERSION``
12 #     The version of gcrypt that was found
13 # ``LIBGCRYPT_INCLUDE_DIRS``
14 #     The gcrypt include directories
15 # ``LIBGCRYPT_LIBRARIES``
16 #     The linker libraries needed to use the gcrypt library
17
18 # Copyright 2014 Nicol├ís Alvarez <nicolas.alvarez@gmail.com>
19 # Copyright 2016 Igalia S.L
20 #
21 # Redistribution and use in source and binary forms, with or without
22 # modification, are permitted provided that the following conditions
23 # are met:
24 #
25 # 1. Redistributions of source code must retain the copyright
26 #    notice, this list of conditions and the following disclaimer.
27 # 2. Redistributions in binary form must reproduce the copyright
28 #    notice, this list of conditions and the following disclaimer in the
29 #    documentation and/or other materials provided with the distribution.
30 # 3. The name of the author may not be used to endorse or promote products
31 #    derived from this software without specific prior written permission.
32 #
33 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
34 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
35 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
36 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
37 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
38 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
39 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
40 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
41 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
42 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43
44 find_program(LIBGCRYPTCONFIG_SCRIPT NAMES libgcrypt-config)
45 if (LIBGCRYPTCONFIG_SCRIPT)
46     execute_process(
47         COMMAND "${LIBGCRYPTCONFIG_SCRIPT}" --prefix
48         RESULT_VARIABLE CONFIGSCRIPT_RESULT
49         OUTPUT_VARIABLE PREFIX
50         OUTPUT_STRIP_TRAILING_WHITESPACE
51     )
52     if (CONFIGSCRIPT_RESULT EQUAL 0)
53         set(LIBGCRYPT_LIB_HINT "${PREFIX}/lib")
54         set(LIBGCRYPT_INCLUDE_HINT "${PREFIX}/include")
55     endif ()
56 endif ()
57
58 find_library(LIBGCRYPT_LIBRARY
59     NAMES gcrypt
60     HINTS ${LIBGCRYPT_LIB_HINT}
61 )
62 find_path(LIBGCRYPT_INCLUDE_DIR
63     NAMES gcrypt.h
64     HINTS ${LIBGCRYPT_INCLUDE_HINT}
65 )
66
67 if (LIBGCRYPT_INCLUDE_DIR)
68     file(STRINGS ${LIBGCRYPT_INCLUDE_DIR}/gcrypt.h GCRYPT_H REGEX "^#define GCRYPT_VERSION ")
69     string(REGEX REPLACE "^#define GCRYPT_VERSION \"(.*)\".*$" "\\1" LIBGCRYPT_VERSION "${GCRYPT_H}")
70 endif ()
71
72 include(FindPackageHandleStandardArgs)
73
74 find_package_handle_standard_args(LibGcrypt
75     FOUND_VAR LIBGCRYPT_FOUND
76     REQUIRED_VARS LIBGCRYPT_LIBRARY LIBGCRYPT_INCLUDE_DIR
77     VERSION_VAR LIBGCRYPT_VERSION
78 )
79 if (LIBGCRYPT_FOUND)
80     set(LIBGCRYPT_LIBRARIES ${LIBGCRYPT_LIBRARY})
81     set(LIBGCRYPT_INCLUDE_DIRS ${LIBGCRYPT_INCLUDE_DIR})
82 endif ()
83
84 mark_as_advanced(LIBGCRYPT_LIBRARY LIBGCRYPT_INCLUDE_DIR)
85
86 include(FeatureSummary)
87 set_package_properties(LibGcrypt PROPERTIES
88     DESCRIPTION "A general purpose cryptographic library based on the code from GnuPG."
89     URL "http://www.gnu.org/software/libgcrypt/"
90 )
91