--- CMakeModules/FindVIGRA.cmake.orig +++ CMakeModules/FindVIGRA.cmake @@ -54,8 +54,28 @@ MESSAGE(FATAL_ERROR "Could not find vigra/configVersion.hxx or vigra/config_version.hxx. Your vigra installation seems to be corrupt.") ENDIF() FILE(STRINGS "${VIGRA_CONFIG_VERSION_HXX}" VIGRA_VERSION_HXX REGEX ".*#define +VIGRA_VERSION +\"") - STRING(REGEX REPLACE ".*#define +VIGRA_VERSION +\"([.0-9]+).*" "\\1" VIGRA_VERSION "${VIGRA_VERSION_HXX}") - IF(${VIGRA_VERSION} VERSION_EQUAL VIGRA_FIND_VERSION OR ${VIGRA_VERSION} VERSION_GREATER VIGRA_FIND_VERSION) + IF(VIGRA_VERSION_HXX) + STRING(REGEX REPLACE ".*#define +VIGRA_VERSION +\"([.0-9]+).*" "\\1" VIGRA_VERSION "${VIGRA_VERSION_HXX}") + ELSE() + # vigra >= 1.12 assembles VIGRA_VERSION from the individual MAJOR/MINOR/PATCH + # defines, so there is no longer a literal version string in the header. + SET(VIGRA_VERSION "") + FOREACH(_vigra_part MAJOR MINOR PATCH) + FILE(STRINGS "${VIGRA_CONFIG_VERSION_HXX}" _vigra_line + REGEX "#define +VIGRA_VERSION_${_vigra_part} +[0-9]+") + STRING(REGEX REPLACE ".*#define +VIGRA_VERSION_${_vigra_part} +([0-9]+).*" "\\1" + _vigra_num "${_vigra_line}") + IF(VIGRA_VERSION) + SET(VIGRA_VERSION "${VIGRA_VERSION}.${_vigra_num}") + ELSE() + SET(VIGRA_VERSION "${_vigra_num}") + ENDIF() + ENDFOREACH() + ENDIF() + IF(NOT VIGRA_VERSION) + MESSAGE(FATAL_ERROR "Could not determine the vigra version from ${VIGRA_CONFIG_VERSION_HXX}.") + ENDIF() + IF(NOT "${VIGRA_VERSION}" VERSION_LESS "${VIGRA_FIND_VERSION}") SET(VIGRA_VERSION_CHECK TRUE) MESSAGE(STATUS "VIGRA version: ${VIGRA_VERSION}") ELSE()