1#!/bin/sh
2#
3# Generate dependencies from a list of source files
4
5# Check to make sure our environment variables are set
6if 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
9fi
10cache_prefix=".#$$"
11
12generate_var()
13{
14    echo $1 | sed -e 's|^.*/||' -e 's|\.|_|g'
15}
16
17search_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
41for src in $SOURCES
42do  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
91done
92mv ${output}.new ${output}
93rm -f ${cache_prefix}*
94