Fixed some infrastructure stuff related to our crosscompilers
[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 rm -rf tmp
36 mkdir tmp
37 cd tmp
38 ar x $LIBPARLIB
39 for i in *.o; do mv $i first-$i; ar xN 1 $LIBPARLIB $i 2> /dev/null; done
40 ar rcs libgcc.a *.o; rm *.o
41 ar x $LIBPTHREAD
42 for i in *.o; do mv $i first-$i; ar xN 1 $LIBPTHREAD $i 2> /dev/null; done
43 ar rcs libgcc.a *.o; rm *.o
44 ar x $LIBGCC
45 ar x $LIBC
46 ar x $LIBM
47 ar x $LIBG
48 ar rcs libgcc.a *.o
49 cd ..
50
51 overwrite $1 tmp/libgcc.a libgcc.a
52 rm -rf tmp
53
54 SYS_INC=`find $1 -iname sys-include`
55 rm -rf $SYS_INC/ros
56 cp -r user/parlib/inc/ros $SYS_INC
57 cp -r user/parlib/inc/sys/* $SYS_INC/sys
58