Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/print-sysroot-suffix.sh @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
52:c156f1bd5cd9 | 55:77e2b8dfacca |
---|---|
1 #! /bin/sh | |
2 # Script to generate SYSROOT_SUFFIX_SPEC equivalent to MULTILIB_OSDIRNAMES | |
3 # Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS and MULTILIB_MATCHES. | |
4 | |
5 # Copyright (C) 2009 Free Software Foundation, Inc. | |
6 | |
7 # This file is part of GCC. | |
8 | |
9 # GCC is free software; you can redistribute it and/or modify it under | |
10 # the terms of the GNU General Public License as published by the Free | |
11 # Software Foundation; either version 3, or (at your option) any later | |
12 # version. | |
13 | |
14 # GCC is distributed in the hope that it will be useful, but WITHOUT | |
15 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 # for more details. | |
18 | |
19 # You should have received a copy of the GNU General Public License | |
20 # along with GCC; see the file COPYING3. If not see | |
21 # <http://www.gnu.org/licenses/>. | |
22 | |
23 # This shell script produces a header file fragment that defines | |
24 # SYSROOT_SUFFIX_SPEC. It assumes that the sysroots will have the same | |
25 # structure and names used by the multilibs. | |
26 | |
27 # Invocation: | |
28 # print-sysroot-suffix.sh \ | |
29 # MULTILIB_OSDIRNAMES \ | |
30 # MULTILIB_OPTIONS \ | |
31 # MULTILIB_MATCHES \ | |
32 # > t-sysroot-suffix.h | |
33 | |
34 # The three options exactly correspond to the variables of the same | |
35 # names defined in the tmake_file fragments. | |
36 | |
37 # Example: | |
38 # sh ./gcc/config/print-sysroot-suffix.sh "a=A" "a b/c/d" "" | |
39 # => | |
40 # #undef SYSROOT_SUFFIX_SPEC | |
41 # #define SYSROOT_SUFFIX_SPEC "" \ | |
42 # "%{a:" \ | |
43 # "%{b:A/b/;" \ | |
44 # "c:A/c/;" \ | |
45 # "d:A/d/;" \ | |
46 # ":A/};" \ | |
47 # ":}" | |
48 | |
49 # The script uses temporary subscripts in order to permit a recursive | |
50 # algorithm without the use of functions. | |
51 | |
52 set -e | |
53 | |
54 dirnames="$1" | |
55 options="$2" | |
56 matches="$3" | |
57 | |
58 cat > print-sysroot-suffix3.sh <<\EOF | |
59 #! /bin/sh | |
60 # Print all the multilib matches for this option | |
61 result="$1" | |
62 EOF | |
63 for x in $matches; do | |
64 l=`echo $x | sed -e 's/=.*$//' -e 's/?/=/g'` | |
65 r=`echo $x | sed -e 's/^.*=//' -e 's/?/=/g'` | |
66 echo "[ \"\$1\" = \"$l\" ] && result=\"\$result|$r\"" >> print-sysroot-suffix3.sh | |
67 done | |
68 echo 'echo $result' >> print-sysroot-suffix3.sh | |
69 chmod +x print-sysroot-suffix3.sh | |
70 | |
71 cat > print-sysroot-suffix2.sh <<\EOF | |
72 #! /bin/sh | |
73 # Recursive script to enumerate all multilib combinations, match against | |
74 # multilib directories and output a spec string of the result. | |
75 # Will fold identical trees. | |
76 | |
77 padding="$1" | |
78 optstring="$2" | |
79 shift 2 | |
80 n="\" \\ | |
81 $padding\"" | |
82 if [ $# = 0 ]; then | |
83 EOF | |
84 | |
85 pat= | |
86 for x in $dirnames; do | |
87 p=`echo $x | sed -e 's,=!,/$=/,'` | |
88 pat="$pat -e 's=^//$p='" | |
89 done | |
90 echo ' optstring=`echo "/$optstring" | sed '"$pat\`" >> print-sysroot-suffix2.sh | |
91 cat >> print-sysroot-suffix2.sh <<\EOF | |
92 case $optstring in | |
93 //*) | |
94 ;; | |
95 *) | |
96 echo "$optstring" | |
97 ;; | |
98 esac | |
99 else | |
100 thisopt="$1" | |
101 shift | |
102 bit= | |
103 lastcond= | |
104 result= | |
105 for x in `echo "$thisopt" | sed -e 's,/, ,g'`; do | |
106 case $x in | |
107 EOF | |
108 for x in `echo "$options" | sed -e 's,/, ,g'`; do | |
109 match=`./print-sysroot-suffix3.sh "$x"` | |
110 echo "$x) optmatch=\"$match\" ;;" >> print-sysroot-suffix2.sh | |
111 done | |
112 cat >> print-sysroot-suffix2.sh <<\EOF | |
113 esac | |
114 bit=`"$0" "$padding " "$optstring$x/" "$@"` | |
115 if [ -z "$lastopt" ]; then | |
116 lastopt="$optmatch" | |
117 else | |
118 if [ "$lastbit" = "$bit" ]; then | |
119 lastopt="$lastopt|$optmatch" | |
120 else | |
121 result="$result$lastopt:$lastbit;$n" | |
122 lastopt="$optmatch" | |
123 fi | |
124 fi | |
125 lastbit="$bit" | |
126 done | |
127 bit=`"$0" "$padding " "$optstring" "$@"` | |
128 if [ "$bit" = "$lastbit" ]; then | |
129 if [ -z "$result" ]; then | |
130 echo "$bit" | |
131 else | |
132 echo "$n%{$result:$bit}" | |
133 fi | |
134 else | |
135 echo "$n%{$result$lastopt:$lastbit;$n:$bit}" | |
136 fi | |
137 fi | |
138 EOF | |
139 | |
140 chmod +x ./print-sysroot-suffix2.sh | |
141 result=`./print-sysroot-suffix2.sh "" "/" $options` | |
142 echo "#undef SYSROOT_SUFFIX_SPEC" | |
143 echo "#define SYSROOT_SUFFIX_SPEC \"$result\"" | |
144 rm print-sysroot-suffix2.sh | |
145 rm print-sysroot-suffix3.sh |