This commit is contained in:
2026-03-29 14:01:52 +03:00
commit 0611279128
210 changed files with 60454 additions and 0 deletions

201
scripts/utils.sh Normal file
View File

@@ -0,0 +1,201 @@
#!/bin/sh
#
# Copyright 2005 Timo Hirvonen
#
# This file is licensed under the GPLv2.
# initialization {{{
LC_ALL=C
LANG=C
export LC_ALL LANG
if test "$CDPATH"
then
echo "Exporting CDPATH is dangerous and unnecessary!"
echo
fi
unset CDPATH
__cleanup()
{
if test "$DEBUG_CONFIGURE" = y
then
echo
echo "DEBUG_CONFIGURE=y, not removing temporary files"
ls .tmp-[0-9]*-*
else
rm -rf .tmp-[0-9]*-*
fi
}
__abort()
{
# can't use "die" because stderr is often redirected to /dev/null
# (stdout could also be redirected but it's not so common)
echo
echo
echo "Aborting. configure failed."
# this executes __cleanup automatically
exit 1
}
# clean temporary files on exit
trap '__cleanup' 0
# clean temporary files and die with error message if interrupted
trap '__abort' 1 2 3 13 15
# }}}
# config.mk variable names
makefile_variables=""
# cross compilation, prefix for CC, LD etc.
# CROSS=
# argc function_name $# min [max]
argc()
{
if test $# -lt 3 || test $# -gt 4
then
die "argc: expecting 3-4 arguments (got $*)"
fi
if test $# -eq 3
then
if test $2 -lt $3
then
die "$1: expecting at least $3 arguments"
fi
else
if test $2 -lt $3 || test $2 -gt $4
then
die "$1: expecting $3-$4 arguments"
fi
fi
}
# print warning message (all parameters)
warn()
{
echo "$@" >&2
}
# print error message (all parameters) and exit
die()
{
warn "$@"
exit 1
}
# usage: 'tmp_file .c'
# get filename for temporary file
tmp_file()
{
if test -z "$__tmp_file_counter"
then
__tmp_file_counter=0
fi
while true
do
__tmp_filename=.tmp-${__tmp_file_counter}-${1}
__tmp_file_counter=`expr $__tmp_file_counter + 1`
test -f "$__tmp_filename" || break
done
echo "$__tmp_filename"
}
# get variable value
#
# @name: name of the variable
get_var()
{
eval echo '"$'${1}'"'
}
# set variable by name
#
# @name: name of the variable
# @value: value of the variable
set_var()
{
eval $1='$2'
}
# set variable @name to @default IF NOT SET OR EMPTY
#
# @name: name of the variable
# @value: value of the variable
var_default()
{
test "`get_var $1`" || set_var $1 "$2"
}
# usage: echo $foo | to_upper
to_upper()
{
# stupid solaris tr doesn't understand ranges
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
}
# portable which command
path_find()
{
case $1 in
*/*)
if test -x "$1"
then
echo "$1"
return 0
fi
return 1
;;
esac
_ifs="$IFS"
IFS=:
for __pf_i in $PATH
do
if test -x "$__pf_i/$1"
then
IFS="$_ifs"
echo "$__pf_i/$1"
return 0
fi
done
IFS="$_ifs"
return 1
}
show_usage()
{
cat <<EOF
Usage ./configure [-f FILE] [--prefix|bindir|datadir|libdir|mandir|docdir=VALUE] [OPTION=VALUE]...
-f FILE Read OPTION=VALUE list from FILE (sh script)
$USAGE
EOF
exit 0
}
# @tmpfile: temporary file
# @file: file to update
#
# replace @file with @tmpfile if their contents differ
update_file()
{
if test -f "$2"
then
if cmp "$2" "$1" 2>/dev/null 1>&2
then
return 0
fi
echo "updating $2"
else
echo "creating $2"
fi
mv -f "$1" "$2"
}