aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2019-04-19 11:50:08 +0100
committerPeter Wu <peter@lekensteyn.nl>2019-04-19 17:29:11 +0000
commit8c2621754803ae0c0dca92f423c43222c1f61d9e (patch)
treea6cf8fd8e03d1fe04ba20909b950f56d7ca0be52 /cmake
parent3f9579e3f5f84262d0f8c849a0f98220fee8d722 (diff)
CMake: bail out if minimum GLib version is not satisfied
Require glibconfig.h to be found and extract the version from this file, this has been present since the original GLib commit and is still present in the meson build system introduced with 2.53.4. Bug: 15706 Change-Id: I2e938a339d48d6815ed7cc46462735b93418377f Reviewed-on: https://code.wireshark.org/review/32894 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/FindGLIB2.cmake35
1 files changed, 24 insertions, 11 deletions
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 )