Title: [280423] trunk
Revision
280423
Author
ape...@igalia.com
Date
2021-07-29 08:16:03 -0700 (Thu, 29 Jul 2021)

Log Message

[CMake] Use an imported target for the libgcrypt library
https://bugs.webkit.org/show_bug.cgi?id=228581

Reviewed by Michael Catanzaro.

.:

* Source/cmake/FindLibGcrypt.cmake: Replaced find module by a new one which defines a
LibGcrypt::LibGcrypt imported target, using more modern CMake constructs.
* Source/cmake/OptionsGTK.cmake: Use the LibGcrypt::LibGcrypt imported target.
* Source/cmake/OptionsWPE.cmake: Ditto.

Source/WebCore:

No new tests needed.

* platform/GCrypt.cmake: Use the LibGcrypt::LibGcrypt imported target.
* platform/GStreamer.cmake: Remove unneeded usage of ${LIBGCRYPT_INCLUDE_DIRS} and
${LIBGCRYPT_LIBRARIES}, as those are handled now by making WebCore depend on the
LibGcrypt::LibGcrypt imported target.

Modified Paths

Diff

Modified: trunk/ChangeLog (280422 => 280423)


--- trunk/ChangeLog	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/ChangeLog	2021-07-29 15:16:03 UTC (rev 280423)
@@ -1,3 +1,15 @@
+2021-07-29  Adrian Perez de Castro  <ape...@igalia.com>
+
+        [CMake] Use an imported target for the libgcrypt library
+        https://bugs.webkit.org/show_bug.cgi?id=228581
+
+        Reviewed by Michael Catanzaro.
+
+        * Source/cmake/FindLibGcrypt.cmake: Replaced find module by a new one which defines a
+        LibGcrypt::LibGcrypt imported target, using more modern CMake constructs.
+        * Source/cmake/OptionsGTK.cmake: Use the LibGcrypt::LibGcrypt imported target.
+        * Source/cmake/OptionsWPE.cmake: Ditto.
+
 2021-07-28  Philippe Normand  <pnorm...@igalia.com>
 
         [WPE][GTK] SVN_REVISION drifting away if bots don't re-run cmake

Modified: trunk/Source/WebCore/ChangeLog (280422 => 280423)


--- trunk/Source/WebCore/ChangeLog	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/Source/WebCore/ChangeLog	2021-07-29 15:16:03 UTC (rev 280423)
@@ -1,3 +1,17 @@
+2021-07-29  Adrian Perez de Castro  <ape...@igalia.com>
+
+        [CMake] Use an imported target for the libgcrypt library
+        https://bugs.webkit.org/show_bug.cgi?id=228581
+
+        Reviewed by Michael Catanzaro.
+
+        No new tests needed.
+
+        * platform/GCrypt.cmake: Use the LibGcrypt::LibGcrypt imported target.
+        * platform/GStreamer.cmake: Remove unneeded usage of ${LIBGCRYPT_INCLUDE_DIRS} and
+        ${LIBGCRYPT_LIBRARIES}, as those are handled now by making WebCore depend on the
+        LibGcrypt::LibGcrypt imported target.
+
 2021-07-29  Michael Catanzaro  <mcatanz...@gnome.org>
 
         [WPE][GTK] .asc file extension is appended to filename of text/plain downloads

Modified: trunk/Source/WebCore/platform/GCrypt.cmake (280422 => 280423)


--- trunk/Source/WebCore/platform/GCrypt.cmake	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/Source/WebCore/platform/GCrypt.cmake	2021-07-29 15:16:03 UTC (rev 280423)
@@ -5,8 +5,5 @@
 endif ()
 
 list(APPEND WebCore_LIBRARIES
-    ${LIBGCRYPT_LIBRARIES}
+    LibGcrypt::LibGcrypt
 )
-list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES
-    ${LIBGCRYPT_INCLUDE_DIRS}
-)

Modified: trunk/Source/WebCore/platform/GStreamer.cmake (280422 => 280423)


--- trunk/Source/WebCore/platform/GStreamer.cmake	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/Source/WebCore/platform/GStreamer.cmake	2021-07-29 15:16:03 UTC (rev 280423)
@@ -187,14 +187,6 @@
         platform/graphics/gstreamer/eme/CDMProxyClearKey.cpp
     )
 
-    list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES
-        ${LIBGCRYPT_INCLUDE_DIRS}
-    )
-
-    list(APPEND WebCore_LIBRARIES
-        ${LIBGCRYPT_LIBRARIES} -lgpg-error
-    )
-
     if (ENABLE_THUNDER)
         list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES
             ${THUNDER_INCLUDE_DIRS}

Modified: trunk/Source/cmake/FindLibGcrypt.cmake (280422 => 280423)


