d1f3bfe50e
For things where we may have 2 major versions of the same software installed in parallel (think of Qt and Python) make sure our version selection gets this right.
47 lines
2.0 KiB
CMake
47 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
|
|
if (NOT MAJOR_TEST_MODULE OR NOT MAJOR_TEST_VERSION)
|
|
message(FATAL_ERROR "test selection variables not set up")
|
|
endif ()
|
|
|
|
if (MAJOR_TEST_NO_LANGUAGES)
|
|
project(major_detect_${MAJOR_TEST_MODULE}_${MAJOR_TEST_VERSION} NONE)
|
|
else ()
|
|
project(major_detect_${MAJOR_TEST_MODULE}_${MAJOR_TEST_VERSION})
|
|
endif ()
|
|
|
|
find_package(${MAJOR_TEST_MODULE} ${MAJOR_TEST_VERSION})
|
|
|
|
if (MAJOR_TEST_VERSION_VAR)
|
|
set(VERSION_VAR "${MAJOR_TEST_VERSION_VAR}")
|
|
else ()
|
|
set(VERSION_VAR "${MAJOR_TEST_MODULE}_VERSION_STRING")
|
|
endif ()
|
|
|
|
string(TOUPPER "${MAJOR_TEST_MODULE}" MODULE_UPPER)
|
|
|
|
if ( ( ${MAJOR_TEST_MODULE}_FOUND OR ${MODULE_UPPER}_FOUND ) AND "${VERSION_VAR}")
|
|
message(STATUS "${VERSION_VAR} is '${${VERSION_VAR}}'")
|
|
if ("${VERSION_VAR}" VERSION_LESS MAJOR_TEST_VERSION)
|
|
message(SEND_ERROR "Found version ${${VERSION_VAR}} is less than requested major version ${MAJOR_TEST_VERSION}")
|
|
endif ()
|
|
math(EXPR V_PLUS_ONE "${MAJOR_TEST_VERSION} + 1")
|
|
if ("${VERSION_VAR}" VERSION_GREATER V_PLUS_ONE)
|
|
message(SEND_ERROR "Found version ${${VERSION_VAR}} is greater than requested major version ${MAJOR_TEST_VERSION}")
|
|
endif ()
|
|
endif ()
|
|
|
|
if ( ( ${MAJOR_TEST_MODULE}_FOUND OR ${MODULE_UPPER}_FOUND ) AND ${MAJOR_TEST_MODULE}_VERSION_MAJOR)
|
|
message(STATUS "${MAJOR_TEST_MODULE}_VERSION_MAJOR is '${${MAJOR_TEST_MODULE}_VERSION_MAJOR}'")
|
|
if (NOT ${MAJOR_TEST_VERSION} EQUAL ${MAJOR_TEST_MODULE}_VERSION_MAJOR)
|
|
message(SEND_ERROR "We requested major version ${MAJOR_TEST_VERSION} but ${MAJOR_TEST_MODULE} set ${MAJOR_TEST_MODULE}_VERSION_MAJOR to ${${MAJOR_TEST_MODULE}_VERSION_MAJOR}")
|
|
endif ()
|
|
endif ()
|
|
|
|
if ( ( ${MAJOR_TEST_MODULE}_FOUND OR ${MODULE_UPPER}_FOUND ) AND ${MODULE_UPPER}_VERSION_MAJOR)
|
|
message(STATUS "${MODULE_UPPER}_VERSION_MAJOR is '${${MODULE_UPPER}_VERSION_MAJOR}'")
|
|
if (NOT ${MAJOR_TEST_VERSION} EQUAL ${MODULE_UPPER}_VERSION_MAJOR)
|
|
message(SEND_ERROR "We requested major version ${MAJOR_TEST_VERSION} but ${MAJOR_TEST_MODULE} set ${MODULE_UPPER}_VERSION_MAJOR to ${${MODULE_UPPER}_VERSION_MAJOR}")
|
|
endif ()
|
|
endif ()
|