Fixed GCC augmentation script
[akaros.git] / scripts / augment-gcc
1 #!/bin/bash
2
3 function overwrite
4 {
5         for i in `find $1 -iname $3`
6         do
7                 if [ ! -f $i.bak ]
8                 then
9                         cp $i $i.bak
10                 fi
11                 cp $2 $i
12         done
13 }
14
15 if [ -z "$1" -o -z "$2" ]
16 then
17         echo usage: $1 path-to-ros-gcc target-arch
18         exit
19 fi
20
21 overwrite $1 obj/user/parlib/src/$2/crtbegin.o crtbegin.o
22 overwrite $1 obj/user/parlib/src/$2/crtend.o crtend.o
23 overwrite $1 obj/user/parlib/src/$2/entry.o crt0.o
24
25 LIBGCC=`find $1 -iname libgcc.a.bak`
26 if [ -z "$LIBGCC" ]
27 then
28         LIBGCC=`find $1 -iname libgcc.a`
29 fi
30 LIBC=`find $1 -iname libc.a`
31 LIBM=`find $1 -iname libm.a`
32 LIBG=`find $1 -iname libg.a`
33 LIBPARLIB=../obj/user/parlib/libparlib.a
34 LIBPTHREAD=../obj/user/parlib/libpthread.a
35 mkdir tmp
36 cd tmp
37 ar x $LIBPARLIB
38 for i in *.o; do mv $i first-$i; ar xN 1 $LIBPARLIB $i 2> /dev/null; done
39 ar rcs libgcc.a *.o; rm *.o
40 ar x $LIBPTHREAD
41 for i in *.o; do mv $i first-$i; ar xN 1 $LIBPTHREAD $i 2> /dev/null; done
42 ar rcs libgcc.a *.o; rm *.o
43 ar x $LIBGCC
44 ar x $LIBC
45 ar x $LIBM
46 ar x $LIBG
47 ar rcs libgcc.a *.o
48 cd ..
49
50 overwrite $1 tmp/libgcc.a libgcc.a
51 rm -rf tmp
52
53 SYS_INC=`find $1 -iname sys-include`
54 cp -Lr user/parlib/inc/* $SYS_INC
55