You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.3 KiB
80 lines
2.3 KiB
4 months ago
|
#!/bin/bash -u
|
||
|
|
||
|
if [[ -z "${ANDROID_BUILD_TOP:-}" ]] ; then
|
||
|
echo >&2 "*** ERROR: $(basename $0) requires envar ANDROID_BUILD_TOP to be set"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
DRYRUN=""
|
||
|
MODE="update"
|
||
|
while [[ $# -ne 0 ]] ; do
|
||
|
case "${1}" in
|
||
|
--dryrun)
|
||
|
DRYRUN="echo"
|
||
|
shift
|
||
|
;;
|
||
|
--mode=*)
|
||
|
MODE=${1#"--mode="}
|
||
|
shift
|
||
|
;;
|
||
|
*)
|
||
|
echo >&2 "*** USAGE: $(basename $0) [--dryrun] [--mode={update|hook}]"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
TOOL=$(dirname $0)/generate_api.py
|
||
|
SPECFILE=$(dirname $0)/types.spec
|
||
|
HALDIR=${ANDROID_BUILD_TOP}/hardware/interfaces/neuralnetworks
|
||
|
NDKDIR=${ANDROID_BUILD_TOP}/packages/modules/NeuralNetworks/runtime/include
|
||
|
CANONICALDIR=${ANDROID_BUILD_TOP}/packages/modules/NeuralNetworks/common/include/nnapi
|
||
|
|
||
|
RET=0
|
||
|
function doit {
|
||
|
typeset -r kind="$1" in="$2" out="$3"
|
||
|
echo "=== $kind"
|
||
|
${DRYRUN} ${TOOL} --kind ${kind} --specification ${SPECFILE} --template ${in} --out ${out}
|
||
|
if [[ $? -ne 0 ]] ; then RET=1 ; fi
|
||
|
}
|
||
|
|
||
|
function check {
|
||
|
typeset -r kind="$1" in="$2" out="$3"
|
||
|
TEMPFILE=$(mktemp)
|
||
|
doit ${kind} ${in} ${TEMPFILE}
|
||
|
if [[ ${RET} -eq 0 ]] ; then
|
||
|
${DRYRUN} cmp -s ${out} ${TEMPFILE} || {
|
||
|
RET=1
|
||
|
echo >&2 "Error: $(basename ${out}) is out of sync with $(basename ${in}) or types.spec. Please run generate_api.sh before uploading."
|
||
|
}
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
case "${MODE}" in
|
||
|
update)
|
||
|
doit canonical $(dirname $0)/Types.t ${CANONICALDIR}/Types.h
|
||
|
doit canonical $(dirname $0)/OperandTypes.t ${CANONICALDIR}/OperandTypes.h
|
||
|
doit canonical $(dirname $0)/OperationTypes.t ${CANONICALDIR}/OperationTypes.h
|
||
|
doit ndk $(dirname $0)/NeuralNetworksTypes.t ${NDKDIR}/NeuralNetworksTypes.h
|
||
|
doit hal_1.0 ${HALDIR}/1.0/types.t ${HALDIR}/1.0/types.hal
|
||
|
doit hal_1.1 ${HALDIR}/1.1/types.t ${HALDIR}/1.1/types.hal
|
||
|
doit hal_1.2 ${HALDIR}/1.2/types.t ${HALDIR}/1.2/types.hal
|
||
|
doit hal_1.3 ${HALDIR}/1.3/types.t ${HALDIR}/1.3/types.hal
|
||
|
;;
|
||
|
hook)
|
||
|
check canonical $(dirname $0)/Types.t ${CANONICALDIR}/Types.h
|
||
|
check canonical $(dirname $0)/OperandTypes.t ${CANONICALDIR}/OperandTypes.h
|
||
|
check canonical $(dirname $0)/OperationTypes.t ${CANONICALDIR}/OperationTypes.h
|
||
|
check ndk $(dirname $0)/NeuralNetworksTypes.t ${NDKDIR}/NeuralNetworksTypes.h
|
||
|
;;
|
||
|
*)
|
||
|
echo >&2 "*** Unknown mode: ${MODE}"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
if [[ ${RET} -ne 0 ]] ; then
|
||
|
echo >&2 "*** FAILED"
|
||
|
fi
|
||
|
exit ${RET}
|