mangos/cmake/EnsureVersion.cmake
Meltie2013 994c64ccf0
OpenSSL Version Check & Ensure Version Package (#160)
* Impement Ensure Version for OpenSSL

* Fix OpenSSL library linking to most of the project

* Cleanup of old file

* Make error message a bit more clear on invalid versions

* Link Submodule changes to main PR

* Attempt to fix missing symbol DSO compile issue linux
* Sometimes I need to learn to look into things a bit more.
2021-08-02 21:04:47 +01:00

74 lines
3.2 KiB
CMake

# MaNGOS is a full featured server for World of Warcraft, supporting
# the following clients: 1.12.x, 2.4.3, 3.3.5a, 4.3.4a and 5.4.8
#
# Copyright (C) 2005-2021 MaNGOS <https://getmangos.eu>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
MACRO(NORMALIZE_VERSION _requested_version _normalized_version)
STRING(REGEX MATCH "[^0-9]*[0-9]+\\.[0-9]+\\.[0-9]+.*" _threePartMatch "${_requested_version}")
if(_threePartMatch)
# parse the parts of the version string
STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" _major_vers "${_requested_version}")
STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" _minor_vers "${_requested_version}")
STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" _patch_vers "${_requested_version}")
else(_threePartMatch)
STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" _major_vers "${_requested_version}")
STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" _minor_vers "${_requested_version}")
set(_patch_vers "0")
endif(_threePartMatch)
# compute an overall version number which can be compared at once
MATH(EXPR ${_normalized_version} "${_major_vers}*10000 + ${_minor_vers}*100 + ${_patch_vers}")
ENDMACRO(NORMALIZE_VERSION)
MACRO(CHECK_RANGE_INCLUSIVE_LOWER _lower_limit _value _upper_limit _ok)
if(${_value} LESS ${_lower_limit})
set(${_ok} FALSE)
elseif(${_value} EQUAL ${_lower_limit})
set(${_ok} TRUE)
elseif(${_value} EQUAL ${_upper_limit})
set(${_ok} FALSE)
elseif(${_value} GREATER ${_upper_limit})
set(${_ok} FALSE)
else(${_value} LESS ${_lower_limit})
set(${_ok} TRUE)
endif(${_value} LESS ${_lower_limit})
ENDMACRO(CHECK_RANGE_INCLUSIVE_LOWER)
MACRO(ENSURE_VERSION requested_version found_version var_too_old)
NORMALIZE_VERSION(${requested_version} req_vers_num)
NORMALIZE_VERSION(${found_version} found_vers_num)
if(found_vers_num LESS req_vers_num)
set(${var_too_old} FALSE)
else(found_vers_num LESS req_vers_num)
set(${var_too_old} TRUE)
endif(found_vers_num LESS req_vers_num)
ENDMACRO(ENSURE_VERSION)
MACRO(ENSURE_VERSION2 requested_version2 found_version2 var_too_old2)
ENSURE_VERSION(${requested_version2} ${found_version2} ${var_too_old2})
ENDMACRO(ENSURE_VERSION2)
MACRO(ENSURE_VERSION_RANGE min_version found_version max_version var_ok)
NORMALIZE_VERSION(${min_version} req_vers_num)
NORMALIZE_VERSION(${found_version} found_vers_num)
NORMALIZE_VERSION(${max_version} max_vers_num)
CHECK_RANGE_INCLUSIVE_LOWER(${req_vers_num} ${found_vers_num} ${max_vers_num} ${var_ok})
ENDMACRO(ENSURE_VERSION_RANGE)