build-scripts/makedep.sh
author Sam Lantinga <slouken@libsdl.org>
Mon, 25 Aug 2008 06:33:00 +0000
changeset 2710 44e49d3fa6cf
parent 2247 93994f65c74c
permissions -rwxr-xr-x
Final merge of Google Summer of Code 2008 work...

Many-mouse and tablet support
by Szymon Wilczek, mentored by Ryan C. Gordon

Everything concerning the project is noted on the wiki:
http://wilku.ravenlord.ws/doku.php?id=start
     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     if test x"$ext" = x"rc"; then
    45         obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|\1.o|g"`
    46     else
    47         obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|\1.lo|g"`
    48     fi
    49     echo "\$(objects)/$obj: $src \\" >>${output}.new
    50     search_deps $src | sort | uniq >>${output}.new
    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         S) cat >>${output}.new <<__EOF__
    71 
    72 	\$(LIBTOOL)  --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
    73 
    74 __EOF__
    75         ;;
    76         rc) cat >>${output}.new <<__EOF__
    77 
    78 	\$(WINDRES) $src \$@
    79 
    80 __EOF__
    81         ;;
    82         *)   echo "Unknown file extension: $ext";;
    83     esac
    84     echo "" >>${output}.new
    85 done
    86 mv ${output}.new ${output}
    87 rm -f ${cache_prefix}*