am 807e5c32: Merge change 8637 into donut
Merge commit '807e5c325d92af5950a65ef1baeb74788abc99af' * commit '807e5c325d92af5950a65ef1baeb74788abc99af': Add host check for nawk/gawk in build/host-setup.sh
This commit is contained in:
committed by
Android Git Automerger
commit
21b5e35e33
25
ndk/build/check-awk.awk
Normal file
25
ndk/build/check-awk.awk
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# This script is used to check that a given awk executable
|
||||||
|
# implements the match() and substr() functions appropriately.
|
||||||
|
#
|
||||||
|
# These were introduced in nawk/gawk, but the original awk
|
||||||
|
# does not have them.
|
||||||
|
#
|
||||||
|
END {
|
||||||
|
RSTART=0
|
||||||
|
RLENGTH=0
|
||||||
|
s1="A real world example"
|
||||||
|
if (! match(s1,"world")) {
|
||||||
|
print "Fail match"
|
||||||
|
} else if (RSTART != 8) {
|
||||||
|
print "Fail RSTART ="RSTART
|
||||||
|
} else if (RLENGTH != 5) {
|
||||||
|
print "Fail RLENGTH ="RLENGTH
|
||||||
|
} else {
|
||||||
|
s2=substr(s1,RSTART,RLENGTH)
|
||||||
|
if (s2 != "world") {
|
||||||
|
print "Fail substr="s2
|
||||||
|
} else {
|
||||||
|
print "Pass"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -100,8 +100,32 @@ check_gnu_make_version ()
|
|||||||
GNU_MAKE_VERSION=$version
|
GNU_MAKE_VERSION=$version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# check that $1 points to an awk executable that has a working
|
||||||
|
# match() function. This really means Nawk or GNU Awk, which should
|
||||||
|
# be installed on all modern distributions, but hey, you never know...
|
||||||
|
check_awk ()
|
||||||
|
{
|
||||||
|
if [ -n "$AWK" ] ; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
log2 " looking for nawk/gawk as '$1'"
|
||||||
|
local executable=`which $1`
|
||||||
|
if [ -z "$executable" ] ; then
|
||||||
|
log2 " Not available."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
local result
|
||||||
|
result=`echo "" | $executable -f build/check-awk.awk`
|
||||||
|
if [ "$result" == "Pass" ] ; then
|
||||||
|
AWK="$1"
|
||||||
|
fi
|
||||||
|
log2 " Check $result"
|
||||||
|
}
|
||||||
|
|
||||||
OPTION_HELP=no
|
OPTION_HELP=no
|
||||||
OPTION_NO_MAKE_CHECK=no
|
OPTION_NO_MAKE_CHECK=no
|
||||||
|
OPTION_NO_AWK_CHECK=no
|
||||||
|
|
||||||
for opt do
|
for opt do
|
||||||
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
@@ -109,6 +133,8 @@ for opt do
|
|||||||
;;
|
;;
|
||||||
--no-make-check) OPTION_NO_MAKE_CHECK=yes
|
--no-make-check) OPTION_NO_MAKE_CHECK=yes
|
||||||
;;
|
;;
|
||||||
|
--no-awk-check) OPTION_NO_AWK_CHECK=yes
|
||||||
|
;;
|
||||||
--verbose)
|
--verbose)
|
||||||
if [ "$VERBOSE" = "yes" ] ; then
|
if [ "$VERBOSE" = "yes" ] ; then
|
||||||
VERBOSE2=yes
|
VERBOSE2=yes
|
||||||
@@ -133,6 +159,7 @@ if [ $OPTION_HELP = yes ] ; then
|
|||||||
echo " --help Print this help message"
|
echo " --help Print this help message"
|
||||||
echo " --verbose Enable verbose mode"
|
echo " --verbose Enable verbose mode"
|
||||||
echo " --no-make-check Ignore GNU Make version check"
|
echo " --no-make-check Ignore GNU Make version check"
|
||||||
|
echo " --no-awk-check Ignore Nawk/Gawk check"
|
||||||
echo ""
|
echo ""
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -158,6 +185,25 @@ else
|
|||||||
echo "GNU Make : Check ignored through user option."
|
echo "GNU Make : Check ignored through user option."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
## Check for nawk or gawk, straight awk doesn't have the 'match'
|
||||||
|
## function we need in the build system.
|
||||||
|
##
|
||||||
|
if [ "$OPTION_NO_AWK_CHECK" = "no" ] ; then
|
||||||
|
AWK=
|
||||||
|
check_awk awk
|
||||||
|
check_awk gawk
|
||||||
|
check_awk nawk
|
||||||
|
if [ -z "$AWK" ] ; then
|
||||||
|
echo "ERROR: Could not find a valid Nawk or Gawk executable."
|
||||||
|
echo " Please ensure that either one of them is installed."
|
||||||
|
echo " Use the --no-awk-check option to ignore this message."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Awk : $AWK"
|
||||||
|
else
|
||||||
|
echo "Awk : Check ignored through user option."
|
||||||
|
fi
|
||||||
|
|
||||||
## Check the host platform tag that will be used to locate prebuilt
|
## Check the host platform tag that will be used to locate prebuilt
|
||||||
## toolchain binaries. And create configuration file.
|
## toolchain binaries. And create configuration file.
|
||||||
##
|
##
|
||||||
@@ -168,6 +214,7 @@ create_config_mk
|
|||||||
add_config "HOST_OS := $HOST_OS"
|
add_config "HOST_OS := $HOST_OS"
|
||||||
add_config "HOST_ARCH := $HOST_ARCH"
|
add_config "HOST_ARCH := $HOST_ARCH"
|
||||||
add_config "HOST_TAG := $HOST_TAG"
|
add_config "HOST_TAG := $HOST_TAG"
|
||||||
|
add_config "HOST_AWK := $AWK"
|
||||||
|
|
||||||
## Check that the toolchains we need are installed
|
## Check that the toolchains we need are installed
|
||||||
## Otherwise, instruct the user to download them from the web site
|
## Otherwise, instruct the user to download them from the web site
|
||||||
|
|||||||
Reference in New Issue
Block a user