aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rw-r--r--cmake/modules/FindGLIB2.cmake35
2 files changed, 25 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95822cd0a6..d182d43017 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -994,9 +994,8 @@ endmacro()
# The minimum package list
find_package(Git)
-set(GLIB2_MIN_VERSION 2.32.0)
reset_find_package(GLIB2 GLIB2_MAIN_INCLUDE_DIR GLIB2_INTERNAL_INCLUDE_DIR)
-find_package(GLIB2 REQUIRED)
+find_package(GLIB2 "2.32.0" REQUIRED)
include_directories(SYSTEM ${GLIB2_INCLUDE_DIRS})
reset_find_package(GMODULE2)
find_package(GMODULE2)
diff --git a/cmake/modules/FindGLIB2.cmake b/cmake/modules/FindGLIB2.cmake
index 2b55b742fe..b78430e4e8 100644
--- a/cmake/modules/FindGLIB2.cmake
+++ b/cmake/modules/FindGLIB2.cmake
@@ -24,19 +24,14 @@ FindWSWinLibs( "vcpkg-export-*" "GLIB2_HINTS" )
if (NOT WIN32)
find_package(PkgConfig)
-
- if( GLIB2_MIN_VERSION )
- pkg_search_module( GLIB2 glib-2.0>=${GLIB2_MIN_VERSION} )
- else()
- pkg_search_module( GLIB2 glib-2.0 )
- endif()
+ pkg_search_module( PC_GLIB2 glib-2.0 )
endif()
find_path( GLIB2_MAIN_INCLUDE_DIR
NAMES
glib.h
HINTS
- "${GLIB2_INCLUDEDIR}"
+ "${PC_GLIB2_INCLUDEDIR}"
"${GLIB2_HINTS}/include"
PATH_SUFFIXES
glib-2.0
@@ -54,7 +49,7 @@ find_library( GLIB2_LIBRARY
glib-2.0
libglib-2.0
HINTS
- "${GLIB2_LIBDIR}"
+ "${PC_GLIB2_LIBDIR}"
"${GLIB2_HINTS}/lib"
PATHS
/opt/gnome/lib64
@@ -84,11 +79,29 @@ find_path( GLIB2_INTERNAL_INCLUDE_DIR
)
+if(PC_GLIB2_VERSION)
+ set(GLIB2_VERSION ${PC_GLIB2_VERSION})
+elseif(GLIB2_INTERNAL_INCLUDE_DIR)
+ # On systems without pkg-config (e.g. Windows), search its header
+ # (available since the initial commit of GLib).
+ file(STRINGS ${GLIB2_INTERNAL_INCLUDE_DIR}/glibconfig.h GLIB_MAJOR_VERSION
+ REGEX "#define[ ]+GLIB_MAJOR_VERSION[ ]+[0-9]+")
+ string(REGEX MATCH "[0-9]+" GLIB_MAJOR_VERSION ${GLIB_MAJOR_VERSION})
+ file(STRINGS ${GLIB2_INTERNAL_INCLUDE_DIR}/glibconfig.h GLIB_MINOR_VERSION
+ REGEX "#define[ ]+GLIB_MINOR_VERSION[ ]+[0-9]+")
+ string(REGEX MATCH "[0-9]+" GLIB_MINOR_VERSION ${GLIB_MINOR_VERSION})
+ file(STRINGS ${GLIB2_INTERNAL_INCLUDE_DIR}/glibconfig.h GLIB_MICRO_VERSION
+ REGEX "#define[ ]+GLIB_MICRO_VERSION[ ]+[0-9]+")
+ string(REGEX MATCH "[0-9]+" GLIB_MICRO_VERSION ${GLIB_MICRO_VERSION})
+ set(GLIB2_VERSION ${GLIB_MAJOR_VERSION}.${GLIB_MINOR_VERSION}.${GLIB_MICRO_VERSION})
+else()
+ set(GLIB2_VERSION "")
+endif()
+
include( FindPackageHandleStandardArgs )
find_package_handle_standard_args( GLIB2
- DEFAULT_MSG
- GLIB2_LIBRARY
- GLIB2_MAIN_INCLUDE_DIR
+ REQUIRED_VARS GLIB2_LIBRARY GLIB2_MAIN_INCLUDE_DIR GLIB2_INTERNAL_INCLUDE_DIR
+ VERSION_VAR GLIB2_VERSION
)
if( GLIB2_FOUND )