OSDN Git Service

* mode.scm (<mode>) Rename member non-mode-c-type to c-type.
[pf3gnuchains/pf3gnuchains4x.git] / cgen / gen-all
1 #! /bin/sh
2 # Generate files for all apps,
3 # maybe build all apps,
4 # and produce a report listing differences from checked in copies.
5 #
6 # NOTE: This script doesn't rm -rf the previous run since it can run
7 # different tests.  If you want to start fresh, rm -rf tmp-all yourself.
8
9 set -e
10 trap "echo ERROR: $(date)" 0
11
12 MPC_DIR="/path/to/mpc"
13 MPC_CONFIG="--with-mpc=${MPC_DIR}"
14 export LD_LIBRARY_PATH="${MPC_DIR}/lib"
15
16 echo "Starting gen-all: $(date)"
17
18 all_cgen_cpus="arm cris fr30 frv ip2k iq2000 lm32 m32c m32r mep mt \
19 openrisc sh sh64 xc16x xstormy16"
20
21 all_sid_cpus="arm m32r mep mt sh xstormy16"
22
23 do_config=no
24 do_build=no
25 do_binutils=no
26 do_gcc=no
27 do_newlib=no
28 do_sim=no
29 do_sid=no
30 do_intrinsics=no
31 do_diffs=no
32
33 cgen_cpus="${all_cgen_cpus}"
34 sid_cpus="${all_sid_cpus}"
35
36 for a in "$@"
37 do
38     case $a in
39     cpus=*) cgen_cpus=${a/cpus=} sid_cpus=${cgen_cpus} ;;
40     config) do_config=yes ;;
41     build) do_build=yes ;;
42     binutils) do_binutils=yes ;;
43     gcc) do_gcc=yes ;;
44     newlib) do_newlib=yes ;;
45     sim) do_sim=yes ;;
46     sid) do_sid=yes ;;
47     intrinsics) do_intrinsics=yes ;;
48     diffs) do_diffs=yes ;;
49     all)
50         do_config=yes
51         do_build=yes
52         do_binutils=yes
53         do_gcc=yes
54         do_newlib=yes
55         do_sim=yes
56         do_sid=yes
57         do_intrinsics=yes
58         do_diffs=yes
59         ;;
60     *) echo "Invalid option: $a" >&2 ; exit 1 ;;
61     esac
62 done
63
64 for c in ${cgen_cpus}
65 do
66     if echo " ${all_cgen_cpus} " | grep -q " ${c} "
67     then
68         : ok
69     else
70         echo "Invalid cgen cpu ${c}" >&2
71         exit 1
72     fi
73 done
74 if [ "${do_sid}" == "yes" ]
75 then
76     for c in ${sid_cpus}
77     do
78         if echo " ${all_sid_cpus} " | grep -q " ${c} "
79         then
80             : ok
81         else
82             echo "Invalid sid cpu ${c}" >&2
83             exit 1
84         fi
85     done
86 fi
87
88 mkdir -p tmp-all
89 cd tmp-all
90 build_dir=$(pwd)
91
92 # Paths to src,gcc,rel relative to ${build_dir}.
93 src="../../../src"
94 gcc="../../../gcc"
95 reltop="../../.."
96
97 build_all_target_sys="fr30-elf"
98 build_sys=$(sh ${src}/config.guess)
99 host_sys=${build_sys}
100
101 config_src () {
102     target_sys=$1
103     prefix=$2
104
105     extra_config_args=""
106     if [ "${target_sys}" == "${build_all_target_sys}" ]
107     then
108         extra_config_args="${extra_config_args} --enable-targets=all"
109     fi
110
111     if [ -f Makefile ]
112     then
113         true # already configured
114     elif [ "${do_config}" = "yes" ]
115     then
116         echo "Configuring: $(date)"
117         ../${src}/configure \
118             --prefix=${prefix} \
119             --build=${build_sys} \
120             --host=${host_sys} \
121             --target=${target_sys} \
122             --enable-shared \
123             --enable-cgen-maint \
124             --enable-languages=c \
125             ${extra_config_args}
126     fi
127 }
128
129 config_gcc () {
130     target_sys=$1
131     prefix=$2
132
133     extra_config_args=""
134
135     if [ -f Makefile ]
136     then
137         true # already configured
138     elif [ "${do_config}" = "yes" ]
139     then
140         echo "Configuring: $(date)"
141         ../${gcc}/configure \
142             --prefix=${prefix} \
143             --build=${build_sys} \
144             --host=${host_sys} \
145             --target=${target_sys} \
146             --enable-languages=c \
147             ${MPC_CONFIG} \
148             ${extra_config_args}
149     fi
150 }
151
152 build_binutils () {
153     target_sys=$1
154     prefix=$2
155     PATH=${prefix}/bin:$PATH
156
157     echo "Building ${target_sys} binutils, $(date)"
158     mkdir -p tmp-src-${target_sys}
159     (
160         set -e
161         cd tmp-src-${target_sys}
162
163         config_src ${target_sys} ${prefix}
164
165         if [ "${do_build}" = "yes" ]
166         then
167             echo "Building: $(date)"
168             if [ ! -f Makefile ]
169             then
170                 echo "Tree hasn't been configured."
171                 exit 1
172             fi
173             make -j3 all-binutils all-gas all-ld
174             make -j1 install-binutils install-gas install-ld
175             echo "Build done: $(date)"
176         fi
177     )
178     if [ $? != 0 ] ; then exit 1 ; fi 
179 }
180
181 build_gcc () {
182     target_sys=$1
183     prefix=$2
184     PATH=${prefix}/bin:$PATH
185
186     echo "Building ${target_sys} gcc, $(date)"
187     mkdir -p tmp-gcc-${target_sys}
188     (
189         set -e
190         cd tmp-gcc-${target_sys}
191
192         config_gcc ${target_sys} ${prefix}
193
194         if [ "${do_build}" = "yes" ]
195         then
196             echo "Building: $(date)"
197             if [ ! -f Makefile ]
198             then
199                 echo "Tree hasn't been configured."
200                 exit 1
201             fi
202             make -j3 all-gcc
203             make -j1 install-gcc
204             # FIXME: The toplevel makefile doesn't find ${target}-gcc,
205             # it sets CC_FOR_TARGET to ${target}-cc.
206             rm -f ${prefix}/bin/${target_sys}-cc
207             ln -s ${target_sys}-gcc ${prefix}/bin/${target_sys}-cc
208             echo "Build done: $(date)"
209         fi
210     )
211     if [ $? != 0 ] ; then exit 1 ; fi 
212 }
213
214 build_newlib () {
215     target_sys=$1
216     prefix=$2
217     PATH=${prefix}/bin:$PATH
218
219     echo "Building ${target_sys} newlib, $(date)"
220     mkdir -p tmp-src-${target_sys}
221     (
222         set -e
223         cd tmp-src-${target_sys}
224
225         config_src ${target_sys} ${prefix}
226
227         if [ "${do_build}" = "yes" ]
228         then
229             echo "Building: $(date)"
230             if [ ! -f Makefile ]
231             then
232                 echo "Tree hasn't been configured."
233                 exit 1
234             fi
235             make -j3 all-target-newlib all-target-libgloss
236             make -j1 install-target-newlib install-target-libgloss
237             echo "Build done: $(date)"
238         fi
239     )
240     if [ $? != 0 ] ; then exit 1 ; fi 
241 }
242
243 build_sim () {
244     target_sys=$1
245     prefix=$2
246     PATH=${prefix}/bin:$PATH
247
248     echo "Building ${cpu} sim, $(date)"
249     mkdir -p tmp-src-${target_sys}
250     (
251         set -e
252         cd tmp-src-${target_sys}
253
254         config_src ${target_sys} ${prefix}
255
256         if [ "${do_build}" = "yes" ]
257         then
258             echo "Building: $(date)"
259             if [ ! -f Makefile ]
260             then
261                 echo "Tree hasn't been configured."
262                 exit 1
263             fi
264             make -j3 all-sim all-gdb
265             make -j1 install-sim install-gdb
266             echo "Build done: $(date)"
267         fi
268     )
269     if [ $? != 0 ] ; then exit 1 ; fi 
270 }
271
272 build_sid () {
273     target_sys=$1
274     prefix=$2
275     PATH=${prefix}/bin:$PATH
276
277     echo "Building ${cpu} sid, $(date)"
278     mkdir -p tmp-src-${target_sys}
279     (
280         set -e
281         cd tmp-src-${target_sys}
282
283         config_src ${target_sys} ${prefix}
284
285         if [ "${do_build}" = "yes" ]
286         then
287             echo "Building: $(date)"
288             if [ ! -f Makefile ]
289             then
290                 echo "Tree hasn't been configured."
291                 exit 1
292             fi
293             # SID doesn't support --enable-cgen-maint, sigh.
294             if [ ! -f sid/component/cgen-cpu/Makefile ]
295             then
296                 make -j3 configure-sid
297             fi
298             (cd sid/component/cgen-cpu && make cgen-all)
299             if [ $? != 0 ] ; then exit 1 ; fi
300             make -j3 all-sid
301             make -j1 install-sid
302             echo "Build done: $(date)"
303         fi
304     )
305     if [ $? != 0 ] ; then exit 1 ; fi 
306 }
307
308 build_intrinsics () {
309     (cd .. && sh ./gen-all-intrinsics ${build_dir}/${gcc})
310     if [ $? != 0 ] ; then exit 1 ; fi
311 }
312
313 build_diffs () {
314     # NOTE: cvs will return with a non-zero exit code if there are diffs.
315     (cd ${src}/opcodes && cvs diff -du >${build_dir}/opcodes.diffs)
316     (cd ${src}/sim && cvs diff -du >${build_dir}/sim.diffs)
317     (cd ${src}/sid/component/cgen-cpu && cvs diff -du >${build_dir}/sid.diffs)
318     (cd ${gcc}/gcc/config/mep && svn diff -x -u >${build_dir}/gcc.diffs)
319 }
320
321 for cpu in ${cgen_cpus}
322 do
323     # FIXME: arm-eabi is preferred over arm-elf
324     target_sys=${cpu}-elf
325     prefix=$(cd ${reltop} && pwd -P)/rel-${target_sys}
326     [ $? != 0 ] && { echo "Error setting prefix" >&2 ; exit 1 ; }
327     mkdir -p ${prefix}
328
329     if [ "${do_binutils}" = "yes" ]
330     then
331         build_binutils ${target_sys} ${prefix}
332     fi
333
334     if [ "${do_sim}" = "yes" ]
335     then
336         build_sim ${target_sys} ${prefix}
337     fi
338
339     if [ "${do_gcc}" = "yes" ]
340     then
341         # GCC doesn't support some cpus that cgen supports.
342         case ${target_sys} in
343         ip2k-*) ;;
344         mt-*) ;;
345         openrisc-* | or32-*) ;;
346         xc16x-*) ;;
347         *) build_gcc ${target_sys} ${prefix} ;;
348         esac
349     fi
350
351     if [ "${do_newlib}" = "yes" ]
352     then
353         # Newlib doesn't support some cpus that cgen supports.
354         # We also can't build newlib if we don't have gcc.
355         case ${target_sys} in
356         ip2k-*) ;;
357         mt-*) ;;
358         openrisc-* | or32-*) ;;
359         xc16x-*) ;;
360         *) build_newlib ${target_sys} ${prefix} ;;
361         esac
362     fi
363 done
364
365 for cpu in ${sid_cpus}
366 do
367     # FIXME: arm-eabi is preferred over arm-elf
368     target_sys=${cpu}-elf
369     prefix=$(cd ${reltop} && pwd -P)/rel-${target_sys}
370     [ $? != 0 ] && { echo "Error setting prefix" >&2 ; exit 1 ; }
371     mkdir -p ${prefix}
372
373     if [ "${do_sid}" = "yes" ]
374     then
375         build_sid ${target_sys} ${prefix}
376     fi
377 done
378
379 if [ "${do_intrinsics}" = "yes" ]
380 then
381     build_intrinsics ${target_sys} ${prefix}
382 fi
383
384 if [ "${do_diffs}" = "yes" ]
385 then
386     build_diffs ${target_sys} ${prefix}
387 fi
388
389 echo "Ending gen-all: $(date)"
390 trap "" 0