blob: 0c57fb1bcda870d93cfba7b7c9e66bf0e1016433 [file] [log] [blame] [edit]
###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
# text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################
ahkName="AutoHotkey"
ahkLocation="/c/Program Files (x86)/AutoHotkey"
ahkDownload="http://www.autohotkey.com/"
nsisName="NSIS"
nsisLocation="/c/Program Files (x86)/NSIS"
nsisDownload="http://nsis.sourceforge.net/"
libusb0Name="LibUSB (aka LibUSB-Win32)"
libusb0Version="1.2.6.0"
libusb0Location="/c/LibUSB-Win32"
libusb0Files="bin/libusb-win32-bin-README.txt"
libusb0Download="http://libusb-win32.sourceforge.net/"
libusb0Pattern="usb0"
libusb1Name="LibUSB-1.0 (aka LibUSBx)"
libusb1Version="1.0.18"
libusb1Location="/c/LibUSB-1.0"
libusb1Files="libusb-1.0.def"
libusb1Download="http://www.libusb.org/wiki/windows_backend"
libusb1Pattern="usb-1.0"
winusbName="LibUSB-1.0 WinUSB Coinstallers"
winusbLocation="/c/WinUSB"
winusbFiles="libusb_device.inf"
winusbDownload="http://www.libusb.org/wiki/windows_backend"
msvcName="MSVC"
msvcLocation=""
msvcFiles="lib.exe link.exe"
msvcDownload=""
pythonName="Python"
pythonLocation=""
pythonFiles="Lib/site-packages Scripts"
pythonDownload="http://www.python.org/"
cythonName="Cython"
cythonLocation=""
cythonDownload="http://www.cython.org/"
icuName="ICU"
icuLocation="/c/ICU"
icuFiles="include/unicode"
icuDownload="http://icu-project.org/"
pthreadsName="mingw32-pthreads-w32"
pthreadsLocation="/"
pthreadsFiles="mingw/include/pthread.h"
cursesName="mingw32-pdcurses"
cursesLocation="/"
cursesFiles="mingw/include/curses.h"
zipPackage="msys-zip"
unix2dosPackage="msys-dos2unix"
groffPackage="msys-groff"
verifyPackage() {
local package="${1}"
shift 1
local name="$(getVariable "${package}Name")"
local root="$(getVariable "${package}Root")"
[ -n "${root}" ] || root="$(getVariable "${package}Location")"
if [ -z "${root}" ]
then
logWarning "package location not defined: ${name}"
root=""
elif [ ! -e "${root}" ]
then
logWarning "directory not found: ${root}"
root=""
elif [ ! -d "${root}" ]
then
logWarning "not a directory: ${root}"
root=""
else
set -- $(getVariable "${package}Files")
local prefix="${root%/}"
local file
for file
do
local path="${prefix}/${file}"
[ -e "${path}" ] || {
logWarning "${name} file not found: ${path}"
root=""
}
done
fi
setVariable "${package}Root" "${root}"
[ -n "${root}" ] || return 1
return 0
}
addWindowsPackageOption() {
local letter="${1}"
local package="${2}"
local name="$(getVariable "${package}Name")"
local location="$(getVariable "${package}Location")"
addProgramOption "${letter}" string.directory "${package}Root" "where the ${name} package has been installed" "${location}"
}
verifyWindowsPackage() {
local package="${1}"
verifyPackage "${package}" || {
local message="Windows package not installed:"
local name="$(getVariable "${package}Name")"
[ -z "${name}" ] || message="${message} ${name}"
local download="$(getVariable "${package}Download")"
[ -z "${download}" ] || message="${message} (download from ${download})"
logWarning "${message}"
return 1
}
return 0
}
verifyWindowsPackages() {
local result=0
while [ "${#}" -gt 0 ]
do
local package="${1}"
shift 1
verifyWindowsPackage "${package}" || result=1
done
return "${result}"
}
verifyMingwPackage() {
local package="${1}"
verifyPackage "${package}" || {
local message="MinGW package not installed:"
local name="$(getVariable "${package}Name")"
[ -z "${name}" ] || message="${message} ${name}"
logWarning "${message}"
return 1
}
return 0
}
verifyMingwPackages() {
local result=0
while [ "${#}" -gt 0 ]
do
local package="${1}"
shift 1
verifyMingwPackage "${package}" || result=1
done
return "${result}"
}
findHostCommand() {
local command="${1}"
local path="$(command -v "${command}" 2>/dev/null || :)"
setVariable "${command}Path" "${path}"
[ -n "${path}" ] || return 1
return 0
}
verifyWindowsCommand() {
local command="${1}"
findHostCommand "${command}" || {
local message="Windows command not found: ${command}"
local download="$(getVariable "${command}Download")"
[ -z "${download}" ] || {
message="${message} (install"
local name="$(getVariable "${command}Name")"
[ -z "${name}" ] || message="${message} ${name}"
message="${message} from ${download})"
}
logWarning "${message}"
return 1
}
return 0
}
verifyWindowsCommands() {
local result=0
while [ "${#}" -gt 0 ]
do
local command="${1}"
shift 1
verifyWindowsCommand "${command}" || result=1
done
return "${result}"
}
verifyMingwCommand() {
local command="${1}"
findHostCommand "${command}" || {
local message="MinGW command not found: ${command}"
local package="$(getVariable "${command}Package")"
[ -z "${package}" ] || message="${message} (install package ${package})"
logWarning "${message}"
return 1
}
return 0
}
verifyMingwCommands() {
local result=0
while [ "${#}" -gt 0 ]
do
local command="${1}"
shift 1
verifyMingwCommand "${command}" || result=1
done
return "${result}"
}
[ "${MSYSTEM}" = "MINGW32" ] || semanticError "this script is for MinGW only"