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