diff options
| -rw-r--r-- | modules/FindDBusMenuQt.cmake | 32 | 
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) | 
