2023-07-24 17:30:03 +02:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
# Returns the MATLAB version under the form x.y (not Rnnnn)
|
|
|
|
|
# Takes as argument the path to the MATLAB installation
|
|
|
|
|
#
|
|
|
|
|
# Alternatively, if the first argument is “--hex”, returns the MATLAB version
|
|
|
|
|
# as a pseudo-hexadecimal constant (0xMMmm) where MM is the major revision
|
|
|
|
|
# number (in decimal) and mm is the minor revision number (in decimal).
|
|
|
|
|
# E.g. version 9.14 is returned as 0x0914
|
|
|
|
|
|
|
|
|
|
# Copyright © 2009-2023 Dynare Team
|
|
|
|
|
#
|
|
|
|
|
# This file is part of Dynare.
|
|
|
|
|
#
|
|
|
|
|
# Dynare 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 3 of the License, or
|
|
|
|
|
# (at your option) any later version.
|
|
|
|
|
#
|
|
|
|
|
# Dynare 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 Dynare. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
if [[ ($# == 0) || ($# == 1 && $1 == --hex) ]]; then
|
|
|
|
|
echo "Usage: $0 [--hex] /path/to/matlab" 2>&1
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ $1 == --hex ]]; then
|
|
|
|
|
hex=true
|
|
|
|
|
MATLAB=$2
|
|
|
|
|
else
|
|
|
|
|
hex=false
|
|
|
|
|
MATLAB=$1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ -f ${MATLAB}/VersionInfo.xml ]]; then
|
|
|
|
|
# The VersionInfo.xml file is present on all versions since R2017a, on all platforms.
|
|
|
|
|
# Extract the version number as x.y, since it is our preferred form, and is
|
|
|
|
|
# more robust to future versions.
|
|
|
|
|
MATLAB_VERSION=$(sed -En '/<version>/s/.*>([0-9]+\.[0-9]+).*/\1/p' "${MATLAB}/VersionInfo.xml")
|
|
|
|
|
elif [[ -f ${MATLAB}/bin/util/mex/version.txt ]]; then
|
|
|
|
|
# The bin/util/mex/version.txt file is present on Windows and macOS, at least
|
|
|
|
|
# since R2009b. It contains the release number (Rnnnnx).
|
|
|
|
|
MATLAB_VERSION=$(< "${MATLAB}/bin/util/mex/version.txt")
|
|
|
|
|
elif [[ -f ${MATLAB}/bin/mex || -f ${MATLAB}/bin/mexsh ]]; then
|
|
|
|
|
# Works on Linux and macOS until R2018a included. Returns the release number (Rnnnnx).
|
|
|
|
|
# Older MATLABs have the version in bin/mex, more recent in bin/mexsh
|
|
|
|
|
MATLAB_VERSION=$(sed -En "/^.*full_ver=/s/^.*full_ver='(R[^']+)'.*/\1/p" "${MATLAB}"/bin/mex*)
|
|
|
|
|
else
|
|
|
|
|
echo "Can’t determine the MATLAB version" 2>&1
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# If needed, convert a release number (Rnnnnx) into a version number (x.y)
|
|
|
|
|
case ${MATLAB_VERSION} in
|
2023-09-22 10:49:27 +02:00
|
|
|
|
*2023[bB])
|
|
|
|
|
MATLAB_VERSION="23.2"
|
|
|
|
|
;;
|
2023-07-24 17:30:03 +02:00
|
|
|
|
*2023[aA])
|
|
|
|
|
MATLAB_VERSION="9.14"
|
|
|
|
|
;;
|
|
|
|
|
*2022[bB])
|
|
|
|
|
MATLAB_VERSION="9.13"
|
|
|
|
|
;;
|
|
|
|
|
*2022[aA])
|
|
|
|
|
MATLAB_VERSION="9.12"
|
|
|
|
|
;;
|
|
|
|
|
*2021[bB])
|
|
|
|
|
MATLAB_VERSION="9.11"
|
|
|
|
|
;;
|
|
|
|
|
*2021[aA])
|
|
|
|
|
MATLAB_VERSION="9.10"
|
|
|
|
|
;;
|
|
|
|
|
*2020[bB])
|
|
|
|
|
MATLAB_VERSION="9.9"
|
|
|
|
|
;;
|
|
|
|
|
*2020[aA])
|
|
|
|
|
MATLAB_VERSION="9.8"
|
|
|
|
|
;;
|
|
|
|
|
*2019[bB])
|
|
|
|
|
MATLAB_VERSION="9.7"
|
|
|
|
|
;;
|
|
|
|
|
*2019[aA])
|
|
|
|
|
MATLAB_VERSION="9.6"
|
|
|
|
|
;;
|
|
|
|
|
*2018[bB])
|
|
|
|
|
MATLAB_VERSION="9.5"
|
|
|
|
|
;;
|
|
|
|
|
*2018[aA])
|
|
|
|
|
MATLAB_VERSION="9.4"
|
|
|
|
|
;;
|
|
|
|
|
*2017[bB])
|
|
|
|
|
MATLAB_VERSION="9.3"
|
|
|
|
|
;;
|
|
|
|
|
*2017[aA])
|
|
|
|
|
MATLAB_VERSION="9.2"
|
|
|
|
|
;;
|
|
|
|
|
*2016[bB])
|
|
|
|
|
MATLAB_VERSION="9.1"
|
|
|
|
|
;;
|
|
|
|
|
*2016[aA])
|
|
|
|
|
MATLAB_VERSION="9.0"
|
|
|
|
|
;;
|
|
|
|
|
*2015[bB])
|
|
|
|
|
MATLAB_VERSION="8.6"
|
|
|
|
|
;;
|
|
|
|
|
*2015[aA])
|
|
|
|
|
MATLAB_VERSION="8.5"
|
|
|
|
|
;;
|
|
|
|
|
*2014[bB])
|
|
|
|
|
MATLAB_VERSION="8.4"
|
|
|
|
|
;;
|
|
|
|
|
*2014[aA])
|
|
|
|
|
MATLAB_VERSION="8.3"
|
|
|
|
|
;;
|
|
|
|
|
*2013[bB])
|
|
|
|
|
MATLAB_VERSION="8.2"
|
|
|
|
|
;;
|
|
|
|
|
*2013[aA])
|
|
|
|
|
MATLAB_VERSION="8.1"
|
|
|
|
|
;;
|
|
|
|
|
*2012[bB])
|
|
|
|
|
MATLAB_VERSION="8.0"
|
|
|
|
|
;;
|
|
|
|
|
*2012[aA])
|
|
|
|
|
MATLAB_VERSION="7.14"
|
|
|
|
|
;;
|
|
|
|
|
*2011[bB])
|
|
|
|
|
MATLAB_VERSION="7.13"
|
|
|
|
|
;;
|
|
|
|
|
*2011[aA])
|
|
|
|
|
MATLAB_VERSION="7.12"
|
|
|
|
|
;;
|
|
|
|
|
*2010[bB])
|
|
|
|
|
MATLAB_VERSION="7.11"
|
|
|
|
|
;;
|
|
|
|
|
*2010[aA])
|
|
|
|
|
MATLAB_VERSION="7.10"
|
|
|
|
|
;;
|
|
|
|
|
*2009[bB])
|
|
|
|
|
MATLAB_VERSION="7.9"
|
|
|
|
|
;;
|
|
|
|
|
*2009[aA])
|
|
|
|
|
MATLAB_VERSION="7.8"
|
|
|
|
|
;;
|
|
|
|
|
*2008[bB])
|
|
|
|
|
MATLAB_VERSION="7.7"
|
|
|
|
|
;;
|
|
|
|
|
*2008[aA])
|
|
|
|
|
MATLAB_VERSION="7.6"
|
|
|
|
|
;;
|
|
|
|
|
*2007[bB])
|
|
|
|
|
MATLAB_VERSION="7.5"
|
|
|
|
|
;;
|
|
|
|
|
*2007[aA])
|
|
|
|
|
MATLAB_VERSION="7.4"
|
|
|
|
|
;;
|
|
|
|
|
*2006[bB])
|
|
|
|
|
MATLAB_VERSION="7.3"
|
|
|
|
|
;;
|
|
|
|
|
*2006[aA])
|
|
|
|
|
MATLAB_VERSION="7.2"
|
|
|
|
|
;;
|
|
|
|
|
*14[sS][pP]3)
|
|
|
|
|
MATLAB_VERSION="7.1"
|
|
|
|
|
;;
|
|
|
|
|
*14[sS][pP]2)
|
|
|
|
|
MATLAB_VERSION="7.0.4"
|
|
|
|
|
;;
|
|
|
|
|
*14[sS][pP]1)
|
|
|
|
|
MATLAB_VERSION="7.0.1"
|
|
|
|
|
;;
|
|
|
|
|
[rR]14)
|
|
|
|
|
MATLAB_VERSION="7.0.0"
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
# Check that we have an x.y version number
|
|
|
|
|
if ! grep -qE '^[0-9.]+$' <<< "${MATLAB_VERSION}"; then
|
|
|
|
|
echo "Unknown MATLAB version: ${MATLAB_VERSION}" 2>&1
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ $hex == true ]]; then
|
|
|
|
|
echo -n "0x"
|
|
|
|
|
sed -e 's/\([0-9]*\)\.\([0-9]*\).*/Z\1ZZ\2Z/' \
|
|
|
|
|
-e 's/Z\([0-9]\)Z/Z0\1Z/g' \
|
|
|
|
|
-e 's/[^0-9]//g' <<< "${MATLAB_VERSION}"
|
|
|
|
|
else
|
|
|
|
|
echo "${MATLAB_VERSION}"
|
|
|
|
|
fi
|