uv-k5-firmware-chinese-lts/external/CMSIS_5/CMSIS/DoxyGen/gen_doc.sh
2023-11-30 14:38:27 +08:00

105 lines
3.3 KiB
Bash

#!/bin/bash
# Version: 1.0
# Date: 2021-05-05
# This bash script generates CMSIS Documentation:
#
# Pre-requisites:
# - bash shell (for Windows: install git for Windows)
# - doxygen 1.8.6
# - mscgen 0.20
set -o pipefail
DIRNAME=$(dirname $(readlink -f $0))
DOXYGEN=$(which doxygen)
MSCGEN=$(which mscgen)
REGEN=0
ALLPARTS=($(find ${DIRNAME} -mindepth 1 -maxdepth 1 -type d -exec basename {} \;))
PARTS=()
if [[ -z "$*" ]]; then
REGEN=1
else
for part in "$*"; do
if [[ " ${ALLPARTS[@]} " =~ " $part " ]]; then
PARTS+=($part)
fi
done
fi
if [[ ! -f "${DOXYGEN}" ]]; then
echo "Doxygen not found!" >&2
echo "Did you miss to add it to PATH?"
exit 1
else
version=$("${DOXYGEN}" --version)
echo "DOXYGEN is ${DOXYGEN} at version ${version}"
if [[ "${version}" != "1.8.6" ]]; then
echo " >> Version is different from 1.8.6 !" >&2
fi
fi
if [[ ! -f "${MSCGEN}" ]]; then
echo "mscgen not found!" >&2
echo "Did you miss to add it to PATH?"
exit 1
else
version=$("${MSCGEN}" 2>/dev/null | grep "Mscgen version" | sed -r -e 's/Mscgen version ([^,]+),.*/\1/')
echo "MSCGEN is ${MSCGEN} at version ${version}"
if [[ "${version}" != "0.20" ]]; then
echo " >> Version is different from 0.20 !" >&2
fi
fi
function doxygen {
partname=$(basename $(dirname $1))
if [[ $REGEN != 0 ]] || [[ " ${PARTS[@]} " =~ " ${partname} " ]]; then
pushd "$(dirname $1)" > /dev/null
echo "${DOXYGEN} $1"
"${DOXYGEN}" $(basename "$1")
popd > /dev/null
if [[ $2 != 0 ]]; then
cp -f "${DIRNAME}/Doxygen_Templates/search.css" "${DIRNAME}/../Documentation/${partname}/html/search/"
fi
projectName=$(grep -E "PROJECT_NAME\s+=" $1 | sed -r -e 's/[^"]*"([^"]+)"/\1/')
projectNumber=$(grep -E "PROJECT_NUMBER\s+=" $1 | sed -r -e 's/[^"]*"([^"]+)"/\1/')
datetime=$(date -u +'%a %b %e %Y %H:%M:%S')
sed -e "s/{datetime}/${datetime}/" "${DIRNAME}/Doxygen_Templates/cmsis_footer.js" \
| sed -e "s/{projectName}/${projectName}/" \
| sed -e "s/{projectNumber}/${projectNumber}/" \
> "${DIRNAME}/../Documentation/${partname}/html/cmsis_footer.js"
fi
}
if [[ $REGEN != 0 ]]; then
echo "Cleaning existing documentation ..."
find "${DIRNAME}/../Documentation/" -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} +
fi
echo "Generating documentation ..."
echo "Copying Build html"
mkdir -p "${DIRNAME}/../Documentation/Build/"
cp -r "${DIRNAME}/Build/html/" "${DIRNAME}/../Documentation/Build/"
doxygen "${DIRNAME}/Core/core.dxy" 1
doxygen "${DIRNAME}/Core_A/core_A.dxy" 1
doxygen "${DIRNAME}/DAP/dap.dxy" 1
doxygen "${DIRNAME}/Driver/Driver.dxy" 1
echo "Copying DSP html"
mkdir -p "${DIRNAME}/../Documentation/DSP/"
cp -r "${DIRNAME}/DSP/html" "${DIRNAME}/../Documentation/DSP/"
doxygen "${DIRNAME}/General/general.dxy" 0
doxygen "${DIRNAME}/DAP/dap.dxy" 1
echo "Copying NN html"
mkdir -p "${DIRNAME}/../Documentation/NN/"
cp -r "${DIRNAME}/NN/html" "${DIRNAME}/../Documentation/NN/"
echo "Copying Pack html"
mkdir -p "${DIRNAME}/../Documentation/Pack/"
cp -r "${DIRNAME}/Pack/html" "${DIRNAME}/../Documentation/Pack/"
doxygen "${DIRNAME}/RTOS/rtos.dxy" 1
doxygen "${DIRNAME}/RTOS2/rtos.dxy" 1
doxygen "${DIRNAME}/SVD/svd.dxy" 0
doxygen "${DIRNAME}/Zone/zone.dxy" 1
exit 0