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',
4192 dpurdie 89
        'CSHARP2012',
279 dpurdie 90
        'DAFBR_MOS',
91
        'DAFBR_WIN',
289 dpurdie 92
        'DELPHI7',
279 dpurdie 93
        'DF4OBE',
94
        'DOS16',
95
        'DOS32',
96
        'EEPP386',
97
        'EETP386',
98
        'EOS',
99
        'EOSM68K',
100
        'EOSP386',
101
        'GMPCA',
102
        'GO32',
103
        'H8S',
283 dpurdie 104
        'H400',
279 dpurdie 105
        'HK386PC',
106
        'HKAVM',
107
        'HKAVM2',
108
        'HKBCP',
109
        'HKDDU',
110
        'HKGAK',
111
        'HKMPR',
112
        'HKPCA',
113
        'INGEN',
3832 dpurdie 114
        'INTELLECT',
279 dpurdie 115
        'JAVA',
116
        'MCR',
117
        'MERG',
118
        'MOS68K',
119
        'MOS68KRM',
120
        'MOSCF',
121
        'MPT',
3564 dpurdie 122
        'VSDEVRC',
279 dpurdie 123
        'NGBCP',
124
        'NGDDU',
125
        'PHARLAP',
345 dpurdie 126
        'PHP',
371 dpurdie 127
        'RIORDS',
279 dpurdie 128
        'THYRON',
315 dpurdie 129
        'VB6',
279 dpurdie 130
        'VERIX',
383 dpurdie 131
        'VIXITP',
279 dpurdie 132
        'VS2003',
133
        'VS2005',
291 dpurdie 134
        'VS2008',
347 dpurdie 135
        'VS2010',
4192 dpurdie 136
        'VS2012',
355 dpurdie 137
        'WCEIPA280',
279 dpurdie 138
        'WCEIT3000',
399 dpurdie 139
        'WCENAUTIZX5',
279 dpurdie 140
        'WCEPA961',
141
        'WCEPA962',
142
        'WCEPA962_500',
143
        'WCEPCM7220',
144
        'WCEPSION_420',
145
        'WCEPSION_500',
146
        'WCEPSION_500_emu',
303 dpurdie 147
        'WCEPSION_500_VS2005',
279 dpurdie 148
        'WCEPSPC_arm',
149
        'WCEPSPC_emu',
150
        'WCEX86A420',
151
        'WCEX86A500',
152
        'WCEX86A500_SOM4455',
153
        'WIN32',
154
        ],
155
);
156
 
157
#
158
#   The above data will be reorganised and placed into the following
159
#   hash. This simplifies the data definition and lookup
160
#
161
my %BuildAvailabilityData;
162
 
163
#-------------------------------------------------------------------------------
164
# Function        : InitData
165
#
166
# Description     : Init data structures
167
#                   Done once
168
#
169
#                   Convert an array into a hash to simplify lookup
170
#
171
# Inputs          : None
172
#
173
# Returns         : Nothing
174
#
175
sub InitData
176
{
177
    #
178
    #   Only do this work once
179
    #
180
    return if exists $BuildAvailabilityData{'GENERIC'};
181
 
182
    #
183
    #   Validate build machine
184
    #
185
    Error (__PACKAGE__ . " : Unknown build machine type: $::GBE_MACHTYPE")
186
        unless ( exists $BuildAvailability{$::GBE_MACHTYPE} );
187
 
188
    #
189
    #   Convert the array into a hash to spped up access later
190
    #
191
    $BuildAvailabilityData{'GENERIC'} = 1;
192
    foreach ( @{$BuildAvailability{$::GBE_MACHTYPE}}  )
193
    {
194
        $BuildAvailabilityData{$_} = 1;
195
    }
196
}
197
 
198
#-------------------------------------------------------------------------------
199
# Function        : checkBuildAvailability
200
#
201
# Description     : Check that a given target can be be built on the
202
#                   current machine type
203
#
204
# Inputs          : $target             - Name of target platform
205
#
206
#
207
# Returns         : True if Target can be built on current machine
208
#
209
sub checkBuildAvailability
210
{
211
    my ($target) = @_;
212
    InitData();
213
    return exists $BuildAvailabilityData{$target};
214
}
215
 
216
1;
217