--- trunk/Source/cmake/FindLibGcrypt.cmake	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/Source/cmake/FindLibGcrypt.cmake	2021-07-29 15:16:03 UTC (rev 280423)
@@ -1,22 +1,5 @@
-#.rst
-# FindLibGcrypt
-# -------------
-#
-# Finds the Libgcrypt library.
-#
-# This will define the following variables:
-#
-# ``LIBGCRYPT_FOUND``
-#     True if the requested version of gcrypt was found
-# ``LIBGCRYPT_VERSION``
-#     The version of gcrypt that was found
-# ``LIBGCRYPT_INCLUDE_DIRS``
-#     The gcrypt include directories
-# ``LIBGCRYPT_LIBRARIES``
-#     The linker libraries needed to use the gcrypt library
-
 # Copyright 2014 Nicolás Alvarez <nicolas.alva...@gmail.com>
-# Copyright 2016 Igalia S.L
+# Copyright 2016, 2021 Igalia S.L
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -41,51 +24,94 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+#[=======================================================================[.rst:
+FindGcrypt
+----------
+
+Find libgcrypt headers and libraries.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+``LibGcrypt::LibGcrypt``
+  The libgcrypt library, if found.
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
 find_program(LIBGCRYPTCONFIG_SCRIPT NAMES libgcrypt-config)
-if (LIBGCRYPTCONFIG_SCRIPT)
+if (PkgConfig_FOUND)
+    pkg_check_modules(PC_GCRYPT QUIET libgcrypt)
+    set(LibGcrypt_COMPILE_OPTIONS ${PC_GCRYPT_CFLAGS_OTHER})
+    set(LibGcrypt_VERSION ${PC_GCRYPT_VERSION})
+elseif (LIBGCRYPTCONFIG_SCRIPT)
     execute_process(
         COMMAND "${LIBGCRYPTCONFIG_SCRIPT}" --prefix
         RESULT_VARIABLE CONFIGSCRIPT_RESULT
-        OUTPUT_VARIABLE PREFIX
+        OUTPUT_VARIABLE LIBGCRYPT_PREFIX
         OUTPUT_STRIP_TRAILING_WHITESPACE
     )
     if (CONFIGSCRIPT_RESULT EQUAL 0)
-        set(LIBGCRYPT_LIB_HINT "${PREFIX}/lib")
-        set(LIBGCRYPT_INCLUDE_HINT "${PREFIX}/include")
+        set(LIBGCRYPT_SCRIPT_LIB_HINT "${LIBGCRYPT_PREFIX}/lib")
+        set(LIBGCRYPT_SCRIPT_INCLUDE_HINT "${LIBGCRYPT_PREFIX}/include")
     endif ()
