Subversion Repositories DevTools

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
279 dpurdie 1
########################################################################
2
# Copyright (C) 2008 ERG Limited, All rights reserved
3
#
4
# Module name   : PLATFORM_CFG.PM
5
# Module type   : Makefile system
6
# Compiler(s)   : Perl
7
# Environment(s): jats
8
#
9
# Description   : Provides platform configuration information
10
#
11
#                 The main pupose of this configuration information is to
12
#                 prevent JATS from attempting to build software on
13
#                 a platform that does not support the required compilers
14
#
15
#                 ie: Its not possible to build PPC_302E on a windows
16
#                     Nor is it possbile to build WIN32 on a Sun Sparc
17
#
18
#                 This can be done via GBE_BUILDFILTER, but results in
19
#                 an unwieldy GBE_BUILDFILTER. Better to prune the
20
#                 targets at the start
21
#
22
#......................................................................#
23
 
24
require 5.008_002;
25
use strict;
26
use warnings;
27
 
28
package PlatformConfig;
29
use JatsError;
30
 
31
#
32
#   The following structure is a hash of arrays
33
#   The hash key is a supported machine type - one per machine
34
#   The data is an array of supported PLATFORMS
35
#
36
my %BuildAvailability = (
37
    'linux_i386' => [
4109 dpurdie 38
        'ANDROIDARM',
39
        'ANDROIDMIPS',
40
        'ANDROIDX86',
41
        'ARM9TDMI',
337 dpurdie 42
        'COBRA',
4109 dpurdie 43
        'JAVA',
279 dpurdie 44
        'LINUX86',
45
        'LINUX_ARMV4',
46
        'LINUX_EMU',
47
        'LINUX_ETX',
48
        'LINUX_I386',
4109 dpurdie 49
        'PPC_603E',
50
        'SK20',
3967 dpurdie 51
        'UBUNTU12',
279 dpurdie 52
        ],
53
 
4162 dpurdie 54
    'linux_x64' => [
55
        'LINUX_I386',
56
        ],
57
 
279 dpurdie 58
    'solaris10_sparc32' => [
59
        'SOLARIS10_SPARC32',
60
        'SOLARIS10_SPARC64',
61
        'JAVA',
62
        ],
63
 
64
    'solaris10_x86' => [
65
        'SOLARIS10_X64',
66
        'SOLARIS10_X86',
67
        'JAVA',
68
        ],
69
 
70
    'sparc' => [
281 dpurdie 71
        'SOLARIS',
279 dpurdie 72
        'SOLARIS_I386',
73
        'SOLARIS_SPARC',
74
        'JAVA',
75
        ],
76
 
77
    'win32' => [
78
        'ACEX',
79
        'AMX',
363 dpurdie 80
        'ARM_I5100',
279 dpurdie 81
        'AVR_IAR',
82
        'BORLAND',
83
        'CMOS386',
84
        'CMOS68K',
85
        'CSHARP',
86
        'CSHARP2005',
291 dpurdie 87
        'CSHARP2008',
347 dpurdie 88
        'CSHARP2010',
279 dpurdie 89
        'DAFBR_MOS',
90
        'DAFBR_WIN',
289 dpurdie 91
        'DELPHI7',
279 dpurdie 92
        'DF4OBE',
93
        'DOS16',
94
        'DOS32',
95
        'EEPP386',
96
        'EETP386',
97
        'EOS',
98
        'EOSM68K',
99
        'EOSP386',
100
        'GMPCA',
101
        'GO32',
102
        'H8S',
283 dpurdie 103
        'H400',
279 dpurdie 104
        'HK386PC',
105
        'HKAVM',
106
        'HKAVM2',
107
        'HKBCP',
108
        'HKDDU',
109
        'HKGAK',
110
        'HKMPR',
111
        'HKPCA',
112
        'INGEN',
3832 dpurdie 113
        'INTELLECT',
279 dpurdie 114
        'JAVA',
115
        'MCR',
116
        'MERG',
117
        'MOS68K',
118
        'MOS68KRM',
119
        'MOSCF',
120
        'MPT',
3564 dpurdie 121
        'VSDEVRC',
279 dpurdie 122
        'NGBCP',
123
        'NGDDU',
124
        'PHARLAP',
345 dpurdie 125
        'PHP',
371 dpurdie 126
        'RIORDS',
279 dpurdie 127
        'THYRON',
315 dpurdie 128
        'VB6',
279 dpurdie 129
        'VERIX',
383 dpurdie 130
        'VIXITP',
279 dpurdie 131
        'VS2003',
132
        'VS2005',
291 dpurdie 133
        'VS2008',
347 dpurdie 134
        'VS2010',
355 dpurdie 135
        'WCEIPA280',
279 dpurdie 136
        'WCEIT3000',
399 dpurdie 137
        'WCENAUTIZX5',
279 dpurdie 138
        'WCEPA961',
139
        'WCEPA962',
140
        'WCEPA962_500',
141
        'WCEPCM7220',
142
        'WCEPSION_420',
143
        'WCEPSION_500',
144
        'WCEPSION_500_emu',
303 dpurdie 145
        'WCEPSION_500_VS2005',
279 dpurdie 146
        'WCEPSPC_arm',
147
        'WCEPSPC_emu',
148
        'WCEX86A420',
149
        'WCEX86A500',
150
        'WCEX86A500_SOM4455',
151
        'WIN32',
152
        ],
153
);
154
 
155
#
156
#   The above data will be reorganised and placed into the following
157
#   hash. This simplifies the data definition and lookup
158
#
159
my %BuildAvailabilityData;
160
 
161
#-------------------------------------------------------------------------------
162
# Function        : InitData
163
#
164
# Description     : Init data structures
165
#                   Done once
166
#
167
#                   Convert an array into a hash to simplify lookup
168
#
169
# Inputs          : None
170
#
171
# Returns         : Nothing
172
#
173
sub InitData
174
{
175
    #
176
    #   Only do this work once
177
    #
178
    return if exists $BuildAvailabilityData{'GENERIC'};
179
 
180
    #
181
    #   Validate build machine
182
    #
183
    Error (__PACKAGE__ . " : Unknown build machine type: $::GBE_MACHTYPE")
184
        unless ( exists $BuildAvailability{$::GBE_MACHTYPE} );
185
 
186
    #
187
    #   Convert the array into a hash to spped up access later
188
    #
189
    $BuildAvailabilityData{'GENERIC'} = 1;
190
    foreach ( @{$BuildAvailability{$::GBE_MACHTYPE}}  )
191
    {
192
        $BuildAvailabilityData{$_} = 1;
193
    }
194
}
195
 
196
#-------------------------------------------------------------------------------
197
# Function        : checkBuildAvailability
198
#
199
# Description     : Check that a given target can be be built on the
200
#                   current machine type
201
#
202
# Inputs          : $target             - Name of target platform
203
#
204
#
205
# Returns         : True if Target can be built on current machine
206
#
207
sub checkBuildAvailability
208
{
209
    my ($target) = @_;
210
    InitData();
211
    return exists $BuildAvailabilityData{$target};
212
}
213
 
214
1;
215