add ARM linker patch
[platform/upstream/gcc48.git] / packaging / change_spec
1 #!/bin/bash
2
3 do_icecream=1
4 do_cross_static=0
5 do_cross_shared=0
6 do_optional_compiler=0
7 do_optional_compiler_languages=0
8 rm -f libgcj*.spec libgcj*.changes libffi*.spec libffi*.changes gcc*-testresults.spec gcc*-testresults.changes gcc*.spec cross*.spec cross*.changes
9
10 # Default is to generate the normal gcc package
11 # unless a parameter is given.  In case that it is '-*',
12 # that parameter will be used as suffix for the package name
13 # and as suffix for the install path (/opt/gccSUFFIX)
14 # In case that it is '[0-9]*', that parameter will be used
15 # as a suffix for a versioned package name.
16
17 if [ $# -lt 1 ]; then
18         outfile=gcc.spec
19 else
20         case $1 in
21         [0-9]*)
22           base_ver=$1
23           outfile=gcc$1.spec
24         ;;
25         *)
26           exit 1
27         ;;
28         esac
29 fi
30
31         echo -n > $outfile
32         if test "$do_optional_compiler" = "1"; then
33             echo '%define run_tests 1' >> $outfile
34             echo '%define build_optional_compiler 1' >> $outfile
35         fi
36         if test "$do_optional_compiler_languages" = "1"; then
37             echo '%define run_tests 1' >> $outfile
38             echo '%define build_optional_compiler_languages 1' >> $outfile
39         fi
40         sed -e 's%@base_ver@%'$base_ver'%g' \
41             gcc.spec.in \
42         | sed -n -e '{
43 /^# PACKAGE-BEGIN/h
44 /^# PACKAGE-BEGIN/,/^# PACKAGE-END/H
45 /^# PACKAGE-BEGIN/,/^# PACKAGE-END/!p
46 /^# PACKAGE-END/{g
47 s/@variant@//g
48 p
49 g
50 s/@variant@/-32bit/g
51 p
52 g
53 s/@variant@/-64bit/g
54 p
55 }
56 }' >> $outfile
57         if test "$do_optional_compiler" = "0"; then
58         if test "$do_optional_compiler_languages" = "0"; then
59         echo '%define building_libjava 1' > libgcj$base_ver.spec
60         sed -e '/^# LIBJAVA-DELETE-BEGIN/,/^# LIBJAVA-DELETE-END/d;s/-n libgcj@base_ver@$//g;s/^Name:[[:space:]]*gcc/Name: libgcj/g' \
61             gcc.spec.in \
62         | sed -e 's%@base_ver@%'$base_ver'%g' \
63         | sed -n -e '{
64 /^# PACKAGE-BEGIN/h
65 /^# PACKAGE-BEGIN/,/^# PACKAGE-END/H
66 /^# PACKAGE-BEGIN/,/^# PACKAGE-END/!p
67 /^# PACKAGE-END/{g
68 s/@variant@//g
69 p
70 g
71 s/@variant@/-32bit/g
72 p
73 g
74 s/@variant@/-64bit/g
75 p
76 }
77 }' >> libgcj$base_ver.spec
78         echo '%define building_testsuite 1' > gcc$base_ver-testresults.spec
79         echo '%define run_tests 1' >> gcc$base_ver-testresults.spec
80         sed -e '/^# GCC-TESTSUITE-DELETE-BEGIN/,/^# GCC-TESTSUITE-DELETE-END/d;s/-n gcc@base_ver@-testresults$//g;s/^Name:[[:space:]]*gcc@base_ver@/Name: gcc@base_ver@-testresults/g' \
81             gcc.spec.in \
82         | sed -e 's%@base_ver@%'$base_ver'%g' \
83 >> gcc$base_ver-testresults.spec
84         echo '%define building_libffi 1' > libffi$base_ver.spec
85         sed -e '/^# LIBFFI-DELETE-BEGIN/,/^# LIBFFI-DELETE-END/d;s/^Name:[[:space:]]*gcc/Name: libffi/g' \
86             gcc.spec.in \
87         | sed -e 's%@base_ver@%'$base_ver'%g' \
88         | sed -n -e '{
89 /^# PACKAGE-BEGIN/h
90 /^# PACKAGE-BEGIN/,/^# PACKAGE-END/H
91 /^# PACKAGE-BEGIN/,/^# PACKAGE-END/!p
92 /^# PACKAGE-END/{g
93 s/@variant@//g
94 p
95 g
96 s/@variant@/-32bit/g
97 p
98 g
99 s/@variant@/-64bit/g
100 p
101 }
102 }' \
103         | sed -e '/^%package -n libffi'$base_ver'$/d' \
104         | sed -e 's/-n libffi'$base_ver'$//g' \
105 >> libffi$base_ver.spec
106
107   test -f gcc$base_ver.changes \
108     && ( ln -f gcc$base_ver.changes libgcj$base_ver.changes; \
109          ln -f gcc$base_ver.changes libffi$base_ver.changes; \
110          ln -f gcc$base_ver.changes gcc$base_ver-testresults.changes; )
111         fi
112     fi
113
114 # disabled: mips, sparc, alpha
115 if test "$do_icecream" = 1 ; then
116   for arch in i386 x86_64 armv7hl armv5el armv7el; do
117     exclarch=`echo $arch | sed -e 's/i.86/%ix86/'`
118     { sed -n -e '1,/COMMON-BEGIN/p' cross-icecream.spec.in
119       sed -n -e '/COMMON-BEGIN/,/COMMON-END/p' $outfile
120       sed -n -e '/COMMON-END/,$p' cross-icecream.spec.in; } |
121     sed -e "s#@cross_arch@#$arch#" \
122         -e "s#@base_ver@#$base_ver#" \
123         -e "s/^\(ExclusiveArch.*\) $exclarch /\1 /" \
124         > cross-$arch-gcc$base_ver-icecream-backend.spec
125     test -f gcc$base_ver.changes && ln -f gcc$base_ver.changes cross-$arch-gcc$base_ver-icecream-backend.changes
126   done
127 fi
128
129 export outfile
130 if test "$do_cross_shared" = 1 ; then
131   # shared cross
132   for arch in ; do
133     base_ver=$base_ver cross_arch=$arch sh cross.spec.in > cross-$arch-gcc$base_ver.spec
134     test -f gcc$base_ver.changes && ln -f gcc$base_ver.changes cross-$arch-gcc$base_ver.changes
135   done
136 fi
137 if test "$do_cross_static" = 1 ; then
138   # static crosses
139   for arch in ; do
140     echo '%define build_static 1' > cross-$arch-gcc$base_ver-static.spec
141     base_ver=$base_ver cross_arch=$arch name_suffix="-static" sh cross.spec.in >> cross-$arch-gcc$base_ver-static.spec
142     test -f gcc$base_ver.changes && ln -f gcc$base_ver.changes cross-$arch-gcc$base_ver-static.changes
143   done
144 #  # avr is static but wants the non-static versioned name
145 #  echo '%define build_static 1' > cross-avr-gcc$base_ver.spec
146 #  base_ver=$base_ver cross_arch=avr sh cross.spec.in >> cross-avr-gcc$base_ver.spec
147 #  test -f gcc$base_ver.changes && ln -f gcc$base_ver.changes cross-avr-gcc$base_ver.changes
148 fi
149
150
151 exit 0