Mercurial > sdl-ios-xcode
annotate build-scripts/makedep.sh @ 1544:ab1e4c41ab71
Fixed bug #33
Mike Frysinger wrote:
> with libsdl-1.2.9, some games (like bomberclone) started
> segfaulting in Gentoo
[...snip...]
> the last change in the last hunk:
[...snip...]
> if i change the statement to read:
> (table[which].blit_features & GetBlitFeatures()) == GetBlitFeatures()
> bomberclone no longer segfaults on my box
Alex Volkov wrote:
> The test "(table[which].blit_features & GetBlitFeatures()) ==
> table[which].blit_features)" is correct, and the previous
> "(table[which].cpu_mmx == SDL_HasMMX())" was actually broken.
I think there is potentially a slightly different cause of the above problem.
During the introduction of the Altivec code, the blit_table struct field
'alpha' got changed from a straightforward enum to a bitmask, which makes
perfect sense by itself. However, now the table driven blitter selection code
in SDL_CalculateBlitN() can choose the wrong blitters when searching for a
NO_ALPHA blitter because of the following code:
int a_need = 0;
...
(a_need & table[which].alpha) == a_need &&
When searching through the normal_blit_2[] table, a SET_ALPHA blitter (like
Blit_RGB565_ARGB8888) can now be selected instead of a NO_ALPHA one, causing
alpha channel bits to appear in a non-alpha destination surface. I suppose this
could theoretically be an indirect cause of the segfault mentioned above.
I *think* this can be fixed by changing to
int a_need = NO_ALPHA;
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 15 Mar 2006 15:47:49 +0000 |
parents | 9b9212e4810c |
children | 14f302c5b32c |
rev | line source |
---|---|
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 |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 if test x"$INCLUDE" = x -o x"$SOURCES" = x -o x"$objects" = x -o x"$output" = x; then |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 echo "SOURCES, INCLUDE, objects, and output needs to be set" |
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|'` |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 obj=`echo $src | sed "s|^.*/\([^ ]*\)\..*|$objects/\1.lo|g"` |
1388
9a9b87172b4b
Fixed build dependencies... ugh
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
45 echo "$obj: $src \\" >>${output}.new |
9a9b87172b4b
Fixed build dependencies... ugh
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
46 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
|
47 case $ext in |
1416 | 48 c) cat >>${output}.new <<__EOF__ |
49 | |
1521
9b9212e4810c
CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents:
1493
diff
changeset
|
50 \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ |
1416 | 51 |
52 __EOF__ | |
53 ;; | |
54 cc) cat >>${output}.new <<__EOF__ | |
55 | |
1521
9b9212e4810c
CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents:
1493
diff
changeset
|
56 \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ |
1416 | 57 |
58 __EOF__ | |
59 ;; | |
60 m) cat >>${output}.new <<__EOF__ | |
61 | |
1521
9b9212e4810c
CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents:
1493
diff
changeset
|
62 \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ |
1416 | 63 |
64 __EOF__ | |
65 ;; | |
66 asm) cat >>${output}.new <<__EOF__ | |
67 | |
1417
24fbbedd2ad6
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
1416
diff
changeset
|
68 \$(LIBTOOL) --tag=CC --mode=compile \$(auxdir)/strip_fPIC.sh \$(NASM) $src -o \$@ |
1416 | 69 |
70 __EOF__ | |
71 ;; | |
1459
1e8582152d44
Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
1417
diff
changeset
|
72 S) cat >>${output}.new <<__EOF__ |
1e8582152d44
Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
1417
diff
changeset
|
73 |
1521
9b9212e4810c
CFLAGS are separate from EXTRA_CFLAGS
Sam Lantinga <slouken@libsdl.org>
parents:
1493
diff
changeset
|
74 \$(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
|
75 |
1e8582152d44
Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
1417
diff
changeset
|
76 __EOF__ |
1e8582152d44
Date: Wed, 01 Mar 2006 10:14:31 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
1417
diff
changeset
|
77 ;; |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 *) 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
|
79 esac |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 echo "" >>${output}.new |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 done |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 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
|
83 rm -f ${cache_prefix}* |