aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/FindDBusMenuQt.cmake32
1 files changed, 26 insertions, 6 deletions
diff --git a/modules/FindDBusMenuQt.cmake b/modules/FindDBusMenuQt.cmake
index 33b9e113..5af70ef2 100644
--- a/modules/FindDBusMenuQt.cmake
+++ b/modules/FindDBusMenuQt.cmake
@@ -53,14 +53,34 @@ if(DBUSMENUQT_INCLUDE_DIR AND NOT DBUSMENUQT_VERSION)
if(EXISTS ${DBUSMENUQT_INCLUDE_DIR}/dbusmenu_version.h)
file(READ "${DBUSMENUQT_INCLUDE_DIR}/dbusmenu_version.h" DBUSMENUQT_VERSION_CONTENT)
- string(REGEX MATCH "\\(\\( *([0-9]+) *<<" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
- set(DBUSMENUQT_VERSION_MAJOR "${CMAKE_MATCH_1}")
+ if ("${DBUSMENUQT_VERSION_CONTENT}" MATCHES "DBUSMENUQT_VERSION_MAJOR") # introduced after 0.6.4, makes this code here more robust
- string(REGEX MATCH "\\|\\( *([0-9]+) *<<" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
- set(DBUSMENUQT_VERSION_MINOR "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "#define +DBUSMENUQT_VERSION_MAJOR +([0-9]+)" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+ set(DBUSMENUQT_VERSION_MAJOR "${CMAKE_MATCH_1}")
- string(REGEX MATCH "\\| *([0-9]+) *\\)" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
- set(DBUSMENUQT_VERSION_PATCH "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "#define +DBUSMENUQT_VERSION_MINOR +([0-9]+)" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+ set(DBUSMENUQT_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define +DBUSMENUQT_VERSION_PATCH +([0-9]+)" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+ set(DBUSMENUQT_VERSION_PATCH "${CMAKE_MATCH_1}")
+
+ else("${DBUSMENUQT_VERSION_CONTENT}" MATCHES "DBUSMENUQT_VERSION_MAJOR")
+ # In versions up to 0.6.4, the code for setting the version number in the header looked like
+ # shopw below. This made version checking quite un-obvious:
+ # #define DBUSMENUQT_VERSION \
+ # ((0 << 16) \
+ # |(6 << 8) \
+ # |4)
+
+ string(REGEX MATCH "\\(\\( *([0-9]+) *<<" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+ set(DBUSMENUQT_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "\\|\\( *([0-9]+) *<<" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+ set(DBUSMENUQT_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "\\| *([0-9]+) *\\)" _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+ set(DBUSMENUQT_VERSION_PATCH "${CMAKE_MATCH_1}")
+ endif("${DBUSMENUQT_VERSION_CONTENT}" MATCHES "DBUSMENUQT_VERSION_MAJOR")
endif(EXISTS ${DBUSMENUQT_INCLUDE_DIR}/dbusmenu_version.h)
set(DBUSMENUQT_VERSION "${DBUSMENUQT_VERSION_MAJOR}.${DBUSMENUQT_VERSION_MINOR}.${DBUSMENUQT_VERSION_PATCH}" CACHE STRING "Version number of DBusMenuQt" FORCE)