build-scripts/makedep.sh
author Sam Lantinga <slouken@libsdl.org>
Wed, 15 Aug 2007 08:21:10 +0000
changeset 2247 93994f65c74c
parent 2204 9f64d06fa168
permissions -rwxr-xr-x
Removed hermes since it's LGPL and not compatible with a commercial license.

Prepping for using MMX and SSE intrinsics instead of inline assembly.
.. except for memcpy equivalents which only get faster if they can
exploit the parallelism of loading into multiple SIMD registers. :)
     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}*