# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version
# and stays within the semantic-version compatibility window.
# For versions with major > 0, compatibility requires the same major version.
# For versions with major = 0, compatibility requires the same major and minor
# versions.
# The variable CVF_VERSION must be set before calling configure_file().


set(PACKAGE_VERSION "@CVF_VERSION@")

if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
  set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()

  if("@CVF_VERSION@" MATCHES "^([0-9]+)(\\.([0-9]+))?")
    set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
    set(CVF_VERSION_MINOR "${CMAKE_MATCH_3}")

    if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
      string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
    endif()
    if(NOT "${CVF_VERSION_MINOR}" STREQUAL "" AND NOT CVF_VERSION_MINOR VERSION_EQUAL 0)
      string(REGEX REPLACE "^0+" "" CVF_VERSION_MINOR "${CVF_VERSION_MINOR}")
    endif()
  else()
    set(CVF_VERSION_MAJOR "@CVF_VERSION@")
    set(CVF_VERSION_MINOR "")
  endif()

  if(CVF_VERSION_MAJOR STREQUAL "0")
    if(PACKAGE_FIND_VERSION_RANGE)
      if(CVF_VERSION_MINOR STREQUAL "")
        set(PACKAGE_VERSION_COMPATIBLE FALSE)
      else()
        math(EXPR CVF_VERSION_MINOR_NEXT "${CVF_VERSION_MINOR} + 1")
        if (NOT (PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
              AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR)
            OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
                AND NOT (PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR
                  AND PACKAGE_FIND_VERSION_MAX_MINOR STREQUAL CVF_VERSION_MINOR))
              OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
                AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL ${CVF_VERSION_MAJOR}.${CVF_VERSION_MINOR_NEXT})))
          set(PACKAGE_VERSION_COMPATIBLE FALSE)
        elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
            AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR
            AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
            OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
          set(PACKAGE_VERSION_COMPATIBLE TRUE)
        else()
          set(PACKAGE_VERSION_COMPATIBLE FALSE)
        endif()
      endif()
    else()
      if(NOT PACKAGE_FIND_VERSION_MAJOR VERSION_EQUAL 0)
        string(REGEX REPLACE "^0+" "" PACKAGE_FIND_VERSION_MAJOR "${PACKAGE_FIND_VERSION_MAJOR}")
      endif()
      if(NOT "${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "" AND NOT PACKAGE_FIND_VERSION_MINOR VERSION_EQUAL 0)
        string(REGEX REPLACE "^0+" "" PACKAGE_FIND_VERSION_MINOR "${PACKAGE_FIND_VERSION_MINOR}")
      endif()

      if((PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) AND
          (PACKAGE_FIND_VERSION_MINOR STREQUAL CVF_VERSION_MINOR))
        set(PACKAGE_VERSION_COMPATIBLE TRUE)
      else()
        set(PACKAGE_VERSION_COMPATIBLE FALSE)
      endif()
    endif()
  else()
    if(PACKAGE_FIND_VERSION_RANGE)
      math(EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
      if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
          OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
            OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
        set(PACKAGE_VERSION_COMPATIBLE FALSE)
      elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
          AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
          OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
        set(PACKAGE_VERSION_COMPATIBLE TRUE)
      else()
        set(PACKAGE_VERSION_COMPATIBLE FALSE)
      endif()
    else()
      if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
        set(PACKAGE_VERSION_COMPATIBLE TRUE)
      else()
        set(PACKAGE_VERSION_COMPATIBLE FALSE)
      endif()
    endif()
  endif()

  if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
    set(PACKAGE_VERSION_EXACT TRUE)
  endif()
endif()

@CVF_ARCH_INDEPENDENT_CHECK@