+
+    execute_process(
+        COMMAND "${LIBGCRYPTCONFIG_SCRIPT}" --cflags
+        RESULT_VARIABLE CONFIGSCRIPT_RESULT
+        OUTPUT_VARIABLE CONFIGSCRIPT_VALUE
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+    if (CONFIGSCRIPT_RESULT EQUAL 0)
+        set(LibGcrypt_COMPILE_OPTIONS ${CONFIGSCRIPT_VALUE})
+    endif ()
+
+    execute_process(
+        COMMAND "${LIBGCRYPTCONFIG_SCRIPT}" --cflags
+        RESULT_VARIABLE CONFIGSCRIPT_RESULT
+        OUTPUT_VARIABLE CONFIGSCRIPT_VALUE
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+    if (CONFIGSCRIPT_RESULT EQUAL 0)
+        string(REGEX MATCH "^([0-9]+\.[0-9]+\.[0-9]+)" LibGcrypt_VERSION "${CONFIGSCRIPT_VALUE}")
+    endif ()
 endif ()
 
-find_library(LIBGCRYPT_LIBRARY
-    NAMES gcrypt
-    HINTS ${LIBGCRYPT_LIB_HINT}
-)
-find_path(LIBGCRYPT_INCLUDE_DIR
+find_path(LibGcrypt_INCLUDE_DIR
     NAMES gcrypt.h
-    HINTS ${LIBGCRYPT_INCLUDE_HINT}
+    HINTS ${PC_GCRYPT_INCLUDEDIR} ${PC_GCRYPT_INCLUDE_DIRS}
+          ${LIBGCRYPT_SCRIPT_INCLUDE_HINT} ${LibGcrypt_INCLUDE_DIR}
 )
 
-if (LIBGCRYPT_INCLUDE_DIR)
+find_library(LibGcrypt_LIBRARY
+    NAMES ${LibGcrypt_NAMES} gcrypt libgcrypt
+    HINTS ${PC_GCRYPT_LIBDIR} ${PC_GCRYPT_LIBRARY_DIRS} ${LIBGCRYPT_SCRIPT_LIB_HINT}
+)
+
+if (LibGcrypt_INCLUDE_DIR AND NOT LibGcrypt_VERSION)
     file(STRINGS ${LIBGCRYPT_INCLUDE_DIR}/gcrypt.h GCRYPT_H REGEX "^#define GCRYPT_VERSION ")
-    string(REGEX REPLACE "^#define GCRYPT_VERSION \"(.*)\".*$" "\\1" LIBGCRYPT_VERSION "${GCRYPT_H}")
+    string(REGEX REPLACE "^#define GCRYPT_VERSION \"(.*)\".*$" "\\1" LibGcrypt_VERSION "${GCRYPT_H}")
 endif ()
 
 include(FindPackageHandleStandardArgs)
-
 find_package_handle_standard_args(LibGcrypt
-    FOUND_VAR LIBGCRYPT_FOUND
-    REQUIRED_VARS LIBGCRYPT_LIBRARY LIBGCRYPT_INCLUDE_DIR
-    VERSION_VAR LIBGCRYPT_VERSION
+    FOUND_VAR LibGcrypt_FOUND
+    REQUIRED_VARS LibGcrypt_LIBRARY LibGcrypt_INCLUDE_DIR
+    VERSION_VAR LibGcrypt_VERSION
 )
-if (LIBGCRYPT_FOUND)
-    set(LIBGCRYPT_LIBRARIES ${LIBGCRYPT_LIBRARY})
-    set(LIBGCRYPT_INCLUDE_DIRS ${LIBGCRYPT_INCLUDE_DIR})
+
+if (LibGcrypt_LIBRARY AND NOT TARGET LibGcrypt::LibGcrypt)
+    add_library(LibGcrypt::LibGcrypt UNKNOWN IMPORTED GLOBAL)
+    set_target_properties(LibGcrypt::LibGcrypt PROPERTIES
+        IMPORTED_LOCATION "${LibGcrypt_LIBRARY}"
+        INTERFACE_COMPILE_OPTIONS "${LibGcrypt_COMPILE_OPTIONS}"
+        INTERFACE_INCLUDE_DIRECTORIES "${LibGcrypt_INCLUDE_DIR}"
+    )
 endif ()
 
-mark_as_advanced(LIBGCRYPT_LIBRARY LIBGCRYPT_INCLUDE_DIR LIBGCRYPTCONFIG_SCRIPT)
+mark_as_advanced(LibGcrypt_INCLUDE_DIR LibGcrypt_LIBRARY)
 
-include(FeatureSummary)
-set_package_properties(LibGcrypt PROPERTIES
-    DESCRIPTION "A general purpose cryptographic library based on the code from GnuPG."
-    URL "http://www.gnu.org/software/libgcrypt/"
-)
-
+if (LibGcrypt_FOUND)
+    set(LibGcrypt_LIBRARIES ${LibGcrypt_LIBRARY})
+    set(LibGcrypt_INCLUDE_DIRS ${LibGcrypt_INCLUDE_DIR})
+endif ()

Modified: trunk/Source/cmake/OptionsGTK.cmake (280422 => 280423)


--- trunk/Source/cmake/OptionsGTK.cmake	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/Source/cmake/OptionsGTK.cmake	2021-07-29 15:16:03 UTC (rev 280423)
@@ -320,7 +320,7 @@
     if (NOT LIBTASN1_FOUND)
         message(FATAL_ERROR "libtasn1 is required to enable Web Crypto API support.")
     endif ()
-    if (LIBGCRYPT_VERSION VERSION_LESS 1.7.0)
+    if (LibGcrypt_VERSION VERSION_LESS 1.7.0)
         message(FATAL_ERROR "libgcrypt 1.7.0 is required to enable Web Crypto API support.")
     endif ()
 endif ()

Modified: trunk/Source/cmake/OptionsWPE.cmake (280422 => 280423)


--- trunk/Source/cmake/OptionsWPE.cmake	2021-07-29 14:56:22 UTC (rev 280422)
+++ trunk/Source/cmake/OptionsWPE.cmake	2021-07-29 15:16:03 UTC (rev 280423)
@@ -184,7 +184,7 @@
     if (NOT LIBTASN1_FOUND)
         message(FATAL_ERROR "libtasn1 is required to enable Web Crypto API support.")
     endif ()
-    if (LIBGCRYPT_VERSION VERSION_LESS 1.7.0)
+    if (LibGcrypt_VERSION VERSION_LESS 1.7.0)
         message(FATAL_ERROR "libgcrypt 1.7.0 is required to enable Web Crypto API support.")
     endif ()
 endif ()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to