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