Title: [280461] trunk
Revision
280461
Author
ape...@igalia.com
Date
2021-07-29 18:44:51 -0700 (Thu, 29 Jul 2021)

Log Message

[CMake] Fix missing libgpg-error not added to link commands as libgcrypt dep after r280423
https://bugs.webkit.org/show_bug.cgi?id=228581

Reviewed by Carlos Alberto Lopez Perez.

* Source/cmake/FindLibGcrypt.cmake: Manually search for libgpg-error, which is not listed
in libgcrypt.pc as a dependency, add an imported target for it, and add it as a dependency
of LibGcrypt::LibGcrypt to avoid missing symbols at link time.

Modified Paths

Diff

Modified: trunk/ChangeLog (280460 => 280461)


--- trunk/ChangeLog	2021-07-30 01:36:31 UTC (rev 280460)
+++ trunk/ChangeLog	2021-07-30 01:44:51 UTC (rev 280461)
@@ -1,5 +1,16 @@
 2021-07-29  Adrian Perez de Castro  <ape...@igalia.com>
 
+        [CMake] Fix missing libgpg-error not added to link commands as libgcrypt dep after r280423
+        https://bugs.webkit.org/show_bug.cgi?id=228581
+
+        Reviewed by Carlos Alberto Lopez Perez.
+
+        * Source/cmake/FindLibGcrypt.cmake: Manually search for libgpg-error, which is not listed
+        in libgcrypt.pc as a dependency, add an imported target for it, and add it as a dependency
+        of LibGcrypt::LibGcrypt to avoid missing symbols at link time.
+
+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
 

Modified: trunk/Source/cmake/FindLibGcrypt.cmake (280460 => 280461)


--- trunk/Source/cmake/FindLibGcrypt.cmake	2021-07-30 01:36:31 UTC (rev 280460)
+++ trunk/Source/cmake/FindLibGcrypt.cmake	2021-07-30 01:44:51 UTC (rev 280461)
@@ -41,8 +41,11 @@
 find_package(PkgConfig QUIET)
 find_program(LIBGCRYPTCONFIG_SCRIPT NAMES libgcrypt-config)
 if (PkgConfig_FOUND)
+    # XXX: The libgcrypt.pc file does not list gpg-error as a dependency,
+    #      resulting in linking errors; search for the latter as well.
     pkg_check_modules(PC_GCRYPT QUIET libgcrypt)
-    set(LibGcrypt_COMPILE_OPTIONS ${PC_GCRYPT_CFLAGS_OTHER})
+    pkg_check_modules(PC_GPGERROR QUIET gpg-error)
+    set(LibGcrypt_COMPILE_OPTIONS ${PC_GCRYPT_CFLAGS_OTHER} ${PC_GPGERROR_CFLAGS_OTHER})
     set(LibGcrypt_VERSION ${PC_GCRYPT_VERSION})
 elseif (LIBGCRYPTCONFIG_SCRIPT)
     execute_process(
@@ -67,7 +70,7 @@
     endif ()
 
     execute_process(
-        COMMAND "${LIBGCRYPTCONFIG_SCRIPT}" --cflags
+        COMMAND "${LIBGCRYPTCONFIG_SCRIPT}" --version
         RESULT_VARIABLE CONFIGSCRIPT_RESULT
         OUTPUT_VARIABLE CONFIGSCRIPT_VALUE
         OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -77,6 +80,19 @@
     endif ()
 endif ()
 
+find_path(LibGcrypt_GpgError_INCLUDE_DIR
+    NAMES gpg-error.h
+    HINTS ${PC_GPGERROR_INCLUDEDIR} ${PC_GPGERROR_INCLUDE_DIRS}
+          ${PC_GCRYPT_INCLUDEDIR} ${PC_GCRYPT_INCLUDE_DIRS}
+          ${LIBGCRYPT_SCRIPT_INCLUDE_HINT} ${LibGcrypt_INCLUDE_DIR}
+)
+
+find_library(LibGcrypt_GpgError_LIBRARY
+    NAMES ${LibGcrypt_GpgError_NAMES} gpg-error libgpg-error
+    HINTS ${PC_GPGERROR_LIBDIR} ${PC_GPGERROR_LIBRARY_DIRS}
+          ${PC_GCRYPT_LIBDIR} ${PC_GCRYPT_LIBRARY_DIRS} ${LIBGCRYPT_SCRIPT_LIB_HINT}
+)
+
 find_path(LibGcrypt_INCLUDE_DIR
     NAMES gcrypt.h
     HINTS ${PC_GCRYPT_INCLUDEDIR} ${PC_GCRYPT_INCLUDE_DIRS}
@@ -97,9 +113,18 @@
 find_package_handle_standard_args(LibGcrypt
     FOUND_VAR LibGcrypt_FOUND
     REQUIRED_VARS LibGcrypt_LIBRARY LibGcrypt_INCLUDE_DIR
+                  LibGcrypt_GpgError_LIBRARY LibGcrypt_GpgError_INCLUDE_DIR
     VERSION_VAR LibGcrypt_VERSION
 )
 
+if (LibGcrypt_GpgError_LIBRARY AND NOT TARGET LibGcrypt::GpgError)
+    add_library(LibGcrypt::GpgError UNKNOWN IMPORTED GLOBAL)
+    set_target_properties(LibGcrypt::GpgError PROPERTIES
+        IMPORTED_LOCATION "${LibGcrypt_GpgError_LIBRARY}"
+        INTERFACE_INCLUDE_DIRECTORIES "${LibGcrypt_GpgError_INCLUDE_DIR}"
+    )
+endif ()
+
 if (LibGcrypt_LIBRARY AND NOT TARGET LibGcrypt::LibGcrypt)
     add_library(LibGcrypt::LibGcrypt UNKNOWN IMPORTED GLOBAL)
     set_target_properties(LibGcrypt::LibGcrypt PROPERTIES
@@ -107,11 +132,13 @@
         INTERFACE_COMPILE_OPTIONS "${LibGcrypt_COMPILE_OPTIONS}"
         INTERFACE_INCLUDE_DIRECTORIES "${LibGcrypt_INCLUDE_DIR}"
     )
+    target_link_libraries(LibGcrypt::LibGcrypt INTERFACE LibGcrypt::GpgError)
 endif ()
 
-mark_as_advanced(LibGcrypt_INCLUDE_DIR LibGcrypt_LIBRARY)
+mark_as_advanced(LibGcrypt_INCLUDE_DIR LibGcrypt_LIBRARY
+    LibGcrypt_GpgError_INCLUDE_DIR LibGcrypt_GpgError_LIBRARY)
 
 if (LibGcrypt_FOUND)
-    set(LibGcrypt_LIBRARIES ${LibGcrypt_LIBRARY})
-    set(LibGcrypt_INCLUDE_DIRS ${LibGcrypt_INCLUDE_DIR})
+    set(LibGcrypt_LIBRARIES ${LibGcrypt_LIBRARY} ${LibGcrypt_GpgError_LIBRARY})
+    set(LibGcrypt_INCLUDE_DIRS ${LibGcrypt_INCLUDE_DIR} ${LibGcrypt_GpgError_INCLUDE_DIR})
 endif ()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to