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