Fix ARM hardfloat
[catalyst.git] / arch / arm.py
1
2 import builder,os
3 from catalyst_support import *
4
5 class generic_arm(builder.generic):
6         "Abstract base class for all arm (little endian) builders"
7         def __init__(self,myspec):
8                 builder.generic.__init__(self,myspec)
9                 self.settings["CHROOT"]="chroot"
10                 self.settings["CFLAGS"]="-O2 -pipe"
11    
12 class generic_armeb(builder.generic):
13         "Abstract base class for all arm (big endian) builders"
14         def __init__(self,myspec):
15                 builder.generic.__init__(self,myspec)
16                 self.settings["CHROOT"]="chroot"
17                 self.settings["CFLAGS"]="-O2 -pipe"
18
19 class arch_arm(generic_arm):
20         "Builder class for arm (little endian) target"
21         def __init__(self,myspec):
22                 generic_arm.__init__(self,myspec)
23                 self.settings["CHOST"]="arm-unknown-linux-gnu"
24
25 class arch_armeb(generic_armeb):
26         "Builder class for arm (big endian) target"
27         def __init__(self,myspec):
28                 generic_armeb.__init__(self,myspec)
29                 self.settings["CHOST"]="armeb-unknown-linux-gnu"
30
31 class arch_armv4l(generic_arm):
32         "Builder class for armv4l target"
33         def __init__(self,myspec):
34                 generic_arm.__init__(self,myspec)
35                 self.settings["CHOST"]="armv4l-unknown-linux-gnu"
36                 self.settings["CFLAGS"]+=" -march=armv4"
37
38 class arch_armv4tl(generic_arm):
39         "Builder class for armv4tl target"
40         def __init__(self,myspec):
41                 generic_arm.__init__(self,myspec)
42                 self.settings["CHOST"]="armv4tl-softfloat-linux-gnueabi"
43                 self.settings["CFLAGS"]+=" -march=armv4t"
44
45 class arch_armv5tl(generic_arm):
46         "Builder class for armv5tl target"
47         def __init__(self,myspec):
48                 generic_arm.__init__(self,myspec)
49                 self.settings["CHOST"]="armv5tl-softfloat-linux-gnueabi"
50                 self.settings["CFLAGS"]+=" -march=armv5t"
51
52 class arch_armv5tel(generic_arm):
53         "Builder class for armv5tel target"
54         def __init__(self,myspec):
55                 generic_arm.__init__(self,myspec)
56                 self.settings["CHOST"]="armv5tel-softfloat-linux-gnueabi"
57                 self.settings["CFLAGS"]+=" -march=armv5te"
58
59 class arch_armv5tejl(generic_arm):
60         "Builder class for armv5tejl target"
61         def __init__(self,myspec):
62                 generic_arm.__init__(self,myspec)
63                 self.settings["CHOST"]="armv5tejl-softfloat-linux-gnueabi"
64                 self.settings["CFLAGS"]+=" -march=armv5te"
65
66 class arch_armv6j(generic_arm):
67         "Builder class for armv6j target"
68         def __init__(self,myspec):
69                 generic_arm.__init__(self,myspec)
70                 self.settings["CHOST"]="armv6j-unknown-linux-gnueabi"
71                 self.settings["CFLAGS"]+=" -march=armv6j -mfpu=vfp -mfloat-abi=softfp"
72
73 class arch_armv6z(generic_arm):
74         "Builder class for armv6z target"
75         def __init__(self,myspec):
76                 generic_arm.__init__(self,myspec)
77                 self.settings["CHOST"]="armv6z-unknown-linux-gnueabi"
78                 self.settings["CFLAGS"]+=" -march=armv6z -mfpu=vfp -mfloat-abi=softfp"
79
80 class arch_armv6zk(generic_arm):
81         "Builder class for armv6zk target"
82         def __init__(self,myspec):
83                 generic_arm.__init__(self,myspec)
84                 self.settings["CHOST"]="armv6zk-unknown-linux-gnueabi"
85                 self.settings["CFLAGS"]+=" -march=armv6zk -mfpu=vfp -mfloat-abi=softfp"
86
87 class arch_armv7a(generic_arm):
88         "Builder class for armv7a target"
89         def __init__(self,myspec):
90                 generic_arm.__init__(self,myspec)
91                 self.settings["CHOST"]="armv7a-unknown-linux-gnueabi"
92                 self.settings["CFLAGS"]+=" -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp"
93
94 class arch_armv7a_hardfp(generic_arm):
95         "Builder class for armv7a hardfloat target, needs >=gcc-4.5"
96         def __init__(self,myspec):
97                 generic_arm.__init__(self,myspec)
98                 self.settings["CHOST"]="armv7a-hardfloat-linux-gnueabi"
99                 self.settings["CFLAGS"]+=" -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
100
101 class arch_armv5teb(generic_armeb):
102         "Builder class for armv5teb (XScale) target"
103         def __init__(self,myspec):
104                 generic_armeb.__init__(self,myspec)
105                 self.settings["CFLAGS"]+=" -mcpu=xscale"
106                 self.settings["CHOST"]="armv5teb-softfloat-linux-gnueabi"
107
108 def register():
109         "Inform main catalyst program of the contents of this plugin."
110         return ({
111                 "arm"    : arch_arm,
112                 "armv4l" : arch_armv4l,
113                 "armv4tl": arch_armv4tl,
114                 "armv5tl": arch_armv5tl,
115                 "armv5tel": arch_armv5tel,
116                 "armv5tejl": arch_armv5tejl,
117                 "armv6j" : arch_armv6j,
118                 "armv6z" : arch_armv6z,
119                 "armv6zk" : arch_armv6zk,
120                 "armv7a" : arch_armv7a,
121                 "armv7a_hardfp" : arch_armv7a_hardfp,
122                 "armeb"  : arch_armeb,
123                 "armv5teb" : arch_armv5teb
124         }, ("arm", "armv4l", "armv4tl", "armv5tl", "armv5tel", "armv5tejl", "armv6l", 
125 "armv7l", "armeb", "armv5teb") )
126