Add patch for Loongson support, patch by Zhang Le <r0bertz at gentoo dot org>, bug...
[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 arch_mips1(generic_mips):
20         "Builder class for MIPS I [Big-endian]"
21         def __init__(self,myspec):
22                 generic_mips.__init__(self,myspec)
23                 self.settings["CFLAGS"]="-O2 -mips1 -mabi=32 -pipe"
24
25 class arch_mips2(generic_mips):
26         "Builder class for MIPS II [Big-endian]"
27         def __init__(self,myspec):
28                 generic_mips.__init__(self,myspec)
29                 self.settings["CFLAGS"]="-O2 -mips2 -mabi=32 -pipe"
30
31 class arch_mips3(generic_mips):
32         "Builder class for MIPS III [Big-endian]"
33         def __init__(self,myspec):
34                 generic_mips.__init__(self,myspec)
35                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=32 -pipe"
36
37 class arch_mips3_n32(generic_mips):
38         "Builder class for MIPS III [Big-endian N32]"
39         def __init__(self,myspec):
40                 generic_mips.__init__(self,myspec)
41                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=n32 -pipe"
42                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
43                 self.settings["HOSTUSE"]=["n32"]
44
45 class arch_mips3_n64(generic_mips):
46         "Builder class for MIPS III [Big-endian N64]"
47         def __init__(self,myspec):
48                 generic_mips.__init__(self,myspec)
49                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=64 -pipe"
50                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
51                 self.settings["HOSTUSE"]=["n64"]
52
53 class arch_mips4(generic_mips):
54         "Builder class for MIPS IV [Big-endian]"
55         def __init__(self,myspec):
56                 generic_mips.__init__(self,myspec)
57                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=32 -pipe"
58
59 class arch_mips4_n32(generic_mips):
60         "Builder class for MIPS IV [Big-endian N32]"
61         def __init__(self,myspec):
62                 generic_mips.__init__(self,myspec)
63                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=n32 -pipe"
64                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
65                 self.settings["HOSTUSE"]=["n32"]
66
67 class arch_mips4_n64(generic_mips):
68         "Builder class for MIPS IV [Big-endian N64]"
69         def __init__(self,myspec):
70                 generic_mips.__init__(self,myspec)
71                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=64 -pipe"
72                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
73                 self.settings["HOSTUSE"]=["n64"]
74
75 class arch_mipsel1(generic_mipsel):
76         "Builder class for all MIPS I [Little-endian]"
77         def __init__(self,myspec):
78                 generic_mipsel.__init__(self,myspec)
79                 self.settings["CFLAGS"]="-O2 -mips1 -mabi=32 -pipe"
80
81 class arch_mipsel2(generic_mipsel):
82         "Builder class for all MIPS II [Little-endian]"
83         def __init__(self,myspec):
84                 generic_mipsel.__init__(self,myspec)
85                 self.settings["CFLAGS"]="-O2 -mips2 -mabi=32 -pipe"
86
87 class arch_mipsel3(generic_mipsel):
88         "Builder class for all MIPS III [Little-endian]"
89         def __init__(self,myspec):
90                 generic_mipsel.__init__(self,myspec)
91                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=32 -pipe"
92
93 class arch_mipsel3_n32(generic_mipsel):
94         "Builder class for all MIPS III [Little-endian N32]"
95         def __init__(self,myspec):
96                 generic_mipsel.__init__(self,myspec)
97                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=n32 -pipe"
98                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
99                 self.settings["HOSTUSE"]=["n32"]
100
101 class arch_loongson2e(generic_mipsel):
102         "Builder class for all Loongson 2E [Little-endian]"
103         def __init__(self,myspec):
104                 generic_mipsel.__init__(self,myspec)
105                 self.settings["CFLAGS"]="-O2 -march=loongson2e -mabi=32 -pipe -mplt"
106
107 class arch_loongson2e_n32(generic_mipsel):
108         "Builder class for all Loongson 2E [Little-endian N32]"
109         def __init__(self,myspec):
110                 generic_mipsel.__init__(self,myspec)
111                 self.settings["CFLAGS"]="-O2 -march=loongson2e -mabi=n32 -pipe -mplt"
112                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
113                 self.settings["HOSTUSE"]=["n32"]
114
115 class arch_loongson2f(generic_mipsel):
116         "Builder class for all Loongson 2F [Little-endian]"
117         def __init__(self,myspec):
118                 generic_mipsel.__init__(self,myspec)
119                 self.settings["CFLAGS"]="-O3 -march=loongson2f -mabi=32 -pipe -mplt --Wa,-mfix-loongson2f-nop"
120
121 class arch_loongson2f_n32(generic_mipsel):
122         "Builder class for all Loongson 2F [Little-endian N32]"
123         def __init__(self,myspec):
124                 generic_mipsel.__init__(self,myspec)
125                 self.settings["CFLAGS"]="-O3 -march=loongson2f -mabi=n32 -pipe -mplt -Wa,-mfix-loongson2f-nop"
126                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
127                 self.settings["HOSTUSE"]=["n32"]
128
129 class arch_mipsel4(generic_mipsel):
130         "Builder class for all MIPS IV [Little-endian]"
131         def __init__(self,myspec):
132                 generic_mipsel.__init__(self,myspec)
133                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=32 -pipe"
134
135 class arch_mipsel4_n32(generic_mipsel):
136         "Builder class for all MIPS IV [Little-endian N32]"
137         def __init__(self,myspec):
138                 generic_mipsel.__init__(self,myspec)
139                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=n32 -pipe"
140                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
141                 self.settings["HOSTUSE"]=["n32"]
142
143 class arch_cobalt(generic_mipsel):
144         "Builder class for all cobalt [Little-endian]"
145         def __init__(self,myspec):
146                 generic_mipsel.__init__(self,myspec)
147                 self.settings["CFLAGS"]="-O2 -march=r5000 -mabi=32 -pipe"
148                 self.settings["CHOST"]="mipsel-unknown-linux-gnu"
149                 self.settings["HOSTUSE"]=["cobalt"]
150
151 class arch_cobalt_n32(generic_mipsel):
152         "Builder class for all cobalt [Little-endian N32]"
153         def __init__(self,myspec):
154                 arch_mipsel4_n32.__init__(self,myspec)
155                 self.settings["CFLAGS"]="-O2 -march=r5000 -mabi=n32 -pipe"
156                 self.settings["HOSTUSE"]=["cobalt","n32"]
157
158 class arch_ip27(generic_mipsel):
159         "Builder class for all IP27 [Big-endian]"
160         def __init__(self,myspec):
161                 arch_mips4.__init__(self,myspec)
162                 self.settings["HOSTUSE"]=["ip27"]
163
164 class arch_ip27_n32(generic_mipsel):
165         "Builder class for all IP27 [Big-endian N32]"
166         def __init__(self,myspec):
167                 arch_mips4_n32.__init__(self,myspec)
168                 self.settings["HOSTUSE"]=["ip27","n32"]
169
170 class arch_ip28(generic_mipsel):
171         "Builder class for all IP28 [Big-endian]"
172         def __init__(self,myspec):
173                 arch_mips4.__init__(self,myspec)
174                 self.settings["HOSTUSE"]=["ip28"]
175
176 class arch_ip28_n32(generic_mipsel):
177         "Builder class for all IP28 [Big-endian N32]"
178         def __init__(self,myspec):
179                 arch_mips4_n32.__init__(self,myspec)
180                 self.settings["HOSTUSE"]=["ip28","n32"]
181
182 class arch_ip30(generic_mipsel):
183         "Builder class for all IP30 [Big-endian]"
184         def __init__(self,myspec):
185                 arch_mips4.__init__(self,myspec)
186                 self.settings["HOSTUSE"]=["ip30"]
187
188 class arch_ip30_n32(generic_mipsel):
189         "Builder class for all IP30 [Big-endian N32]"
190         def __init__(self,myspec):
191                 arch_mips4_n32.__init__(self,myspec)
192                 self.settings["HOSTUSE"]=["ip30","n32"]
193
194 def register():
195         "Inform main catalyst program of the contents of this plugin."
196         return ({ 
197                         "cobalt"                : arch_cobalt,
198                         "cobalt_n32"    : arch_cobalt_n32,
199                         "ip27"                  : arch_ip27,
200                         "ip27_n32"              : arch_ip27_n32,
201                         "ip28"                  : arch_ip28,
202                         "ip28_n32"              : arch_ip28_n32,
203                         "ip30"                  : arch_ip30,
204                         "ip30_n32"              : arch_ip30_n32,
205                         "mips"                  : arch_mips1,
206                         "mips1"                 : arch_mips1,
207                         "mips2"                 : arch_mips2,
208                         "mips3"                 : arch_mips3,
209                         "mips3_n32"             : arch_mips3_n32,
210                         "mips3_n64"             : arch_mips3_n64,
211                         "mips4"                 : arch_mips4,
212                         "mips4_n32"             : arch_mips4_n32,
213                         "mipsel"                : arch_mipsel1,
214                         "mipsel1"               : arch_mipsel1,
215                         "mipsel2"               : arch_mipsel2,
216                         "mipsel3"               : arch_mipsel3,
217                         "mipsel3_n32"   : arch_mipsel3_n32,
218                         "mipsel4"               : arch_mipsel4,
219                         "mipsel4_n32"   : arch_mipsel4_n32,
220                         "loongson2e"            : arch_loongson2e,
221                         "loongson2e_n32"        : arch_loongson2e_n32,
222                         "loongson2f"            : arch_loongson2f,
223                         "loongson2f_n32"        : arch_loongson2f_n32,
224         }, ("mips","mips64"))