1227569Sphilip#### Nonstop configurations
2227569Sphilip    # Common for all
3227569Sphilip    'nonstop-common' => {
4227569Sphilip        inherit_from     => [ 'BASE_unix' ],
5227569Sphilip        template         => 1,
6227569Sphilip        cc               => 'c99',
7227569Sphilip        cflags           => add_before(picker(debug   => '-g -O0',
8227569Sphilip                                              release => '-g -O2'),
9227569Sphilip                                       '-Wextensions',
10227569Sphilip                                       '-Wnowarn=203,220,272,734,770,1506',
11227569Sphilip                                       '-Wbuild_neutral_library',
12227569Sphilip                                       '-Wverbose'),
13227569Sphilip        defines          => add('OPENSSL_VPROC=$(OPENSSL_VPROC)',
14227569Sphilip                                '_XOPEN_SOURCE',
15227569Sphilip                                '_XOPEN_SOURCE_EXTENDED=1',
16227569Sphilip                                '_TANDEM_SOURCE',
17227569Sphilip                                'B_ENDIAN'),
18227569Sphilip        perl             => '/usr/bin/perl',
19227569Sphilip        shared_target    => 'nonstop-shared',
20227569Sphilip        shared_extension => ".so",
21227569Sphilip        ex_libs          => add('-lrld'),
22227569Sphilip        enable           => ['egd'],
23227569Sphilip        dso_scheme       => 'DLFCN',
24227569Sphilip        sys_id           => 'TANDEM',
25227569Sphilip    },
26227569Sphilip
27227569Sphilip    ######################################################################
28227569Sphilip    # Additional variant settings, to be combined with nonstop-common
29227569Sphilip    # Note that these do not inherit anything.  However, the diverse values
30227569Sphilip    # are merged with other entries in an 'inherit_from'.
31227569Sphilip    #
32227569Sphilip    # These combine:
33227569Sphilip    # - System architecture (MIPS, Itanium, or x86)
34227569Sphilip    # - Execution environment (oss [default] or guardian)
35227569Sphilip    #
36227569Sphilip    # Unfortunately, they can't be separated into independent templates, because
37227569Sphilip    # a number of the above are encoded as different linkers, and by consequence,
38227569Sphilip    # different c99 linker flags (-Wld, -Weld, and -Wxld)
39227569Sphilip    #
40227569Sphilip    # In addition, the are modifiers for:
41227569Sphilip    # - Size of long + pointer (ilp32 [default] and lp64)
42227569Sphilip    # - Float type (neutral and tandem)
43227569Sphilip    #
44227569Sphilip    # Unfortunately, because the float types affect the linker settings, those
45227569Sphilip    # are divided per system architecture
46227569Sphilip    #
47227569Sphilip    # MIPS + guardian (unused but present for convenience):
48227569Sphilip    'nonstop-archenv-mips-guardian' => {
49227569Sphilip        template         => 1,
50227569Sphilip        defines          => ['NO_GETPID'],
51227569Sphilip        cflags           => '-Wtarget=tns/r -Wsystype=guardian',
52227569Sphilip        lflags           => '-Wld="-set systype guardian"',
53227569Sphilip        shared_ldflag    => '-Wshared -Wld="-soname $(@:lib%.so=%)"',
54227569Sphilip        shared_defflag   => '-Wld_obey=',
55227569Sphilip        shared_argfileflag => '-Wld_obey=',
56227569Sphilip    },
57227569Sphilip
58227569Sphilip    # Itanium + guardian:
59227569Sphilip    'nonstop-archenv-itanium-guardian' => {
60227569Sphilip        template         => 1,
61227569Sphilip        defines          => ['NO_GETPID', '_TANDEM_ARCH=2'],
62227569Sphilip        cflags           => '-Wtarget=tns/e -Wsystype=guardian',
63227569Sphilip        lflags           => '-Weld="-set systype guardian"',
64227569Sphilip        shared_ldflag    => '-Wshared -Weld="-soname $(@:lib%.so=%)"',
65227569Sphilip        shared_defflag   => '-Weld_obey=',
66227569Sphilip        shared_argfileflag => '-Weld_obey=',
67227569Sphilip    },
68227569Sphilip
69227569Sphilip    # x86 + guardian:
70227569Sphilip    'nonstop-archenv-x86_64-guardian' => {
71227569Sphilip        template         => 1,
72227569Sphilip        defines          => ['NO_GETPID', '_TANDEM_ARCH=3'],
73227569Sphilip        cflags           => '-Wtarget=tns/x -Wsystype=guardian',
74227569Sphilip        lflags           => '-Wxld="-set systype guardian"',
75227569Sphilip        shared_ldflag    => '-Wshared -Wxld="-soname $(@:lib%.so=%)"',
76227569Sphilip        shared_defflag   => '-Wxld_obey=',
77227569Sphilip        shared_argfileflag => '-Wxld_obey=',
78227569Sphilip    },
79227569Sphilip
80227569Sphilip    # MIPS + oss (unused but present for convenience):
81227569Sphilip    'nonstop-archenv-mips-oss' => {
82227569Sphilip        template         => 1,
83227569Sphilip        cflags           => '-Wtarget=tns/r -Wsystype=oss',
84227569Sphilip        lflags           => '-Wld="-set systype oss"',
85227569Sphilip        shared_ldflag    => '-Wshared',
86227569Sphilip        shared_defflag   => '-Wld_obey=',
87227569Sphilip        shared_argfileflag => '-Wld_obey=',
88227569Sphilip    },
89227569Sphilip    # Itanium + oss:
90227569Sphilip    'nonstop-archenv-itanium-oss' => {
91227569Sphilip        template         => 1,
92227569Sphilip        defines          => ['_TANDEM_ARCH=2'],
93227569Sphilip        cflags           => '-Wtarget=tns/e -Wsystype=oss',
94227569Sphilip        lflags           => '-Weld="-set systype oss"',
95227569Sphilip        shared_ldflag    => '-Wshared',
96227569Sphilip        shared_defflag   => '-Weld_obey=',
97227569Sphilip        shared_argfileflag => '-Weld_obey=',
98227569Sphilip    },
99227569Sphilip    # x86_64 + oss:
100227569Sphilip    'nonstop-archenv-x86_64-oss' => {
101227569Sphilip        template         => 1,
102227569Sphilip        defines          => ['_TANDEM_ARCH=3'],
103227569Sphilip        cflags           => '-Wtarget=tns/x -Wsystype=oss',
104227569Sphilip        lflags           => '-Wxld="-set systype oss"',
105227569Sphilip        shared_ldflag    => '-Wshared',
106227569Sphilip        shared_defflag   => '-Wxld_obey=',
107227569Sphilip        shared_argfileflag => '-Wxld_obey=',
108227569Sphilip    },
109227569Sphilip
110227569Sphilip    # Size variants
111227569Sphilip    'nonstop-ilp32' => {
112227569Sphilip        template         => 1,
113227569Sphilip        cflags           => '-Wilp32',
114227569Sphilip        bn_ops           => 'THIRTY_TWO_BIT',
115227569Sphilip    },
116227569Sphilip    'nonstop-lp64-itanium' => {
117227569Sphilip        template         => 1,
118227569Sphilip        cflags           => '-Wlp64',
119227569Sphilip        bn_ops           => 'SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR',
120227569Sphilip    },
121227569Sphilip    'nonstop-lp64-x86_64' => {
122227569Sphilip        template         => 1,
123227569Sphilip        cflags           => '-Wlp64',
124227569Sphilip        lflags           => '-Wxld="-set data_model lp64"',
125227569Sphilip        bn_ops           => 'SIXTY_FOUR_BIT',
126227569Sphilip    },
127227569Sphilip
128227569Sphilip    # Float variants
129227569Sphilip    'nonstop-nfloat-mips' => {
130227569Sphilip        template         => 1,
131227569Sphilip        lflags           => '-Wld="-set floattype neutral_float"',
132227569Sphilip    },
133227569Sphilip    'nonstop-tfloat-mips' => {
134227569Sphilip        template         => 1,
135227569Sphilip        lflags           => '-Wld="-set floattype tandem_float"',
136227569Sphilip    },
137227569Sphilip    'nonstop-efloat-itanium' => {
138227569Sphilip        template         => 1,
139227569Sphilip        cflags           => '-WIEEE_float',
140227569Sphilip        lflags           => '-Weld="-set floattype ieee_float"',
141227569Sphilip    },
142227569Sphilip    'nonstop-nfloat-itanium' => {
143227569Sphilip        template         => 1,
144227569Sphilip        lflags           => '-Weld="-set floattype neutral_float"',
145227569Sphilip    },
146227569Sphilip    'nonstop-tfloat-itanium' => {
147227569Sphilip        template         => 1,
148227569Sphilip        cflags           => '-WTandem_float',
149227569Sphilip        lflags           => '-Weld="-set floattype tandem_float"',
150227569Sphilip    },
151227569Sphilip    'nonstop-efloat-x86_64' => {
152227569Sphilip        template         => 1,
153227569Sphilip        cflags           => '-WIEEE_float',
154227569Sphilip        lflags           => '-Wxld="-set floattype ieee_float"',
155227569Sphilip    },
156227569Sphilip    'nonstop-nfloat-x86_64' => {
157227569Sphilip        template         => 1,
158227569Sphilip        lflags           => '-Wxld="-set floattype neutral_float"',
159227569Sphilip    },
160227569Sphilip    'nonstop-tfloat-x86_64' => {
161227569Sphilip        template         => 1,
162227569Sphilip        cflags           => '-WTandem_float',
163227569Sphilip        lflags           => '-Wxld="-set floattype tandem_float"',
164227569Sphilip    },
165227569Sphilip
166227569Sphilip    ######################################################################
167227569Sphilip    # Build models
168227569Sphilip    'nonstop-model-put' => {
169227569Sphilip        template         => 1,
170227569Sphilip        defines          => ['_PUT_MODEL_',
171227569Sphilip                             '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'],
172227569Sphilip        ex_libs          => '-lput',
173227569Sphilip    },
174227569Sphilip    'nonstop-model-spt' => {
175227569Sphilip        template         => 1,
176227569Sphilip        defines          => ['_SPT_MODEL_',
177227569Sphilip                             '_REENTRANT', '_ENABLE_FLOSS_THREADS'],
178227569Sphilip        ex_libs          => '-lspt',
179227569Sphilip    },
180227569Sphilip
181227569Sphilip    # Additional floss model that can be combined with any of the other models.
182227569Sphilip    # If used without any of the other models, the entry that does so must
183227569Sphilip    # disable threads.
184227569Sphilip    'nonstop-model-floss' => {
185227569Sphilip        template         => 1,
186227569Sphilip        defines          => ['OPENSSL_TANDEM_FLOSS'],
187227569Sphilip        includes         => ['/usr/local/include'],
188227569Sphilip        ex_libs          => '-lfloss',
189227569Sphilip    },
190227569Sphilip
191227569Sphilip    ######################################################################
192227569Sphilip    # Now for the entries themselves, let's combine things!
193227569Sphilip    'nonstop-nsx' => {
194227569Sphilip        inherit_from     => [ 'nonstop-common',
195227569Sphilip                              'nonstop-archenv-x86_64-oss',
196227569Sphilip                              'nonstop-ilp32',
197227569Sphilip                              'nonstop-efloat-x86_64' ],
198227569Sphilip        disable          => ['threads'],
199227569Sphilip    },
200227569Sphilip    'nonstop-nsx_put' => {
201227569Sphilip        inherit_from     => [ 'nonstop-common',
202227569Sphilip                              'nonstop-archenv-x86_64-oss',
203227569Sphilip                              'nonstop-ilp32',
204227569Sphilip                              'nonstop-efloat-x86_64',
205227569Sphilip                              'nonstop-model-put' ],
206227569Sphilip        multilib         => '-put',
207227569Sphilip    },
208227569Sphilip    'nonstop-nsx_64' => {
209227569Sphilip        inherit_from     => [ 'nonstop-common',
210227569Sphilip                              'nonstop-archenv-x86_64-oss',
211227569Sphilip                              'nonstop-lp64-x86_64',
212227569Sphilip                              'nonstop-efloat-x86_64' ],
213227569Sphilip        multilib         => '64',
214227569Sphilip        disable          => ['threads'],
215227569Sphilip    },
216227569Sphilip    'nonstop-nsx_64_put' => {
217227569Sphilip        inherit_from     => [ 'nonstop-common',
218227569Sphilip                              'nonstop-archenv-x86_64-oss',
219227569Sphilip                              'nonstop-lp64-x86_64',
220227569Sphilip                              'nonstop-efloat-x86_64',
221227569Sphilip                              'nonstop-model-put' ],
222227569Sphilip        multilib         => '64-put',
223227569Sphilip    },
224227569Sphilip    'nonstop-nsx_spt' => {
225227569Sphilip        inherit_from     => [ 'nonstop-common',
226227569Sphilip                              'nonstop-archenv-x86_64-oss',
227227569Sphilip                              'nonstop-ilp32',
228227569Sphilip                              'nonstop-efloat-x86_64',
229227569Sphilip                              'nonstop-model-spt' ],
230227569Sphilip        multilib         => '-spt',
231227569Sphilip    },
232227569Sphilip    'nonstop-nsx_spt_floss' => {
233227569Sphilip        inherit_from     => [ 'nonstop-common',
234227569Sphilip                              'nonstop-archenv-x86_64-oss',
235227569Sphilip                              'nonstop-ilp32',
236227569Sphilip                              'nonstop-efloat-x86_64',
237227569Sphilip                              'nonstop-model-floss',
238227569Sphilip                              'nonstop-model-spt'],
239227569Sphilip        multilib         => '-spt',
240227569Sphilip    },
241227569Sphilip    'nonstop-nsx_g' => {
242227569Sphilip        inherit_from     => [ 'nonstop-common',
243227569Sphilip                              'nonstop-archenv-x86_64-guardian',
244227569Sphilip                              'nonstop-ilp32', 'nonstop-nfloat-x86_64' ],
245227569Sphilip        disable          => ['threads'],
246227569Sphilip    },
247227569Sphilip    'nonstop-nsx_g_tandem' => {
248227569Sphilip        inherit_from     => [ 'nonstop-common',
249227569Sphilip                              'nonstop-archenv-x86_64-guardian',
250227569Sphilip                              'nonstop-ilp32', 'nonstop-tfloat-x86_64' ],
251227569Sphilip        disable          => ['threads'],
252227569Sphilip    },
253227569Sphilip    'nonstop-nsv' => {
254227569Sphilip        inherit_from     => [ 'nonstop-nsx' ],
255227569Sphilip    },
256227569Sphilip    'nonstop-nse' => {
257227569Sphilip        inherit_from     => [ 'nonstop-common',
258227569Sphilip                              'nonstop-archenv-itanium-oss',
259227569Sphilip                              'nonstop-ilp32',
260227569Sphilip                              'nonstop-efloat-itanium' ],
261227569Sphilip        disable          => ['threads'],
262227569Sphilip    },
263227569Sphilip    'nonstop-nse_put' => {
264227569Sphilip        inherit_from     => [ 'nonstop-common',
265227569Sphilip                              'nonstop-archenv-itanium-oss',
266227569Sphilip                              'nonstop-ilp32',
267227569Sphilip                              'nonstop-efloat-itanium',
268227569Sphilip                              'nonstop-model-put' ],
269227569Sphilip        multilib         => '-put',
270227569Sphilip    },
271227569Sphilip    'nonstop-nse_64' => {
272227569Sphilip        inherit_from     => [ 'nonstop-common',
273227569Sphilip                              'nonstop-archenv-itanium-oss',
274227569Sphilip                              'nonstop-lp64-itanium',
275227569Sphilip                              'nonstop-efloat-itanium' ],
276227569Sphilip        multilib         => '64',
277227569Sphilip        disable          => ['threads'],
278227569Sphilip    },
279227569Sphilip    'nonstop-nse_64_put' => {
280227569Sphilip        inherit_from     => [ 'nonstop-common',
281227569Sphilip                              'nonstop-archenv-itanium-oss',
282227569Sphilip                              'nonstop-lp64-itanium',
283227569Sphilip                              'nonstop-efloat-itanium',
284227569Sphilip                              'nonstop-model-put' ],
285227569Sphilip        multilib         => '64-put',
286227569Sphilip    },
287227569Sphilip    'nonstop-nse_spt' => {
288227569Sphilip        inherit_from     => [ 'nonstop-common',
289227569Sphilip                              'nonstop-archenv-itanium-oss',
290227569Sphilip                              'nonstop-ilp32',
291227569Sphilip                              'nonstop-efloat-itanium',
292227569Sphilip                              'nonstop-model-spt' ],
293227569Sphilip        multilib         => '-spt',
294227569Sphilip    },
295227569Sphilip    'nonstop-nse_spt_floss' => {
296227569Sphilip        inherit_from     => [ 'nonstop-common',
297227569Sphilip                              'nonstop-archenv-itanium-oss',
298227569Sphilip                              'nonstop-ilp32',
299227569Sphilip                              'nonstop-efloat-itanium',
300227569Sphilip                              'nonstop-model-floss', 'nonstop-model-spt' ],
301227569Sphilip        multilib         => '-spt',
302227569Sphilip    },
303227569Sphilip    'nonstop-nse_g' => {
304227569Sphilip        inherit_from     => [ 'nonstop-common',
305227569Sphilip                              'nonstop-archenv-itanium-guardian',
306227569Sphilip                              'nonstop-ilp32', 'nonstop-nfloat-itanium' ],
307227569Sphilip        disable          => ['threads'],
308227569Sphilip    },
309227569Sphilip
310227569Sphilip    'nonstop-nse_g_tandem' => {
311227569Sphilip        inherit_from     => [ 'nonstop-common',
312227569Sphilip                              'nonstop-archenv-itanium-guardian',
313227569Sphilip                              'nonstop-ilp32', 'nonstop-tfloat-itanium' ],
314227569Sphilip        disable          => ['threads'],
315227569Sphilip    },
316227569Sphilip