build-scripts/makedep.sh
author Sam Lantinga <slouken@libsdl.org>
Wed, 23 Apr 2008 06:26:33 +0000
branchgsoc2008_iphone
changeset 2331 499682905a66
parent 2247 93994f65c74c
permissions -rwxr-xr-x
Creating GSoC 2008 code branches
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     1
#!/bin/sh
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     2
#
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     3
# Generate dependencies from a list of source files
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     4
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     5
# Check to make sure our environment variables are set
1634
14f302c5b32c Don't hardcode the output directory
Sam Lantinga <slouken@libsdl.org>
parents: 1521
diff changeset
     6
if test x"$INCLUDE" = x -o x"$SOURCES" = x -o x"$output" = x; then
14f302c5b32c Don't hardcode the output directory
Sam Lantinga <slouken@libsdl.org>
parents: 1521
diff changeset
     7
    echo "SOURCES, INCLUDE, and output needs to be set"
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     8
    exit 1
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     9
fi
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    10
cache_prefix=".#$$"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    11
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    12
generate_var()
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    13
{
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    14
    echo $1 | sed -e 's|^.*/||' -e 's|\.|_|g'
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    15
}
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    16
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    17
search_deps()
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    18
{
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    19
    base=`echo $1 | sed 's|/[^/]*$||'`
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    20
    grep '#include "' <$1 | sed -e 's|.*"\([^"]*\)".*|\1|' | \
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    21
    while read file
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    22
    do cache=${cache_prefix}_`generate_var $file`
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    23
       if test -f $cache; then
1391
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    24
          : # We already ahve this cached
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    25
       else
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    26
           : >$cache
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    27
           for path in $base `echo $INCLUDE | sed 's|-I||g'`
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    28
           do dep="$path/$file"
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    29
              if test -f "$dep"; then
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    30
                 echo "	$dep \\" >>$cache
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    31
                 search_deps $dep >>$cache
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    32
                 break
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    33
              fi
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    34
           done
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    35
       fi
1391
7dc446173e37 Blargle-fnargle dependencies and build rules
Sam Lantinga <slouken@libsdl.org>
parents: 1388
diff changeset
    36
       cat $cache
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    37
    done
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    38
}
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    39
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    40
:>${output}.new
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    41
for src in $SOURCES
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    42
do  echo "Generating dependencies for $src"
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    43
    ext=`echo $src | sed 's|.*\.\(.*\)|\1|'`
2204
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    44
    if test x"$ext" = x"rc"; then
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    45
        obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|\1.o|g"`
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    46
    else
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    47
        obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|\1.lo|g"`
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    48
    fi
1634
14f302c5b32c Don't hardcode the output directory
Sam Lantinga <slouken@libsdl.org>
parents: 1521
diff changeset
    49
    echo "\$(objects)/$obj: $src \\" >>${output}.new
1388
9a9b87172b4b Fixed build dependencies... ugh
Sam Lantinga <slouken@libsdl.org>
parents: 1361
diff changeset
    50
    search_deps $src | sort | uniq >>${output}.new
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    51
    case $ext in
1416
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    52
        c) cat >>${output}.new <<__EOF__
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    53
1521
9b9212e4810c CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents: 1493
diff changeset
    54
	\$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
1416
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    55
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    56
__EOF__
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    57
        ;;
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    58
        cc) cat >>${output}.new <<__EOF__
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    59
1521
9b9212e4810c CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents: 1493
diff changeset
    60
	\$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
1416
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    61
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    62
__EOF__
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    63
        ;;
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    64
        m) cat >>${output}.new <<__EOF__
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    65
1521
9b9212e4810c CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents: 1493
diff changeset
    66
	\$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
1416
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    67
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    68
__EOF__
a4c05c115bb7 Fixed script on mingw
Sam Lantinga <slouken@libsdl.org>
parents: 1391
diff changeset
    69
        ;;
1459
1e8582152d44 Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 1417
diff changeset
    70
        S) cat >>${output}.new <<__EOF__
1e8582152d44 Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 1417
diff changeset
    71
1521
9b9212e4810c CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents: 1493
diff changeset
    72
	\$(LIBTOOL)  --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src  -o \$@
1459
1e8582152d44 Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 1417
diff changeset
    73
1e8582152d44 Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 1417
diff changeset
    74
__EOF__
1e8582152d44 Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents: 1417
diff changeset
    75
        ;;
2204
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    76
        rc) cat >>${output}.new <<__EOF__
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    77
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    78
	\$(WINDRES) $src \$@
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    79
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    80
__EOF__
9f64d06fa168 Added support for building version.rc in Windows build.
Sam Lantinga <slouken@libsdl.org>
parents: 1634
diff changeset
    81
        ;;
1361
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    82
        *)   echo "Unknown file extension: $ext";;
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    83
    esac
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    84
    echo "" >>${output}.new
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    85
done
19418e4422cb New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    86
mv ${output}.new ${output}
1493
ce28f14c4502 Clean up temporary files. I'm not sure how this got removed, but whatever...
Sam Lantinga <slouken@libsdl.org>
parents: 1459
diff changeset
    87
rm -f ${cache_prefix}*