e9f611bf708e2d11a7263d03b89dd4a94d87aa30
[catalyst.git] / arch / powerpc.py
1
2 import os,builder
3 from catalyst_support import *
4
5 class generic_ppc(builder.generic):
6         "abstract base class for all 32-bit powerpc builders"
7         def __init__(self,myspec):
8                 builder.generic.__init__(self,myspec)
9                 self.settings["CHOST"]="powerpc-unknown-linux-gnu"
10                 if self.settings["buildarch"]=="ppc64":
11                         if not os.path.exists("/bin/linux32") and not os.path.exists("/usr/bin/linux32"):
12                                 raise CatalystError,"required executable linux32 not found (\"emerge setarch\" to fix.)"
13                         self.settings["CHROOT"]="linux32 chroot"
14                         self.settings["crosscompile"] = False;
15                 else:
16                         self.settings["CHROOT"]="chroot"
17
18 class generic_ppc64(builder.generic):
19         "abstract base class for all 64-bit powerpc builders"
20         def __init__(self,myspec):
21                 builder.generic.__init__(self,myspec)
22                 self.settings["CHROOT"]="chroot"
23
24 class arch_ppc(generic_ppc):
25         "builder class for generic powerpc"
26         def __init__(self,myspec):
27                 generic_ppc.__init__(self,myspec)
28                 self.settings["CFLAGS"]="-O2 -mcpu=powerpc -mtune=powerpc -pipe"
29
30 class arch_ppc64(generic_ppc64):
31         "builder class for generic ppc64"
32         def __init__(self,myspec):
33                 generic_ppc64.__init__(self,myspec)
34                 self.settings["CFLAGS"]="-O2 -pipe"
35                 self.settings["CHOST"]="powerpc64-unknown-linux-gnu"
36
37 class arch_970(arch_ppc64):
38         "builder class for 970 aka G5 under ppc64"
39         def __init__(self,myspec):
40                 arch_ppc64.__init__(self,myspec)
41                 self.settings["CFLAGS"]="-O2 -pipe -mcpu=970 -mtune=970"
42                 self.settings["HOSTUSE"]=["altivec"]
43
44 class arch_cell(arch_ppc64):
45         "builder class for cell under ppc64"
46         def __init__(self,myspec):
47                 arch_ppc64.__init__(self,myspec)
48                 self.settings["CFLAGS"]="-O2 -pipe -mcpu=cell -mtune=cell"
49                 self.settings["HOSTUSE"]=["altivec","ibm"]
50
51 class arch_g3(generic_ppc):
52         def __init__(self,myspec):
53                 generic_ppc.__init__(self,myspec)
54                 self.settings["CFLAGS"]="-O2 -mcpu=G3 -mtune=G3 -pipe"
55
56 class arch_g4(generic_ppc):
57         def __init__(self,myspec):
58                 generic_ppc.__init__(self,myspec)
59                 self.settings["CFLAGS"]="-O2 -mcpu=G4 -mtune=G4 -maltivec -mabi=altivec -pipe"
60                 self.settings["HOSTUSE"]=["altivec"]
61
62 class arch_g5(generic_ppc):
63         def __init__(self,myspec):
64                 generic_ppc.__init__(self,myspec)
65                 self.settings["CFLAGS"]="-O2 -mcpu=G5 -mtune=G5 -maltivec -mabi=altivec -pipe"
66                 self.settings["HOSTUSE"]=["altivec"]
67
68 class arch_power(generic_ppc):
69         "builder class for generic power"
70         def __init__(self,myspec):
71                 generic_ppc.__init__(self,myspec)
72                 self.settings["CFLAGS"]="-O2 -mcpu=power -mtune=power -pipe"
73
74 class arch_power_ppc(generic_ppc):
75         "builder class for generic powerpc/power"
76         def __init__(self,myspec):
77                 generic_ppc.__init__(self,myspec)
78                 self.settings["CFLAGS"]="-O2 -mcpu=common -mtune=common -pipe"
79
80 class arch_power3(arch_ppc64):
81         "builder class for power3 under ppc64"
82         def __init__(self,myspec):
83                 arch_ppc64.__init__(self,myspec)
84                 self.settings["CFLAGS"]="-O2 -pipe -mcpu=power3 -mtune=power3"
85                 self.settings["HOSTUSE"]=["ibm"]
86
87 class arch_power4(arch_ppc64):
88         "builder class for power4 under ppc64"
89         def __init__(self,myspec):
90                 arch_ppc64.__init__(self,myspec)
91                 self.settings["CFLAGS"]="-O2 -pipe -mcpu=power4 -mtune=power4"
92                 self.settings["HOSTUSE"]=["ibm"]
93
94 class arch_power5(arch_ppc64):
95         "builder class for power5 under ppc64"
96         def __init__(self,myspec):
97                 arch_ppc64.__init__(self,myspec)
98                 self.settings["CFLAGS"]="-O2 -pipe -mcpu=power5 -mtune=power5"
99                 self.settings["HOSTUSE"]=["ibm"]
100
101 class arch_power6(arch_ppc64):
102         "builder class for power6 under ppc64"
103         def __init__(self,myspec):
104                 arch_ppc64.__init__(self,myspec)
105                 self.settings["CFLAGS"]="-O2 -pipe -mcpu=power6 -mtune=power6"
106                 self.settings["HOSTUSE"]=["altivec","ibm"]
107
108 def register():
109         "Inform main catalyst program of the contents of this plugin."
110         return ({
111                 "970"           : arch_970,
112                 "cell"          : arch_cell,
113                 "g3"            : arch_g3,
114                 "g4"            : arch_g4,
115                 "g5"            : arch_g5,
116                 "power"         : arch_power,
117                 "power-ppc"     : arch_power_ppc,
118                 "power3"        : arch_power3,
119                 "power4"        : arch_power4,
120                 "power5"        : arch_power5,
121                 "power6"        : arch_power6,
122                 "ppc"           : arch_ppc,
123                 "ppc64"         : arch_ppc64
124         }, ("ppc","ppc64","powerpc","powerpc64"))