build-scripts/makedep.sh
changeset 1361 19418e4422cb
child 1388 9a9b87172b4b
equal deleted inserted replaced
1360:70a9cfb4cf1b 1361:19418e4422cb
       
     1 #!/bin/sh
       
     2 #
       
     3 # Generate dependencies from a list of source files
       
     4 
       
     5 # Check to make sure our environment variables are set
       
     6 if test x"$INCLUDE" = x -o x"$SOURCES" = x -o x"$objects" = x -o x"$output" = x; then
       
     7     echo "SOURCES, INCLUDE, objects, and output needs to be set"
       
     8     exit 1
       
     9 fi
       
    10 cache_prefix=".#$$"
       
    11 
       
    12 generate_var()
       
    13 {
       
    14     echo $1 | sed -e 's|^.*/||' -e 's|\.|_|g'
       
    15 }
       
    16 
       
    17 search_deps()
       
    18 {
       
    19     base=`echo $1 | sed 's|/[^/]*$||'`
       
    20     grep '#include "' <$1 | sed -e 's|.*"\([^"]*\)".*|\1|' | \
       
    21     while read file
       
    22     do cache=${cache_prefix}_`generate_var $file`
       
    23        if test -f $cache; then
       
    24           # We already ahve this cached
       
    25           cat $cache
       
    26           continue;
       
    27        fi
       
    28        for path in $base `echo $INCLUDE | sed 's|-I||g'`
       
    29        do dep="$path/$file"
       
    30           if test -f "$dep"; then
       
    31              echo "	$dep \\" >$cache
       
    32              echo "	$dep \\"
       
    33              generate_dep $dep
       
    34              break
       
    35           fi
       
    36        done
       
    37     done
       
    38 }
       
    39 
       
    40 generate_dep()
       
    41 {
       
    42     cat >>${output}.new <<__EOF__
       
    43 $1:	\\
       
    44 `search_deps $1`
       
    45 
       
    46 __EOF__
       
    47 }
       
    48 
       
    49 :>${output}.new
       
    50 for src in $SOURCES
       
    51 do  echo "Generating dependencies for $src"
       
    52     generate_dep $src
       
    53     ext=`echo $src | sed 's|.*\.\(.*\)|\1|'`
       
    54     obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|$objects/\1.lo|g"`
       
    55     echo "$obj: $src" >>${output}.new
       
    56     case $ext in
       
    57         asm) echo "	\$(BUILDASM)" >>${output}.new;;
       
    58         cc)  echo "	\$(BUILDCC)" >>${output}.new;;
       
    59         c)   echo "	\$(BUILDC)" >>${output}.new;;
       
    60         m)   echo "	\$(BUILDM)" >>${output}.new;;
       
    61         *)   echo "Unknown file extension: $ext";;
       
    62     esac
       
    63     echo "" >>${output}.new
       
    64 done
       
    65 rm -f ${cache_prefix}*
       
    66 mv ${output}.new ${output}