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