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