1#!/bin/bash 2 3#To use this script, either give no parameters for generating a normal 4#documentation build, or give the modules you want to include as 5#parameters. 6 7#documentedToBuildsystem.sh [submodule1] [submodule2] [...] 8 9error() 10{ 11 echo $@ > /dev/stderr 12} 13 14cd $(dirname $0)/.. 15 16EXTRA_INCLUDES='${coin_build_dir}/include/Inventor/C/basic.h 17${coin_src_dir}/docs/releases.dox 18' 19 20if [ -n "$1" ] 21then 22 #Should be included always 23 SUBMODULES="src/doc" 24 25 while [ -n "$1" ] 26 do 27 failed=true; 28 if [ -d "src/$1" ] 29 then 30 SUBMODULES="${SUBMODULES} src/$1" 31 failed=false; 32 fi 33 if [ -d "include/Inventor/$1" ] 34 then 35 SUBMODULES="${SUBMODULES} include/Inventor/$1" 36 failed=false; 37 fi 38 if ${failed} 39 then 40 error "No such module: $1" 41 exit 1 42 fi 43 shift 44 done 45else 46 SUBMODULES="src include" 47fi 48 49( 50echo 'DOXYGEN_INPUT="' 51 52( 53for file in ${EXTRA_INCLUDES} 54do 55 echo " \${path_tag}${file}" 56done 57for file in $(find ${SUBMODULES} docs -name '*.cpp' -or -name '*.h' -or -name '*.dox' | xargs fgrep -l '/*!' ) 58do 59 echo " \${path_tag}\${coin_src_dir}/${file}" 60 CLASS=$(echo $file | egrep '\.cpp$'| rev| cut -d/ -f1 | cut -d. -f2- | rev) 61 if [ -n "${CLASS}" ] 62 then 63 HEADER=$(find include -name "${CLASS}.h" -or -name "SoVRML${CLASS}.h" ) 64 if [ -z "${HEADER}" ] 65 then 66 N=0 67 else 68 N=$(echo "${HEADER}" | wc -l) 69 fi 70 if [ ${N} -ne 1 ] 71 then 72 if [ ${N} -gt 1 ] 73 then 74 HEADER_NEW="" 75 for header in ${HEADER} 76 do 77 header2=$(echo ${header} | cut -d '/' -f2-) 78 if ! grep -q "#error Do not include ${header2}" ${header} 79 then 80 HEADER_NEW="${HEADER_REV}${header} " 81 else 82 let N-- 83 fi 84 done 85 HEADER=$(echo ${HEADER_NEW} | rev | cut -d\ -f2- | rev) 86 fi 87 fi 88 89 if [ ${N} -eq 1 ] 90 then 91 echo " \${path_tag}\${coin_src_dir}/${HEADER}" 92 elif [ ${N} -gt 1 ] 93 then 94 error "Error: ${HEADER}" 95 fi 96 fi 97done 98) | sort | uniq 99echo '"' 100) > docs/coin_doxygenfiles.inc 101