1#### Nonstop configurations
2    # Common for all
3    'nonstop-common' => {
4        inherit_from     => [ 'BASE_unix' ],
5        template         => 1,
6        cc               => 'c99',
7        cflags           => add_before(picker(debug   => '-g -O0',
8                                              release => '-g -O2'),
9                                       '-Wextensions',
10                                       '-Wnowarn=203,220,272,734,770,1506',
11                                       '-Wbuild_neutral_library',
12                                       '-Wverbose'),
13        defines          => add('OPENSSL_VPROC=$(OPENSSL_VPROC)',
14                                '_XOPEN_SOURCE',
15                                '_XOPEN_SOURCE_EXTENDED=1',
16                                '_TANDEM_SOURCE',
17                                'B_ENDIAN'),
18        perl             => '/usr/bin/perl',
19        shared_target    => 'nonstop-shared',
20        shared_extension => ".so",
21        ex_libs          => add('-lrld'),
22        enable           => ['egd'],
23        dso_scheme       => 'DLFCN',
24        sys_id           => 'TANDEM',
25    },
26
27    ######################################################################
28    # Additional variant settings, to be combined with nonstop-common
29    # Note that these do not inherit anything.  However, the diverse values
30    # are merged with other entries in an 'inherit_from'.
31    #
32    # These combine:
33    # - System architecture (MIPS, Itanium, or x86)
34    # - Execution environment (oss [default] or guardian)
35    #
36    # Unfortunately, they can't be separated into independent templates, because
37    # a number of the above are encoded as different linkers, and by consequence,
38    # different c99 linker flags (-Wld, -Weld, and -Wxld)
39    #
40    # In addition, the are modifiers for:
41    # - Size of long + pointer (ilp32 [default] and lp64)
42    # - Float type (neutral and tandem)
43    #
44    # Unfortunately, because the float types affect the linker settings, those
45    # are divided per system architecture
46    #
47    # MIPS + guardian (unused but present for convenience):
48    'nonstop-archenv-mips-guardian' => {
49        template         => 1,
50        defines          => ['NO_GETPID'],
51        cflags           => '-Wtarget=tns/r -Wsystype=guardian',
52        lflags           => '-Wld="-set systype guardian"',
53        shared_ldflag    => '-Wshared -Wld="-soname $(@:lib%.so=%)"',
54        shared_defflag   => '-Wld_obey=',
55        shared_argfileflag => '-Wld_obey=',
56    },
57
58    # Itanium + guardian:
59    'nonstop-archenv-itanium-guardian' => {
60        template         => 1,
61        defines          => ['NO_GETPID', '_TANDEM_ARCH=2'],
62        cflags           => '-Wtarget=tns/e -Wsystype=guardian',
63        lflags           => '-Weld="-set systype guardian"',
64        shared_ldflag    => '-Wshared -Weld="-soname $(@:lib%.so=%)"',
65        shared_defflag   => '-Weld_obey=',
66        shared_argfileflag => '-Weld_obey=',
67    },
68
69    # x86 + guardian:
70    'nonstop-archenv-x86_64-guardian' => {
71        template         => 1,
72        defines          => ['NO_GETPID', '_TANDEM_ARCH=3'],
73        cflags           => '-Wtarget=tns/x -Wsystype=guardian',
74        lflags           => '-Wxld="-set systype guardian"',
75        shared_ldflag    => '-Wshared -Wxld="-soname $(@:lib%.so=%)"',
76        shared_defflag   => '-Wxld_obey=',
77        shared_argfileflag => '-Wxld_obey=',
78    },
79
80    # MIPS + oss (unused but present for convenience):
81    'nonstop-archenv-mips-oss' => {
82        template         => 1,
83        cflags           => '-Wtarget=tns/r -Wsystype=oss',
84        lflags           => '-Wld="-set systype oss"',
85        shared_ldflag    => '-Wshared',
86        shared_defflag   => '-Wld_obey=',
87        shared_argfileflag => '-Wld_obey=',
88    },
89    # Itanium + oss:
90    'nonstop-archenv-itanium-oss' => {
91        template         => 1,
92        defines          => ['_TANDEM_ARCH=2'],
93        cflags           => '-Wtarget=tns/e -Wsystype=oss',
94        lflags           => '-Weld="-set systype oss"',
95        shared_ldflag    => '-Wshared',
96        shared_defflag   => '-Weld_obey=',
97        shared_argfileflag => '-Weld_obey=',
98    },
99    # x86_64 + oss:
100    'nonstop-archenv-x86_64-oss' => {
101        template         => 1,
102        defines          => ['_TANDEM_ARCH=3'],
103        cflags           => '-Wtarget=tns/x -Wsystype=oss',
104        lflags           => '-Wxld="-set systype oss"',
105        shared_ldflag    => '-Wshared',
106        shared_defflag   => '-Wxld_obey=',
107        shared_argfileflag => '-Wxld_obey=',
108    },
109
110    # Size variants
111    'nonstop-ilp32' => {
112        template         => 1,
113        cflags           => '-Wilp32',
114        bn_ops           => 'THIRTY_TWO_BIT',
115    },
116    'nonstop-lp64-itanium' => {
117        template         => 1,
118        cflags           => '-Wlp64',
119        bn_ops           => 'SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR',
120    },
121    'nonstop-lp64-x86_64' => {
122        template         => 1,
123        cflags           => '-Wlp64',
124        lflags           => '-Wxld="-set data_model lp64"',
125        bn_ops           => 'SIXTY_FOUR_BIT',
126    },
127
128    # Float variants
129    'nonstop-nfloat-mips' => {
130        template         => 1,
131        lflags           => '-Wld="-set floattype neutral_float"',
132    },
133    'nonstop-tfloat-mips' => {
134        template         => 1,
135        lflags           => '-Wld="-set floattype tandem_float"',
136    },
137    'nonstop-efloat-itanium' => {
138        template         => 1,
139        cflags           => '-WIEEE_float',
140        lflags           => '-Weld="-set floattype ieee_float"',
141    },
142    'nonstop-nfloat-itanium' => {
143        template         => 1,
144        lflags           => '-Weld="-set floattype neutral_float"',
145    },
146    'nonstop-tfloat-itanium' => {
147        template         => 1,
148        cflags           => '-WTandem_float',
149        lflags           => '-Weld="-set floattype tandem_float"',
150    },
151    'nonstop-efloat-x86_64' => {
152        template         => 1,
153        cflags           => '-WIEEE_float',
154        lflags           => '-Wxld="-set floattype ieee_float"',
155    },
156    'nonstop-nfloat-x86_64' => {
157        template         => 1,
158        lflags           => '-Wxld="-set floattype neutral_float"',
159    },
160    'nonstop-tfloat-x86_64' => {
161        template         => 1,
162        cflags           => '-WTandem_float',
163        lflags           => '-Wxld="-set floattype tandem_float"',
164    },
165
166    ######################################################################
167    # Build models
168    'nonstop-model-put' => {
169        template         => 1,
170        defines          => ['_PUT_MODEL_',
171                             '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'],
172        ex_libs          => '-lput',
173    },
174    'nonstop-model-spt' => {
175        template         => 1,
176        defines          => ['_SPT_MODEL_',
177                             '_REENTRANT', '_ENABLE_FLOSS_THREADS'],
178        ex_libs          => '-lspt',
179    },
180
181    # Additional floss model that can be combined with any of the other models.
182    # If used without any of the other models, the entry that does so must
183    # disable threads.
184    'nonstop-model-floss' => {
185        template         => 1,
186        defines          => ['OPENSSL_TANDEM_FLOSS'],
187        includes         => ['/usr/local/include'],
188        ex_libs          => '-lfloss',
189    },
190
191    ######################################################################
192    # Now for the entries themselves, let's combine things!
193    'nonstop-nsx' => {
194        inherit_from     => [ 'nonstop-common',
195                              'nonstop-archenv-x86_64-oss',
196                              'nonstop-ilp32',
197                              'nonstop-efloat-x86_64' ],
198        disable          => ['threads'],
199    },
200    'nonstop-nsx_put' => {
201        inherit_from     => [ 'nonstop-common',
202                              'nonstop-archenv-x86_64-oss',
203                              'nonstop-ilp32',
204                              'nonstop-efloat-x86_64',
205                              'nonstop-model-put' ],
206        multilib         => '-put',
207    },
208    'nonstop-nsx_64' => {
209        inherit_from     => [ 'nonstop-common',
210                              'nonstop-archenv-x86_64-oss',
211                              'nonstop-lp64-x86_64',
212                              'nonstop-efloat-x86_64' ],
213        multilib         => '64',
214        disable          => ['threads'],
215    },
216    'nonstop-nsx_64_put' => {
217        inherit_from     => [ 'nonstop-common',
218                              'nonstop-archenv-x86_64-oss',
219                              'nonstop-lp64-x86_64',
220                              'nonstop-efloat-x86_64',
221                              'nonstop-model-put' ],
222        multilib         => '64-put',
223    },
224    'nonstop-nsx_spt' => {
225        inherit_from     => [ 'nonstop-common',
226                              'nonstop-archenv-x86_64-oss',
227                              'nonstop-ilp32',
228                              'nonstop-efloat-x86_64',
229                              'nonstop-model-spt' ],
230        multilib         => '-spt',
231    },
232    'nonstop-nsx_spt_floss' => {
233        inherit_from     => [ 'nonstop-common',
234                              'nonstop-archenv-x86_64-oss',
235                              'nonstop-ilp32',
236                              'nonstop-efloat-x86_64',
237                              'nonstop-model-floss',
238                              'nonstop-model-spt'],
239        multilib         => '-spt',
240    },
241    'nonstop-nsx_g' => {
242        inherit_from     => [ 'nonstop-common',
243                              'nonstop-archenv-x86_64-guardian',
244                              'nonstop-ilp32', 'nonstop-nfloat-x86_64' ],
245        disable          => ['threads'],
246    },
247    'nonstop-nsx_g_tandem' => {
248        inherit_from     => [ 'nonstop-common',
249                              'nonstop-archenv-x86_64-guardian',
250                              'nonstop-ilp32', 'nonstop-tfloat-x86_64' ],
251        disable          => ['threads'],
252    },
253    'nonstop-nsv' => {
254        inherit_from     => [ 'nonstop-nsx' ],
255    },
256    'nonstop-nse' => {
257        inherit_from     => [ 'nonstop-common',
258                              'nonstop-archenv-itanium-oss',
259                              'nonstop-ilp32',
260                              'nonstop-efloat-itanium' ],
261        disable          => ['threads'],
262    },
263    'nonstop-nse_put' => {
264        inherit_from     => [ 'nonstop-common',
265                              'nonstop-archenv-itanium-oss',
266                              'nonstop-ilp32',
267                              'nonstop-efloat-itanium',
268                              'nonstop-model-put' ],
269        multilib         => '-put',
270    },
271    'nonstop-nse_64' => {
272        inherit_from     => [ 'nonstop-common',
273                              'nonstop-archenv-itanium-oss',
274                              'nonstop-lp64-itanium',
275                              'nonstop-efloat-itanium' ],
276        multilib         => '64',
277        disable          => ['threads'],
278    },
279    'nonstop-nse_64_put' => {
280        inherit_from     => [ 'nonstop-common',
281                              'nonstop-archenv-itanium-oss',
282                              'nonstop-lp64-itanium',
283                              'nonstop-efloat-itanium',
284                              'nonstop-model-put' ],
285        multilib         => '64-put',
286    },
287    'nonstop-nse_spt' => {
288        inherit_from     => [ 'nonstop-common',
289                              'nonstop-archenv-itanium-oss',
290                              'nonstop-ilp32',
291                              'nonstop-efloat-itanium',
292                              'nonstop-model-spt' ],
293        multilib         => '-spt',
294    },
295    'nonstop-nse_spt_floss' => {
296        inherit_from     => [ 'nonstop-common',
297                              'nonstop-archenv-itanium-oss',
298                              'nonstop-ilp32',
299                              'nonstop-efloat-itanium',
300                              'nonstop-model-floss', 'nonstop-model-spt' ],
301        multilib         => '-spt',
302    },
303    'nonstop-nse_g' => {
304        inherit_from     => [ 'nonstop-common',
305                              'nonstop-archenv-itanium-guardian',
306                              'nonstop-ilp32', 'nonstop-nfloat-itanium' ],
307        disable          => ['threads'],
308    },
309
310    'nonstop-nse_g_tandem' => {
311        inherit_from     => [ 'nonstop-common',
312                              'nonstop-archenv-itanium-guardian',
313                              'nonstop-ilp32', 'nonstop-tfloat-itanium' ],
314        disable          => ['threads'],
315    },
316