diff options
| -rw-r--r-- | modules/ECMSetupVersion.cmake | 206 | 
1 files changed, 103 insertions, 103 deletions
| diff --git a/modules/ECMSetupVersion.cmake b/modules/ECMSetupVersion.cmake index 83d7d798..b908f96e 100644 --- a/modules/ECMSetupVersion.cmake +++ b/modules/ECMSetupVersion.cmake @@ -94,114 +94,114 @@ include(CMakePackageConfigHelpers)  # has the value we want  set(_ECM_SETUP_VERSION_HEADER_TEMPLATE "${CMAKE_CURRENT_LIST_DIR}/ECMVersionHeader.h.in") -function(ECM_SETUP_VERSION _version) -  set(options ) -  set(oneValueArgs VARIABLE_PREFIX SOVERSION VERSION_HEADER PACKAGE_VERSION_FILE COMPATIBILITY) -  set(multiValueArgs ) - -  cmake_parse_arguments(ESV "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN}) - -  if(ESV_UNPARSED_ARGUMENTS) -    message(FATAL_ERROR "Unknown keywords given to ECM_SETUP_VERSION(): \"${ESV_UNPARSED_ARGUMENTS}\"") -  endif() - -  set(project_manages_version FALSE) -  set(use_project_version FALSE) -  # CMP0048 only exists in CMake 3.0.0 and later -  if(CMAKE_VERSION VERSION_LESS 3.0.0) -      set(project_version_policy "OLD") -  else() -      cmake_policy(GET CMP0048 project_version_policy) -  endif() -  if(project_version_policy STREQUAL "NEW") -    set(project_manages_version TRUE) -    if(_version STREQUAL "PROJECT") -      set(use_project_version TRUE) +function(ecm_setup_version _version) +    set(options ) +    set(oneValueArgs VARIABLE_PREFIX SOVERSION VERSION_HEADER PACKAGE_VERSION_FILE COMPATIBILITY) +    set(multiValueArgs ) + +    cmake_parse_arguments(ESV "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN}) + +    if(ESV_UNPARSED_ARGUMENTS) +        message(FATAL_ERROR "Unknown keywords given to ECM_SETUP_VERSION(): \"${ESV_UNPARSED_ARGUMENTS}\"") +    endif() + +    set(project_manages_version FALSE) +    set(use_project_version FALSE) +    # CMP0048 only exists in CMake 3.0.0 and later +    if(CMAKE_VERSION VERSION_LESS 3.0.0) +        set(project_version_policy "OLD") +    else() +        cmake_policy(GET CMP0048 project_version_policy) +    endif() +    if(project_version_policy STREQUAL "NEW") +        set(project_manages_version TRUE) +        if(_version STREQUAL "PROJECT") +            set(use_project_version TRUE) +        endif() +    elseif(_version STREQUAL "PROJECT") +        message(FATAL_ERROR "ecm_setup_version given PROJECT argument, but CMP0048 is not NEW") +    endif() + +    set(should_set_prefixed_vars TRUE) +    if(NOT ESV_VARIABLE_PREFIX) +        if(use_project_version) +            set(ESV_VARIABLE_PREFIX "${PROJECT_NAME}") +            set(should_set_prefixed_vars FALSE) +        else() +            message(FATAL_ERROR "Required argument PREFIX missing in ECM_SETUP_VERSION() call") +        endif()      endif() -  elseif(_version STREQUAL "PROJECT") -    message(FATAL_ERROR "ecm_setup_version given PROJECT argument, but CMP0048 is not NEW") -  endif() -  set(should_set_prefixed_vars TRUE) -  if(NOT ESV_VARIABLE_PREFIX)      if(use_project_version) -      set(ESV_VARIABLE_PREFIX "${PROJECT_NAME}") -      set(should_set_prefixed_vars FALSE) +        set(_version "${PROJECT_VERSION}") +        set(_major "${PROJECT_VERSION_MAJOR}") +        set(_minor "${PROJECT_VERSION_MINOR}") +        set(_patch "${PROJECT_VERSION_PATCH}")      else() -      message(FATAL_ERROR "Required argument PREFIX missing in ECM_SETUP_VERSION() call") +        string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" _major "${_version}") +        string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" _minor "${_version}") +        string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" _patch "${_version}") +    endif() + +    if(NOT ESV_SOVERSION) +        set(ESV_SOVERSION ${_major}) +    endif() + +    if(should_set_prefixed_vars) +        set(${ESV_VARIABLE_PREFIX}_VERSION "${_version}") +        set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR ${_major}) +        set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR ${_minor}) +        set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH ${_patch})      endif() -  endif() - -  if(use_project_version) -    set(_version "${PROJECT_VERSION}") -    set(_major "${PROJECT_VERSION_MAJOR}") -    set(_minor "${PROJECT_VERSION_MINOR}") -    set(_patch "${PROJECT_VERSION_PATCH}") -  else() -    string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" _major "${_version}") -    string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" _minor "${_version}") -    string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" _patch "${_version}") -  endif() - -  if(NOT ESV_SOVERSION) -    set(ESV_SOVERSION ${_major}) -  endif() - -  if(should_set_prefixed_vars) -    set(${ESV_VARIABLE_PREFIX}_VERSION "${_version}") -    set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR ${_major}) -    set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR ${_minor}) -    set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH ${_patch}) -  endif() - -  set(${ESV_VARIABLE_PREFIX}_SOVERSION ${ESV_SOVERSION}) - -  if(NOT project_manages_version) -    set(PROJECT_VERSION "${_version}") -    set(PROJECT_VERSION_MAJOR "${_major}") -    set(PROJECT_VERSION_MINOR "${_minor}") -    set(PROJECT_VERSION_PATCH "${_patch}") -  endif() - -  # compat -  set(PROJECT_VERSION_STRING "${PROJECT_VERSION}") -  set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION}") - -  if(ESV_VERSION_HEADER) -    set(HEADER_PREFIX "${ESV_VARIABLE_PREFIX}") -    set(HEADER_VERSION "${_version}") -    set(HEADER_VERSION_MAJOR "${_major}") -    set(HEADER_VERSION_MINOR "${_minor}") -    set(HEADER_VERSION_PATCH "${_patch}") -    configure_file("${_ECM_SETUP_VERSION_HEADER_TEMPLATE}" "${ESV_VERSION_HEADER}") -  endif() - -  if(ESV_PACKAGE_VERSION_FILE) -    if(NOT ESV_COMPATIBILITY) -        set(ESV_COMPATIBILITY AnyNewerVersion) + +    set(${ESV_VARIABLE_PREFIX}_SOVERSION ${ESV_SOVERSION}) + +    if(NOT project_manages_version) +        set(PROJECT_VERSION "${_version}") +        set(PROJECT_VERSION_MAJOR "${_major}") +        set(PROJECT_VERSION_MINOR "${_minor}") +        set(PROJECT_VERSION_PATCH "${_patch}") +    endif() + +    # compat +    set(PROJECT_VERSION_STRING "${PROJECT_VERSION}") +    set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION}") + +    if(ESV_VERSION_HEADER) +        set(HEADER_PREFIX "${ESV_VARIABLE_PREFIX}") +        set(HEADER_VERSION "${_version}") +        set(HEADER_VERSION_MAJOR "${_major}") +        set(HEADER_VERSION_MINOR "${_minor}") +        set(HEADER_VERSION_PATCH "${_patch}") +        configure_file("${_ECM_SETUP_VERSION_HEADER_TEMPLATE}" "${ESV_VERSION_HEADER}") +    endif() + +    if(ESV_PACKAGE_VERSION_FILE) +        if(NOT ESV_COMPATIBILITY) +            set(ESV_COMPATIBILITY AnyNewerVersion) +        endif() +        write_basic_package_version_file("${ESV_PACKAGE_VERSION_FILE}" VERSION ${_version} COMPATIBILITY ${ESV_COMPATIBILITY})      endif() -    write_basic_package_version_file("${ESV_PACKAGE_VERSION_FILE}" VERSION ${_version} COMPATIBILITY ${ESV_COMPATIBILITY}) -  endif() - -  if(should_set_prefixed_vars) -    set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR "${${ESV_VARIABLE_PREFIX}_VERSION_MAJOR}" PARENT_SCOPE) -    set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR "${${ESV_VARIABLE_PREFIX}_VERSION_MINOR}" PARENT_SCOPE) -    set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH "${${ESV_VARIABLE_PREFIX}_VERSION_PATCH}" PARENT_SCOPE) -    set(${ESV_VARIABLE_PREFIX}_VERSION       "${${ESV_VARIABLE_PREFIX}_VERSION}"       PARENT_SCOPE) -  endif() - -  # always set the soversion -  set(${ESV_VARIABLE_PREFIX}_SOVERSION "${${ESV_VARIABLE_PREFIX}_SOVERSION}" PARENT_SCOPE) - -  if(NOT project_manages_version) -    set(PROJECT_VERSION       "${PROJECT_VERSION}"       PARENT_SCOPE) -    set(PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" PARENT_SCOPE) -    set(PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR}" PARENT_SCOPE) -    set(PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}" PARENT_SCOPE) -  endif() - -  # always set the compatibility variables -  set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}" PARENT_SCOPE) -  set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION}" PARENT_SCOPE) + +    if(should_set_prefixed_vars) +        set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR "${${ESV_VARIABLE_PREFIX}_VERSION_MAJOR}" PARENT_SCOPE) +        set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR "${${ESV_VARIABLE_PREFIX}_VERSION_MINOR}" PARENT_SCOPE) +        set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH "${${ESV_VARIABLE_PREFIX}_VERSION_PATCH}" PARENT_SCOPE) +        set(${ESV_VARIABLE_PREFIX}_VERSION       "${${ESV_VARIABLE_PREFIX}_VERSION}"       PARENT_SCOPE) +    endif() + +    # always set the soversion +    set(${ESV_VARIABLE_PREFIX}_SOVERSION "${${ESV_VARIABLE_PREFIX}_SOVERSION}" PARENT_SCOPE) + +    if(NOT project_manages_version) +        set(PROJECT_VERSION       "${PROJECT_VERSION}"       PARENT_SCOPE) +        set(PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" PARENT_SCOPE) +        set(PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR}" PARENT_SCOPE) +        set(PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}" PARENT_SCOPE) +    endif() + +    # always set the compatibility variables +    set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}" PARENT_SCOPE) +    set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION}" PARENT_SCOPE)  endfunction() | 
