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
#
159
#   The above data will be reorganised and placed into the following
160
#   hash. This simplifies the data definition and lookup
161
#
162
my %BuildAvailabilityData;
163
 
164
#-------------------------------------------------------------------------------
165
# Function        : InitData
166
#
167
# Description     : Init data structures
168
#                   Done once
169
#
170
#                   Convert an array into a hash to simplify lookup
171
#
172
# Inputs          : None
173
#
174
# Returns         : Nothing
175
#
176
sub InitData
177
{
178
    #
179
    #   Only do this work once
180
    #
181
    return if exists $BuildAvailabilityData{'GENERIC'};
182
 
183
    #
184
    #   Validate build machine
185
    #
186
    Error (__PACKAGE__ . " : Unknown build machine type: $::GBE_MACHTYPE")
187
        unless ( exists $BuildAvailability{$::GBE_MACHTYPE} );
188
 
189
    #
190
    #   Convert the array into a hash to spped up access later
191
    #
192
    $BuildAvailabilityData{'GENERIC'} = 1;
193
    foreach ( @{$BuildAvailability{$::GBE_MACHTYPE}}  )
194
    {
195
        $BuildAvailabilityData{$_} = 1;
196
    }
197
}
198
 
199
#-------------------------------------------------------------------------------
200
# Function        : checkBuildAvailability
201
#
202
# Description     : Check that a given target can be be built on the
203
#                   current machine type
204
#
205
# Inputs          : $target             - Name of target platform
206
#
207
#
208
# Returns         : True if Target can be built on current machine
209
#
210
sub checkBuildAvailability
211
{
212
    my ($target) = @_;
213
    InitData();
214
    return exists $BuildAvailabilityData{$target};
215
}
216
 
217
1;
218