mips.py: add mips32r2 and mips64r2 builder classes
[catalyst.git] / arch / mips.py
1
2 import builder,os
3 from catalyst_support import *
4
5 class generic_mips(builder.generic):
6         "Abstract base class for all mips builders [Big-endian]"
7         def __init__(self,myspec):
8                 builder.generic.__init__(self,myspec)
9                 self.settings["CHROOT"]="chroot"
10                 self.settings["CHOST"]="mips-unknown-linux-gnu"
11
12 class generic_mipsel(builder.generic):
13         "Abstract base class for all mipsel builders [Little-endian]"
14         def __init__(self,myspec):
15                 builder.generic.__init__(self,myspec)
16                 self.settings["CHROOT"]="chroot"
17                 self.settings["CHOST"]="mipsel-unknown-linux-gnu"
18
19 class generic_mips64(builder.generic):
20         "Abstract base class for all mips64 builders [Big-endian]"
21         def __init__(self,myspec):
22                 builder.generic.__init__(self,myspec)
23                 self.settings["CHROOT"]="chroot"
24                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
25
26 class generic_mips64el(builder.generic):
27         "Abstract base class for all mips64el builders [Little-endian]"
28         def __init__(self,myspec):
29                 builder.generic.__init__(self,myspec)
30                 self.settings["CHROOT"]="chroot"
31                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
32
33 class arch_mips1(generic_mips):
34         "Builder class for MIPS I [Big-endian]"
35         def __init__(self,myspec):
36                 generic_mips.__init__(self,myspec)
37                 self.settings["CFLAGS"]="-O2 -mips1 -mabi=32 -pipe"
38
39 class arch_mips32(generic_mips):
40         "Builder class for MIPS 32 [Big-endian]"
41         def __init__(self,myspec):
42                 generic_mips.__init__(self,myspec)
43                 self.settings["CFLAGS"]="-O2 -march=mips32 -mabi=32 -pipe"
44
45 class arch_mips32r2(generic_mips):
46         "Builder class for MIPS 32r2 [Big-endian]"
47         def __init__(self,myspec):
48                 generic_mips.__init__(self,myspec)
49                 self.settings["CFLAGS"]="-O2 -march=mips32r2 -mabi=32 -pipe"
50
51 class arch_mips3(generic_mips):
52         "Builder class for MIPS III [Big-endian]"
53         def __init__(self,myspec):
54                 generic_mips.__init__(self,myspec)
55                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=32 -mfix-r4000 -mfix-r4400 -pipe"
56
57 class arch_mips3_n32(generic_mips64):
58         "Builder class for MIPS III [Big-endian N32]"
59         def __init__(self,myspec):
60                 generic_mips64.__init__(self,myspec)
61                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=n32 -mfix-r4000 -mfix-r4400 -pipe"
62
63 class arch_mips3_n64(generic_mips64):
64         "Builder class for MIPS III [Big-endian N64]"
65         def __init__(self,myspec):
66                 generic_mips64.__init__(self,myspec)
67                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=64 -mfix-r4000 -mfix-r4400 -pipe"
68
69 class arch_mips3_multilib(generic_mips64):
70         "Builder class for MIPS III [Big-endian multilib]"
71         def __init__(self,myspec):
72                 generic_mips64.__init__(self,myspec)
73                 self.settings["CFLAGS"]="-O2 -mips3 -mfix-r4000 -mfix-r4400 -pipe"
74
75 class arch_mips4(generic_mips):
76         "Builder class for MIPS IV [Big-endian]"
77         def __init__(self,myspec):
78                 generic_mips64.__init__(self,myspec)
79                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=32 -pipe"
80
81 class arch_mips4_n32(generic_mips64):
82         "Builder class for MIPS IV [Big-endian N32]"
83         def __init__(self,myspec):
84                 generic_mips64.__init__(self,myspec)
85                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=n32 -pipe"
86
87 class arch_mips4_n64(generic_mips64):
88         "Builder class for MIPS IV [Big-endian N64]"
89         def __init__(self,myspec):
90                 generic_mips64.__init__(self,myspec)
91                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=64 -pipe"
92
93 class arch_mips4_multilib(generic_mips64):
94         "Builder class for MIPS IV [Big-endian multilib]"
95         def __init__(self,myspec):
96                 generic_mips64.__init__(self,myspec)
97                 self.settings["CFLAGS"]="-O2 -mips4 -pipe"
98
99 class arch_mips64(generic_mips):
100         "Builder class for MIPS 64 [Big-endian]"
101         def __init__(self,myspec):
102                 generic_mips64.__init__(self,myspec)
103                 self.settings["CFLAGS"]="-O2 -march=mips64 -mabi=32 -pipe"
104
105 class arch_mips64_n32(generic_mips64):
106         "Builder class for MIPS 64 [Big-endian N32]"
107         def __init__(self,myspec):
108                 generic_mips64.__init__(self,myspec)
109                 self.settings["CFLAGS"]="-O2 -march=mips64 -mabi=n32 -pipe"
110
111 class arch_mips64_n64(generic_mips64):
112         "Builder class for MIPS 64 [Big-endian N64]"
113         def __init__(self,myspec):
114                 generic_mips64.__init__(self,myspec)
115                 self.settings["CFLAGS"]="-O2 -march=mips64 -mabi=64 -pipe"
116
117 class arch_mips64_multilib(generic_mips64):
118         "Builder class for MIPS 64 [Big-endian multilib]"
119         def __init__(self,myspec):
120                 generic_mips64.__init__(self,myspec)
121                 self.settings["CFLAGS"]="-O2 -march=mips64 -pipe"
122
123 class arch_mips64r2(generic_mips):
124         "Builder class for MIPS 64r2 [Big-endian]"
125         def __init__(self,myspec):
126                 generic_mips.__init__(self,myspec)
127                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -mabi=32 -pipe"
128
129 class arch_mips64r2_n32(generic_mips64):
130         "Builder class for MIPS 64r2 [Big-endian N32]"
131         def __init__(self,myspec):
132                 generic_mips64.__init__(self,myspec)
133                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -mabi=n32 -pipe"
134
135 class arch_mips64r2_n64(generic_mips64):
136         "Builder class for MIPS 64r2 [Big-endian N64]"
137         def __init__(self,myspec):
138                 generic_mips64.__init__(self,myspec)
139                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -mabi=64 -pipe"
140
141 class arch_mips64r2_multilib(generic_mips64):
142         "Builder class for MIPS 64r2 [Big-endian multilib]"
143         def __init__(self,myspec):
144                 generic_mips64.__init__(self,myspec)
145                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -pipe"
146
147 class arch_mipsel1(generic_mipsel):
148         "Builder class for all MIPS I [Little-endian]"
149         def __init__(self,myspec):
150                 generic_mipsel.__init__(self,myspec)
151                 self.settings["CFLAGS"]="-O2 -mips1 -mabi=32 -pipe"
152
153 class arch_mips32el(generic_mipsel):
154         "Builder class for all MIPS 32 [Little-endian]"
155         def __init__(self,myspec):
156                 generic_mipsel.__init__(self,myspec)
157                 self.settings["CFLAGS"]="-O2 -march=mips32 -mabi=32 -pipe"
158
159 class arch_mips32r2el(generic_mipsel):
160         "Builder class for all MIPS 32r2 [Little-endian]"
161         def __init__(self,myspec):
162                 generic_mipsel.__init__(self,myspec)
163                 self.settings["CFLAGS"]="-O2 -march=mips32r2 -mabi=32 -pipe"
164
165 class arch_mipsel3(generic_mipsel):
166         "Builder class for all MIPS III [Little-endian]"
167         def __init__(self,myspec):
168                 generic_mipsel.__init__(self,myspec)
169                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=32 -Wa,-mfix-loongson2f-nop -pipe"
170
171 class arch_mipsel3_n32(generic_mips64el):
172         "Builder class for all MIPS III [Little-endian N32]"
173         def __init__(self,myspec):
174                 generic_mips64el.__init__(self,myspec)
175                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=n32 -Wa,-mfix-loongson2f-nop -pipe"
176
177 class arch_mipsel3_n64(generic_mips64el):
178         "Builder class for MIPS III [Little-endian N64]"
179         def __init__(self,myspec):
180                 generic_mips64el.__init__(self,myspec)
181                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=64 -Wa,-mfix-loongson2f-nop -pipe"
182
183 class arch_mipsel3_multilib(generic_mips64el):
184         "Builder class for MIPS III [Little-endian multilib]"
185         def __init__(self,myspec):
186                 generic_mips64el.__init__(self,myspec)
187                 self.settings["CFLAGS"]="-O2 -mips3 -Wa,-mfix-loongson2f-nop -pipe"
188
189 class arch_loongson2e(generic_mipsel):
190         "Builder class for all Loongson 2E [Little-endian]"
191         def __init__(self,myspec):
192                 generic_mipsel.__init__(self,myspec)
193                 self.settings["CFLAGS"]="-O2 -march=loongson2e -mabi=32 -pipe -mplt"
194
195 class arch_loongson2e_n32(generic_mips64el):
196         "Builder class for all Loongson 2E [Little-endian N32]"
197         def __init__(self,myspec):
198                 generic_mips64el.__init__(self,myspec)
199                 self.settings["CFLAGS"]="-O2 -march=loongson2e -mabi=n32 -pipe -mplt"
200
201 class arch_loongson2f(generic_mipsel):
202         "Builder class for all Loongson 2F [Little-endian]"
203         def __init__(self,myspec):
204                 generic_mipsel.__init__(self,myspec)
205                 self.settings["CFLAGS"]="-O3 -march=loongson2f -mabi=32 -pipe -mplt -Wa,-mfix-loongson2f-nop"
206
207 class arch_loongson2f_n32(generic_mips64el):
208         "Builder class for all Loongson 2F [Little-endian N32]"
209         def __init__(self,myspec):
210                 generic_mips64el.__init__(self,myspec)
211                 self.settings["CFLAGS"]="-O3 -march=loongson2f -mabi=n32 -pipe -mplt -Wa,-mfix-loongson2f-nop"
212
213 class arch_mipsel4(generic_mipsel):
214         "Builder class for all MIPS IV [Little-endian]"
215         def __init__(self,myspec):
216                 generic_mips64el.__init__(self,myspec)
217                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=32 -pipe"
218
219 class arch_mipsel4_n32(generic_mips64el):
220         "Builder class for all MIPS IV [Little-endian N32]"
221         def __init__(self,myspec):
222                 generic_mips64el.__init__(self,myspec)
223                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=n32 -pipe"
224
225 class arch_mipsel4_n64(generic_mips64el):
226         "Builder class for MIPS IV [Little-endian N64]"
227         def __init__(self,myspec):
228                 generic_mips64el.__init__(self,myspec)
229                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=64 -pipe"
230
231 class arch_mipsel4_multilib(generic_mips64el):
232         "Builder class for MIPS IV [Little-endian multilib]"
233         def __init__(self,myspec):
234                 generic_mips64el.__init__(self,myspec)
235                 self.settings["CFLAGS"]="-O2 -mips4 -pipe"
236
237 class arch_mips64el(generic_mipsel):
238         "Builder class for all MIPS 64 [Little-endian]"
239         def __init__(self,myspec):
240                 generic_mips64el.__init__(self,myspec)
241                 self.settings["CFLAGS"]="-O2 -march=mips64 -mabi=32 -pipe"
242
243 class arch_mips64el_n32(generic_mips64el):
244         "Builder class for all MIPS 64 [Little-endian N32]"
245         def __init__(self,myspec):
246                 generic_mips64el.__init__(self,myspec)
247                 self.settings["CFLAGS"]="-O2 -march=mips64 -mabi=n32 -pipe"
248
249 class arch_mips64el_n64(generic_mips64el):
250         "Builder class for MIPS 64 [Little-endian N64]"
251         def __init__(self,myspec):
252                 generic_mips64el.__init__(self,myspec)
253                 self.settings["CFLAGS"]="-O2 -march=mips64 -mabi=64 -pipe"
254
255 class arch_mips64el_multilib(generic_mips64el):
256         "Builder class for MIPS 64 [Little-endian multilib]"
257         def __init__(self,myspec):
258                 generic_mips64el.__init__(self,myspec)
259                 self.settings["CFLAGS"]="-O2 -march=mips64 -pipe"
260
261 class arch_mips64r2el(generic_mipsel):
262         "Builder class for all MIPS 64r2 [Little-endian]"
263         def __init__(self,myspec):
264                 generic_mipsel.__init__(self,myspec)
265                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -mabi=32 -pipe"
266
267 class arch_mips64r2el_n32(generic_mips64el):
268         "Builder class for all MIPS 64r2 [Little-endian N32]"
269         def __init__(self,myspec):
270                 generic_mips64el.__init__(self,myspec)
271                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -mabi=n32 -pipe"
272
273 class arch_mips64r2el_n64(generic_mips64el):
274         "Builder class for MIPS 64r2 [Little-endian N64]"
275         def __init__(self,myspec):
276                 generic_mips64el.__init__(self,myspec)
277                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -mabi=64 -pipe"
278
279 class arch_mips64r2el_multilib(generic_mips64el):
280         "Builder class for MIPS 64r2 [Little-endian multilib]"
281         def __init__(self,myspec):
282                 generic_mips64el.__init__(self,myspec)
283                 self.settings["CFLAGS"]="-O2 -march=mips64r2 -pipe"
284
285 class arch_cobalt(generic_mipsel):
286         "Builder class for all cobalt [Little-endian]"
287         def __init__(self,myspec):
288                 generic_mipsel.__init__(self,myspec)
289                 self.settings["CFLAGS"]="-O2 -march=r5000 -mabi=32 -pipe"
290                 self.settings["HOSTUSE"]=["cobalt"]
291
292 class arch_cobalt_n32(generic_mips64el):
293         "Builder class for all cobalt [Little-endian N32]"
294         def __init__(self,myspec):
295                 generic_mips64el.__init__(self,myspec)
296                 self.settings["CFLAGS"]="-O2 -march=r5000 -mabi=n32 -pipe"
297                 self.settings["HOSTUSE"]=["cobalt"]
298
299 def register():
300         "Inform main catalyst program of the contents of this plugin."
301         return ({ 
302                         "cobalt"                : arch_cobalt,
303                         "cobalt_n32"    : arch_cobalt_n32,
304                         "mips"                  : arch_mips1,
305                         "mips1"                 : arch_mips1,
306                         "mips32"                : arch_mips32,
307                         "mips32r2"              : arch_mips32r2,
308                         "mips3"                 : arch_mips3,
309                         "mips3_n32"             : arch_mips3_n32,
310                         "mips3_n64"             : arch_mips3_n64,
311                         "mips3_multilib": arch_mips3_multilib,
312                         "mips4"                 : arch_mips4,
313                         "mips4_n32"             : arch_mips4_n32,
314                         "mips4_n64"             : arch_mips4_n64,
315                         "mips4_multilib": arch_mips4_multilib,
316                         "mips64"                : arch_mips64,
317                         "mips64_n32"    : arch_mips64_n32,
318                         "mips64_n64"    : arch_mips64_n64,
319                         "mips64_multilib"       : arch_mips64_multilib,
320                         "mips64r2"              : arch_mips64r2,
321                         "mips64r2_n32"  : arch_mips64r2_n32,
322                         "mips64r2_n64"  : arch_mips64r2_n64,
323                         "mips64r2_multilib"     : arch_mips64r2_multilib,
324                         "mipsel"                : arch_mipsel1,
325                         "mipsel1"               : arch_mipsel1,
326                         "mips32el"              : arch_mips32el,
327                         "mips32r2el"    : arch_mips32r2el,
328                         "mipsel3"               : arch_mipsel3,
329                         "mipsel3_n32"   : arch_mipsel3_n32,
330                         "mipsel3_n64"   : arch_mipsel3_n64,
331                         "mipsel3_multilib"      : arch_mipsel3_multilib,
332                         "mipsel4"               : arch_mipsel4,
333                         "mipsel4_n32"   : arch_mipsel4_n32,
334                         "mipsel4_n64"   : arch_mipsel4_n64,
335                         "mipsel4_multilib"      : arch_mipsel4_multilib,
336                         "mips64el"              : arch_mips64el,
337                         "mips64el_n32"  : arch_mips64el_n32,
338                         "mips64el_n64"  : arch_mips64el_n64,
339                         "mips64el_multilib"     : arch_mips64el_multilib,
340                         "mips64r2el"    : arch_mips64r2el,
341                         "mips64r2el_n32"        : arch_mips64r2el_n32,
342                         "mips64r2el_n64"        : arch_mips64r2el_n64,
343                         "mips64r2el_multilib"   : arch_mips64r2el_multilib,
344                         "loongson2e"            : arch_loongson2e,
345                         "loongson2e_n32"        : arch_loongson2e_n32,
346                         "loongson2f"            : arch_loongson2f,
347                         "loongson2f_n32"        : arch_loongson2f_n32,
348         }, ("mips","mips64"))