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',
4324 dpurdie 41
        'ANDROID',
4109 dpurdie 42
        'ARM9TDMI',
337 dpurdie 43
        'COBRA',
4109 dpurdie 44
        'JAVA',
279 dpurdie 45
        'LINUX86',
46
        'LINUX_ARMV4',
47
        'LINUX_EMU',
48
        'LINUX_ETX',
49
        'LINUX_I386',
4109 dpurdie 50
        'PPC_603E',
51
        'SK20',
3967 dpurdie 52
        'UBUNTU12',
279 dpurdie 53
        ],
54
 
4162 dpurdie 55
    'linux_x64' => [
56
        'LINUX_I386',
57
        ],
58
 
279 dpurdie 59
    'solaris10_sparc32' => [
60
        'SOLARIS10_SPARC32',
61
        'SOLARIS10_SPARC64',
62
        'JAVA',
63
        ],
64
 
65
    'solaris10_x86' => [
66
        'SOLARIS10_X64',
67
        'SOLARIS10_X86',
68
        'JAVA',
69
        ],
70
 
71
    'sparc' => [
281 dpurdie 72
        'SOLARIS',
279 dpurdie 73
        'SOLARIS_I386',
74
        'SOLARIS_SPARC',
75
        'JAVA',
76
        ],
77
 
78
    'win32' => [
79
        'ACEX',
80
        'AMX',
363 dpurdie 81
        'ARM_I5100',
279 dpurdie 82
        'AVR_IAR',
83
        'BORLAND',
84
        'CMOS386',
85
        'CMOS68K',
86
        'CSHARP',
87
        'CSHARP2005',
291 dpurdie 88
        'CSHARP2008',
347 dpurdie 89
        'CSHARP2010',
4192 dpurdie 90
        'CSHARP2012',
279 dpurdie 91
        'DAFBR_MOS',
92
        'DAFBR_WIN',
289 dpurdie 93
        'DELPHI7',
279 dpurdie 94
        'DF4OBE',
95
        'DOS16',
96
        'DOS32',
97
        'EEPP386',
98
        'EETP386',
99
        'EOS',
100
        'EOSM68K',
101
        'EOSP386',
102
        'GMPCA',
103
        'GO32',
104
        'H8S',
283 dpurdie 105
        'H400',
279 dpurdie 106
        'HK386PC',
107
        'HKAVM',
108
        'HKAVM2',
109
        'HKBCP',
110
        'HKDDU',
111
        'HKGAK',
112
        'HKMPR',
113
        'HKPCA',
114
        'INGEN',
3832 dpurdie 115
        'INTELLECT',
279 dpurdie 116
        'JAVA',
117
        'MCR',
118
        'MERG',
119
        'MOS68K',
120
        'MOS68KRM',
121
        'MOSCF',
122
        'MPT',
3564 dpurdie 123
        'VSDEVRC',
279 dpurdie 124
        'NGBCP',
125
        'NGDDU',
126
        'PHARLAP',
345 dpurdie 127
        'PHP',
371 dpurdie 128
        'RIORDS',
279 dpurdie 129
        'THYRON',
315 dpurdie 130
        'VB6',
279 dpurdie 131
        'VERIX',
383 dpurdie 132
        'VIXITP',
279 dpurdie 133
        'VS2003',
134
        'VS2005',
291 dpurdie 135
        'VS2008',
347 dpurdie 136
        'VS2010',
4192 dpurdie 137
        'VS2012',
355 dpurdie 138
        'WCEIPA280',
279 dpurdie 139
        'WCEIT3000',
399 dpurdie 140
        'WCENAUTIZX5',
279 dpurdie 141
        'WCEPA961',
142
        'WCEPA962',
143
        'WCEPA962_500',
144
        'WCEPCM7220',
145
        'WCEPSION_420',
146
        'WCEPSION_500',
147
        'WCEPSION_500_emu',
303 dpurdie 148
        'WCEPSION_500_VS2005',
279 dpurdie 149
        'WCEPSPC_arm',
150
        'WCEPSPC_emu',
151
        'WCEX86A420',
152
        'WCEX86A500',
153
        'WCEX86A500_SOM4455',
154
        'WIN32',
155
        ],
156
);
157
 
158
#
4551 dpurdie 159
#   Convert Machine Type to Machine Class
160
#       These match the Release Manager and BuildTool definitions
161
#       Used for GENERIC Processing
162
#
163
my %MachineTypeToClass = (
164
      linux_i386        => 'LINUX',
165
      linux_x64         => 'LINUX',
166
      solaris10_sparc32 => 'SOLARIS',
167
      solaris10_x86     => 'SOLARIS',
168
      sparc             => 'SOLARIS',
169
      win32             => 'WIN32',
170
);
171
#
279 dpurdie 172
#   The above data will be reorganised and placed into the following
173
#   hash. This simplifies the data definition and lookup
174
#
175
my %BuildAvailabilityData;
176
 
