[gtk] LibNautilusExtension for GTK4 installs its pkgconfig file as libnautilus-extension-4.pc.

Need to explicitly check for v4. Otherwise, the v3 check will fail,
and it'll just use defaults.

[cmake] FindLibNautilusExtension4.cmake: Add a v4 check file.
This commit is contained in:
David Korth 2022-10-03 01:07:29 -04:00
parent 32dfd4fe8e
commit eeebb80f93
4 changed files with 70 additions and 45 deletions

View File

@ -0,0 +1,30 @@
# Find Gnome's libnautilus-extension.so.4 libraries and headers.
# If found, the following variables will be defined:
# - LibNautilusExtension4_FOUND: System has libnautilus-extension.
# - LibNautilusExtension4_INCLUDE_DIRS: libnautilus-extension include directories.
# - LibNautilusExtension4_LIBRARIES: libnautilus-extension libraries.
# - LibNautilusExtension4_DEFINITIONS: Compiler switches required for using libnautilus-extension.
# - LibNautilusExtension4_EXTENSION_DIR: Extensions directory. (for installation)
#
# In addition, a target Gnome::libnautilus-extension-4 will be created with all of
# these definitions.
#
# References:
# - https://cmake.org/Wiki/CMake:How_To_Find_Libraries
# - http://francesco-cek.com/cmake-and-gtk-3-the-easy-way/
#
INCLUDE(FindLibraryPkgConfig)
FIND_LIBRARY_PKG_CONFIG(LibNautilusExtension4
libnautilus-extension-4 # pkgconfig
libnautilus-extension/nautilus-properties-item.h # header
nautilus-extension # library
Gnome::libnautilus-extension-4 # imported target
)
# Extensions directory.
IF(LibNautilusExtension4_FOUND AND NOT LibNautilusExtension4_EXTENSION_DIR)
MESSAGE(WARNING "LibNautilusExtension4_EXTENSION_DIR is not set; using defaults.")
INCLUDE(DirInstallPaths)
SET(LibNautilusExtension4_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${DIR_INSTALL_LIB}/nautilus/extensions-4" CACHE INTERNAL "LibNautilusExtension4_EXTENSION_DIR")
ENDIF(LibNautilusExtension4_FOUND AND NOT LibNautilusExtension4_EXTENSION_DIR)

View File

@ -24,22 +24,21 @@ IF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND AND CairoGObj
# initialization function is called.
# Nautilus (GNOME)
FIND_PACKAGE(LibNautilusExtension)
FIND_PACKAGE(LibNautilusExtension) # v3
IF(LibNautilusExtension_FOUND)
# Check if it's v3 or v4.
IF(LibNautilusExtension_EXTENSION_DIR MATCHES 3\.0$)
# v3: Use the directory as-is.
SET(LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSEIF(LibNautilusExtension_EXTENSION_DIR MATCHES 4\.0$)
# v4: Replace the version number with 3.0.
STRING(REPLACE "extensions-4" "extensions-3.0" LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSE()
MESSAGE(STATUS "Unrecognized LibNautilusExtension version found. Using the default extensions directory.")
SET(LibNautilusExtension3_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-3.0")
ENDIF()
# Found v3.
SET(LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSE(LibNautilusExtension_FOUND)
MESSAGE(STATUS "LibNautilusExtension not found. Using the default extensions directory.")
SET(LibNautilusExtension3_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-3.0")
# Check if v4 is installed.
FIND_PACKAGE(LibNautilusExtension4)
IF(LibNautilusExtension4_FOUND)
# v4: Replace the version number with 3.0.
STRING(REPLACE "extensions-4" "extensions-3.0" LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension4_EXTENSION_DIR}")
ELSE(LibNautilusExtension4_FOUND)
# Neither v3 nor v4 were found.
MESSAGE(STATUS "LibNautilusExtension not found. Using the default extensions directory.")
SET(LibNautilusExtension3_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-3.0")
ENDIF(LibNautilusExtension4_FOUND)
ENDIF(LibNautilusExtension_FOUND)
# Caja (MATE)

View File

@ -19,23 +19,21 @@ IF(GLib2_FOUND AND GObject2_FOUND AND GIO_FOUND AND GIO-UNIX_FOUND AND GdkPixbuf
# initialization function is called.
# Nautilus (GNOME)
FIND_PACKAGE(LibNautilusExtension)
IF(LibNautilusExtension_FOUND)
# Check if it's v3 or v4.
IF(LibNautilusExtension_EXTENSION_DIR MATCHES 4\.0$)
# v4: Use the directory as-is.
SET(LibNautilusExtension4_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSEIF(LibNautilusExtension_EXTENSION_DIR MATCHES 3\.0$)
FIND_PACKAGE(LibNautilusExtension4) # v4
IF(LibNautilusExtension4_FOUND)
# Found v4.
ELSE(LibNautilusExtension4_FOUND)
# Check if v3 is installed.
FIND_PACKAGE(LibNautilusExtension)
IF(LibNautilusExtension)
# v3: Replace the version number with 4.
STRING(REPLACE "extensions-3.0" "extensions-4.0" LibNautilusExtension4_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSE()
MESSAGE(STATUS "Unrecognized LibNautilusExtension version found. Using the default extensions directory.")
STRING(REPLACE "extensions-3.0" "extensions-4.0" LibNautilusExtension4_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSE(LibNautilusExtension)
# Neither v3 nor v4 were found.
MESSAGE(STATUS "LibNautilusExtension4 not found. Using the default extensions directory.")
SET(LibNautilusExtension4_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-4")
ENDIF()
ELSE(LibNautilusExtension_FOUND)
MESSAGE(STATUS "LibNautilusExtension not found. Using the default extensions directory.")
SET(LibNautilusExtension4_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-4")
ENDIF(LibNautilusExtension_FOUND)
ENDIF(LibNautilusExtension)
ENDIF(LibNautilusExtension4_FOUND)
ELSE()
# GTK 4.x (or required dependencies) were not found.
# Disable the GTK4 frontend.

View File

@ -68,25 +68,23 @@ IF(BUILD_GTK2)
ENDIF(BUILD_GTK2)
IF(BUILD_GTK3 OR BUILD_GTK4)
# Nautilus (GNOME)
FIND_PACKAGE(LibNautilusExtension)
IF(LibNautilusExtension_FOUND)
# Check if it's v3 or v4.
IF(LibNautilusExtension_EXTENSION_DIR MATCHES 3\.0$)
SET(LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
STRING(REPLACE "extensions-3.0" "extensions-4" LibNautilusExtension4_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSEIF(LibNautilusExtension_EXTENSION_DIR MATCHES 4\.0$)
STRING(REPLACE "extensions-4" "extensions-3.0" LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
SET(LibNautilusExtension4_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSE()
MESSAGE(STATUS "Unrecognized LibNautilusExtension version found. Using the default extensions directory.")
SET(LibNautilusExtension3_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-3.0")
SET(LibNautilusExtension4_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-4")
ENDIF()
ELSE(LibNautilusExtension_FOUND)
FIND_PACKAGE(LibNautilusExtension) # v3
FIND_PACKAGE(LibNautilusExtension4) # v4
IF(LibNautilusExtension_FOUND AND LibNautilusExtnsion4_FOUND)
# Found both versions. (...not normally possible?)
ELSEIF(LibNautilusExtension_FOUND)
# Found v3 but not v4. Use defaults for v4.
SET(LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
STRING(REPLACE "extensions-3.0" "extensions-4" LibNautilusExtension4_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSEIF(LibNautilusExtension4_FOUND)
# Found v4 but not v3. Use defaults for v3.
STRING(REPLACE "extensions-4" "extensions-3.0" LibNautilusExtension3_EXTENSION_DIR "${LibNautilusExtension_EXTENSION_DIR}")
ELSE()
# Neither v3 nor v4 were found.
MESSAGE(STATUS "LibNautilusExtension not found. Using the default extensions directory.")
SET(LibNautilusExtension3_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-3.0")
SET(LibNautilusExtension4_EXTENSION_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/nautilus/extensions-4")
ENDIF(LibNautilusExtension_FOUND)
ENDIF()
ENDIF(BUILD_GTK3 OR BUILD_GTK4)
# Check for C library functions.