Jonatan Antoni | e73f32f | 2021-05-05 18:19:03 +0200 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # Version: 1.0 |
| 3 | # Date: 2021-05-05 |
| 4 | # This bash script generates CMSIS Documentation: |
| 5 | # |
| 6 | # Pre-requisites: |
| 7 | # - bash shell (for Windows: install git for Windows) |
| 8 | # - doxygen 1.8.6 |
| 9 | # - mscgen 0.20 |
| 10 | |
| 11 | set -o pipefail |
| 12 | |
| 13 | DIRNAME=$(dirname $(readlink -f $0)) |
| 14 | DOXYGEN=$(which doxygen) |
| 15 | MSCGEN=$(which mscgen) |
| 16 | REGEN=0 |
| 17 | ALLPARTS=($(find ${DIRNAME} -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)) |
| 18 | PARTS=() |
| 19 | |
| 20 | if [[ -z "$*" ]]; then |
| 21 | REGEN=1 |
| 22 | else |
| 23 | for part in "$*"; do |
| 24 | if [[ " ${ALLPARTS[@]} " =~ " $part " ]]; then |
| 25 | PARTS+=($part) |
| 26 | fi |
| 27 | done |
| 28 | fi |
| 29 | |
| 30 | if [[ ! -f "${DOXYGEN}" ]]; then |
| 31 | echo "Doxygen not found!" >&2 |
| 32 | echo "Did you miss to add it to PATH?" |
| 33 | exit 1 |
| 34 | else |
| 35 | version=$("${DOXYGEN}" --version) |
| 36 | echo "DOXYGEN is ${DOXYGEN} at version ${version}" |
| 37 | if [[ "${version}" != "1.8.6" ]]; then |
| 38 | echo " >> Version is different from 1.8.6 !" >&2 |
| 39 | fi |
| 40 | fi |
| 41 | |
| 42 | if [[ ! -f "${MSCGEN}" ]]; then |
| 43 | echo "mscgen not found!" >&2 |
| 44 | echo "Did you miss to add it to PATH?" |
| 45 | exit 1 |
| 46 | else |
| 47 | version=$("${MSCGEN}" 2>/dev/null | grep "Mscgen version" | sed -r -e 's/Mscgen version ([^,]+),.*/\1/') |
| 48 | echo "MSCGEN is ${MSCGEN} at version ${version}" |
| 49 | if [[ "${version}" != "0.20" ]]; then |
| 50 | echo " >> Version is different from 0.20 !" >&2 |
| 51 | fi |
| 52 | fi |
| 53 | |
| 54 | function doxygen { |
| 55 | partname=$(basename $(dirname $1)) |
| 56 | if [[ $REGEN != 0 ]] || [[ " ${PARTS[@]} " =~ " ${partname} " ]]; then |
| 57 | pushd "$(dirname $1)" > /dev/null |
| 58 | echo "${DOXYGEN} $1" |
| 59 | "${DOXYGEN}" $(basename "$1") |
| 60 | popd > /dev/null |
| 61 | |
| 62 | if [[ $2 != 0 ]]; then |
| 63 | cp -f "${DIRNAME}/Doxygen_Templates/search.css" "${DIRNAME}/../Documentation/${partname}/html/search/" |
| 64 | fi |
| 65 | |
| 66 | projectName=$(grep -E "PROJECT_NAME\s+=" $1 | sed -r -e 's/[^"]*"([^"]+)"/\1/') |
| 67 | projectNumber=$(grep -E "PROJECT_NUMBER\s+=" $1 | sed -r -e 's/[^"]*"([^"]+)"/\1/') |
| 68 | datetime=$(date -u +'%a %b %e %Y %H:%M:%S') |
| 69 | sed -e "s/{datetime}/${datetime}/" "${DIRNAME}/Doxygen_Templates/cmsis_footer.js" \ |
| 70 | | sed -e "s/{projectName}/${projectName}/" \ |
| 71 | | sed -e "s/{projectNumber}/${projectNumber}/" \ |
| 72 | > "${DIRNAME}/../Documentation/${partname}/html/cmsis_footer.js" |
| 73 | fi |
| 74 | } |
| 75 | |
| 76 | if [[ $REGEN != 0 ]]; then |
| 77 | echo "Cleaning existing documentation ..." |
| 78 | find "${DIRNAME}/../Documentation/" -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} + |
| 79 | fi |
| 80 | |
| 81 | echo "Generating documentation ..." |
| 82 | doxygen "${DIRNAME}/Build/Build.dxy" 1 |
| 83 | doxygen "${DIRNAME}/Core/core.dxy" 1 |
| 84 | doxygen "${DIRNAME}/Core_A/core_A.dxy" 1 |
| 85 | doxygen "${DIRNAME}/DAP/dap.dxy" 1 |
| 86 | doxygen "${DIRNAME}/Driver/Driver.dxy" 1 |
| 87 | doxygen "${DIRNAME}/DSP/dsp.dxy" 1 |
| 88 | doxygen "${DIRNAME}/General/general.dxy" 0 |
| 89 | doxygen "${DIRNAME}/DAP/dap.dxy" 1 |
| 90 | doxygen "${DIRNAME}/NN/nn.dxy" 1 |
Vladimir Marchenko | ca8e60b | 2022-04-14 14:01:06 +0200 | [diff] [blame^] | 91 | mkdir -p "./../Documentation/Pack/html/" |
| 92 | cp -r "${DIRNAME}/Pack/html/" "./../Documentation/Pack/" |
Jonatan Antoni | e73f32f | 2021-05-05 18:19:03 +0200 | [diff] [blame] | 93 | doxygen "${DIRNAME}/RTOS/rtos.dxy" 1 |
| 94 | doxygen "${DIRNAME}/RTOS2/rtos.dxy" 1 |
| 95 | doxygen "${DIRNAME}/SVD/svd.dxy" 0 |
| 96 | doxygen "${DIRNAME}/Zone/zone.dxy" 1 |
| 97 | |
| 98 | exit 0 |