Handle glib optional components properly

Fixes: QTBUG-97929
Pick-to: 6.3
Change-Id: Ic73548cb10680a2ccd60faed2b0548c82892eaa1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Ilya Fedin 2022-01-26 00:32:30 +04:00
parent 2a192c5f18
commit 5a0849ed6b
3 changed files with 34 additions and 20 deletions

View File

@ -73,24 +73,24 @@ find_library(GTHREAD2_LIBRARIES
pkg_check_modules(PC_GOBJECT QUIET gobject-2.0)
find_path(GOBJECT_INCLUDE_DIRS
find_path(GLIB2_GOBJECT_INCLUDE_DIRS
NAMES glib-object.h
HINTS ${PC_GOBJECT_INCLUDEDIR}
PATH_SUFFIXES glib-2.0)
find_library(GOBJECT_LIBRARIES
find_library(GLIB2_GOBJECT_LIBRARIES
NAMES gobject-2.0
HINTS ${PC_GOBJECT_LIBDIR}
)
pkg_check_modules(PC_GIO QUIET gio-2.0)
find_path(GIO_INCLUDE_DIRS
find_path(GLIB2_GIO_INCLUDE_DIRS
NAMES gio/gio.h
HINTS ${PC_GIO_INCLUDEDIR}
PATH_SUFFIXES glib-2.0)
find_library(GIO_LIBRARIES
find_library(GLIB2_GIO_LIBRARIES
NAMES gio-2.0
HINTS ${PC_GIO_LIBDIR}
)
@ -106,18 +106,30 @@ find_path(GLIB2_INTERNAL_INCLUDE_DIR glibconfig.h
# for now it is optional
if(GLIB2_INTERNAL_INCLUDE_DIR)
list(APPEND GLIB2_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
list(APPEND GOBJECT_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
list(APPEND GIO_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
list(APPEND GLIB2_GOBJECT_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
list(APPEND GLIB2_GIO_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
endif()
# Deprecated synonyms
set(GLIB2_INCLUDE_DIR "${GLIB2_INCLUDE_DIRS}")
set(GLIB2_LIBRARY "${GLIB2_LIBRARIES}")
set(GLIB2_GOBJECT_INCLUDE_DIR "${GLIB2_GOBJECT_INCLUDE_DIRS}")
set(GLIB2_GOBJECT_LIBRARY "${GLIB2_GOBJECT_LIBRARIES}")
set(GLIB2_GIO_INCLUDE_DIR "${GLIB2_GIO_INCLUDE_DIRS}")
set(GLIB2_GIO_LIBRARY "${GLIB2_GIO_LIBRARIES}")
if(GLIB2_GOBJECT_LIBRARIES AND GLIB2_GOBJECT_INCLUDE_DIRS)
set(GLIB2_GOBJECT_FOUND TRUE)
endif()
if(GLIB2_GIO_LIBRARIES AND GLIB2_GIO_INCLUDE_DIRS)
set(GLIB2_GIO_FOUND TRUE)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLIB2 DEFAULT_MSG GLIB2_LIBRARIES GTHREAD2_LIBRARIES GLIB2_INCLUDE_DIRS)
find_package_handle_standard_args(GOBJECT DEFAULT_MSG GOBJECT_LIBRARIES GOBJECT_INCLUDE_DIRS)
find_package_handle_standard_args(GIO DEFAULT_MSG GIO_LIBRARIES GIO_INCLUDE_DIRS)
find_package_handle_standard_args(GLIB2
REQUIRED_VARS GLIB2_LIBRARIES GTHREAD2_LIBRARIES GLIB2_INCLUDE_DIRS
HANDLE_COMPONENTS)
if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
add_library(GLIB2::GLIB2 UNKNOWN IMPORTED)
@ -127,26 +139,26 @@ if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_INCLUDE_DIRS}")
endif()
if(GOBJECT_FOUND AND NOT TARGET GLIB2::GOBJECT)
if(GLIB2_GOBJECT_FOUND AND NOT TARGET GLIB2::GOBJECT)
add_library(GLIB2::GOBJECT UNKNOWN IMPORTED)
set_target_properties(GLIB2::GOBJECT PROPERTIES
IMPORTED_LOCATION "${GOBJECT_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GOBJECT_INCLUDE_DIRS}")
IMPORTED_LOCATION "${GLIB2_GOBJECT_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_GOBJECT_INCLUDE_DIRS}")
endif()
if(GIO_FOUND AND NOT TARGET GLIB2::GIO)
if(GLIB2_GIO_FOUND AND NOT TARGET GLIB2::GIO)
add_library(GLIB2::GIO UNKNOWN IMPORTED)
set_target_properties(GLIB2::GIO PROPERTIES
IMPORTED_LOCATION "${GIO_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GIO_INCLUDE_DIRS}")
IMPORTED_LOCATION "${GLIB2_GIO_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_GIO_INCLUDE_DIRS}")
endif()
mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_INCLUDE_DIR
GLIB2_LIBRARIES GLIB2_LIBRARY
GOBJECT_INCLUDE_DIRS GOBJECT_INCLUDE_DIR
GOBJECT_LIBRARIES GOBJECT_LIBRARY
GIO_INCLUDE_DIRS GIO_INCLUDE_DIR
GIO_LIBRARIES GIO_LIBRARY)
GLIB2_GOBJECT_INCLUDE_DIRS GLIB2_GOBJECT_INCLUDE_DIR
GLIB2_GOBJECT_LIBRARIES GLIB2_GOBJECT_LIBRARY
GLIB2_GIO_INCLUDE_DIRS GLIB2_GIO_INCLUDE_DIR
GLIB2_GIO_LIBRARIES GLIB2_GIO_LIBRARY)
include(FeatureSummary)
set_package_properties(GLIB2 PROPERTIES

View File

@ -54,6 +54,8 @@ SSL_free(SSL_new(0));
")
qt_find_package(GSSAPI PROVIDED_TARGETS GSSAPI::GSSAPI MODULE_NAME network QMAKE_LIB gssapi)
qt_find_package(GLIB2 OPTIONAL_COMPONENTS GOBJECT PROVIDED_TARGETS GLIB2::GOBJECT MODULE_NAME core QMAKE_LIB gobject)
qt_find_package(GLIB2 OPTIONAL_COMPONENTS GIO PROVIDED_TARGETS GLIB2::GIO MODULE_NAME core QMAKE_LIB gio)
#### Tests

View File

@ -14,6 +14,6 @@ if(ANDROID)
add_subdirectory(android)
endif()
if(QT_FEATURE_glib)
if(QT_FEATURE_glib AND TARGET GLIB2::GOBJECT AND TARGET GLIB2::GIO)
add_subdirectory(glib)
endif()