4551 dpurdie 177
#   A hash of 'special' knon targets
178
#   Simply used to reduce JATS warnins about some psuedo targets
179
my %knownSpecial;
180
 
279 dpurdie 181
#-------------------------------------------------------------------------------
182
# Function        : InitData
183
#
184
# Description     : Init data structures
185
#                   Done once
186
#
4551 dpurdie 187
#                   Convert the $BuildAvailability entry array into a hash to 
188
#                   simplify lookup. Add in thr three types of GENERIC target:
189
#                       GENERIC         - can be built on ANY machine
190
#                       GENERIC_XXX     - can be built on machine of class XXX
191
#                       MACH_YYY        - can be built on MACHTYPE YYY
279 dpurdie 192
#
193
# Inputs          : None
194
#
195
# Returns         : Nothing
196
#
197
sub InitData
198
{
199
    #
200
    #   Only do this work once
201
    #
202
    return if exists $BuildAvailabilityData{'GENERIC'};
203
 
204
    #
205
    #   Validate build machine
206
    #
207
    Error (__PACKAGE__ . " : Unknown build machine type: $::GBE_MACHTYPE")
208
        unless ( exists $BuildAvailability{$::GBE_MACHTYPE} );
209
 
210
    #
4551 dpurdie 211
    #   Convert the array into a hash to speed up access later
279 dpurdie 212
    #
4551 dpurdie 213
    $BuildAvailabilityData{'GENERIC'} = 2;
279 dpurdie 214
    foreach ( @{$BuildAvailability{$::GBE_MACHTYPE}}  )
215
    {
216
        $BuildAvailabilityData{$_} = 1;
217
    }
4551 dpurdie 218
 
219
#   #
220
#   #   Insert GENERIC_<MachClass>
221
#   #
222
#   Error (__PACKAGE__ . " : Unknown build machine class: $::GBE_MACHTYPE")
223
#       unless ( exists $MachineTypeToClass{$::GBE_MACHTYPE} );
224
#   $BuildAvailabilityData{join('_','GENERIC', $MachineTypeToClass{$::GBE_MACHTYPE} )} = 2;
225
#
226
#   #
227
#   #   Insert MachType definition
228
#   #   These are of the form MACH_xxxx
229
#   #
230
#   $BuildAvailabilityData{join('_','MACH', uc($::GBE_MACHTYPE) )} = 2;
231
#
232
#   #
233
#   #   Create a hash of special 'known' targets
234
#   #
235
   $knownSpecial{'GENERIC'} = 2;
236
#   foreach my $machtype ( keys %MachineTypeToClass ) {
237
#       $knownSpecial{join('_','MACH', uc($machtype) )} = 2;
238
#       $knownSpecial{join('_','GENERIC', $MachineTypeToClass{$machtype} )} = 2;
239
#   }
279 dpurdie 240
}
241
 
242
#-------------------------------------------------------------------------------
243
# Function        : checkBuildAvailability
244
#
245
# Description     : Check that a given target can be be built on the
4551 dpurdie 246
#                   current machine type. Also indicate if it is a GENERIC
247
#                   target; one that can always be built.
279 dpurdie 248
#
249
# Inputs          : $target             - Name of target platform
250
#
251
#
4551 dpurdie 252
# Returns         : 0                   - target cannot be built
253
#                   1                   - target can be built, subject to build filter
254
#                   2                   - target can be built, is Generic           
279 dpurdie 255
#
256
sub checkBuildAvailability
257
{
258
    my ($target) = @_;
4551 dpurdie 259
    Error("Internal: checkBuildAvailability. No argument specified") unless $target;
260
 
279 dpurdie 261
    InitData();
4551 dpurdie 262
    if (exists $BuildAvailabilityData{$target})
263
    {
264
        return $BuildAvailabilityData{$target} ;
265
    }
266
    return 0;
279 dpurdie 267
}
268
 
4551 dpurdie 269
#-------------------------------------------------------------------------------
270
# Function        : checkKnownSpecial
271
#
272
# Description     : Check that a given (special) target is known to JATS
273
#                   Used to suppress warnings about GENERIC targets not known
274
#                   to the current machine type.
275
#
276
# Inputs          : $target             - Name of target platform
277
#
278
#
279
# Returns         : 0                   - target not known
280
#                   1                   - target is known to JATS
281
#
282
sub checkKnownSpecial
283
{
284
    my ($target) = @_;
285
    Error("Internal: checkKnown. No argument specified") unless $target;
286
 
287
    InitData();
288
    if (exists $knownSpecial{$target})
289
    {
290
        return $knownSpecial{$target} ;
291
    }
292
    return 0;
293
}
294
 
295
 
279 dpurdie 296
1;
297