Home | History | Annotate | Download | only in build-scripts
      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"$output" = x; then
      7     echo "SOURCES, INCLUDE, 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        else
     26            : >$cache
     27            for path in $base `echo $INCLUDE | sed 's|-I||g'`
     28            do dep="$path/$file"
     29               if test -f "$dep"; then
     30                  echo "	$dep \\" >>$cache
     31                  search_deps $dep >>$cache
     32                  break
     33               fi
     34            done
     35        fi
     36        cat $cache
     37     done
     38 }
     39 
     40 :>${output}.new
     41 for src in $SOURCES
     42 do  echo "Generating dependencies for $src"
     43     ext=`echo $src | sed 's|.*\.\(.*\)|\1|'`
     44     obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|\1.lo|g"`
     45     echo "\$(objects)/$obj: $src \\" >>${output}.new
     46 
     47     # No search to be done with Windows resource files
     48     if test x"$ext" != x"rc"; then
     49         search_deps $src | sort | uniq >>${output}.new
     50     fi
     51     case $ext in
     52         c) cat >>${output}.new <<__EOF__
     53 
     54 	\$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
     55 
     56 __EOF__
     57         ;;
     58         cc) cat >>${output}.new <<__EOF__
     59 
     60 	\$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
     61 
     62 __EOF__
     63         ;;
     64         m) cat >>${output}.new <<__EOF__
     65 
     66 	\$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
     67 
     68 __EOF__
     69         ;;
     70         asm) cat >>${output}.new <<__EOF__
     71 
     72 	\$(LIBTOOL) --tag=CC --mode=compile \$(auxdir)/strip_fPIC.sh \$(NASM) -I\$(srcdir)/src/hermes/ $src -o \$@
     73 
     74 __EOF__
     75         ;;
     76         S) cat >>${output}.new <<__EOF__
     77 
     78 	\$(LIBTOOL)  --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
     79 
     80 __EOF__
     81         ;;
     82         rc) cat >>${output}.new <<__EOF__
     83 
     84 	\$(LIBTOOL)  --tag=RC --mode=compile \$(WINDRES) $src -o \$@
     85 
     86 __EOF__
     87         ;;
     88         *)   echo "Unknown file extension: $ext";;
     89     esac
     90     echo "" >>${output}.new
     91 done
     92 mv ${output}.new ${output}
     93 rm -f ${cache_prefix}*
     94