diff options
author | Peter Wu <peter@lekensteyn.nl> | 2019-04-19 11:50:08 +0100 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2019-04-19 17:29:11 +0000 |
commit | 8c2621754803ae0c0dca92f423c43222c1f61d9e (patch) | |
tree | a6cf8fd8e03d1fe04ba20909b950f56d7ca0be52 /cmake | |
parent | 3f9579e3f5f84262d0f8c849a0f98220fee8d722 (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.cmake | 35 |
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 ) |