diff build-scripts/makedep.sh @ 1361:19418e4422cb

New configure-based build system. Still work in progress, but much improved
author Sam Lantinga <slouken@libsdl.org>
date Thu, 16 Feb 2006 10:11:48 +0000
parents
children 9a9b87172b4b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build-scripts/makedep.sh	Thu Feb 16 10:11:48 2006 +0000
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# Generate dependencies from a list of source files
+
+# Check to make sure our environment variables are set
+if test x"$INCLUDE" = x -o x"$SOURCES" = x -o x"$objects" = x -o x"$output" = x; then
+    echo "SOURCES, INCLUDE, objects, and output needs to be set"
+    exit 1
+fi
+cache_prefix=".#$$"
+
+generate_var()
+{
+    echo $1 | sed -e 's|^.*/||' -e 's|\.|_|g'
+}
+
+search_deps()
+{
+    base=`echo $1 | sed 's|/[^/]*$||'`
+    grep '#include "' <$1 | sed -e 's|.*"\([^"]*\)".*|\1|' | \
+    while read file
+    do cache=${cache_prefix}_`generate_var $file`
+       if test -f $cache; then
+          # We already ahve this cached
+          cat $cache
+          continue;
+       fi
+       for path in $base `echo $INCLUDE | sed 's|-I||g'`
+       do dep="$path/$file"
+          if test -f "$dep"; then
+             echo "	$dep \\" >$cache
+             echo "	$dep \\"
+             generate_dep $dep
+             break
+          fi
+       done
+    done
+}
+
+generate_dep()
+{
+    cat >>${output}.new <<__EOF__
+$1:	\\
+`search_deps $1`
+
+__EOF__
+}
+
+:>${output}.new
+for src in $SOURCES
+do  echo "Generating dependencies for $src"
+    generate_dep $src
+    ext=`echo $src | sed 's|.*\.\(.*\)|\1|'`
+    obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|$objects/\1.lo|g"`
+    echo "$obj: $src" >>${output}.new
+    case $ext in
+        asm) echo "	\$(BUILDASM)" >>${output}.new;;
+        cc)  echo "	\$(BUILDCC)" >>${output}.new;;
+        c)   echo "	\$(BUILDC)" >>${output}.new;;
+        m)   echo "	\$(BUILDM)" >>${output}.new;;
+        *)   echo "Unknown file extension: $ext";;
+    esac
+    echo "" >>${output}.new
+done
+rm -f ${cache_prefix}*
+mv ${output}.new ${output}