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