VMS: use selective search when linking with shareable images
[openssl.git] / Configurations / 50-nonstop.conf
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'],
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'],
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         cflags           => '-Wtarget=tns/e -Wsystype=oss',
93         lflags           => '-Weld="-set systype oss"',
94         shared_ldflag    => '-Wshared',
95         shared_defflag   => '-Weld_obey=',
96         shared_argfileflag => '-Weld_obey=',
97     },
98     # x86_64 + oss:
99     'nonstop-archenv-x86_64-oss' => {
100         template         => 1,
101         cflags           => '-Wtarget=tns/x -Wsystype=oss',
102         lflags           => '-Wxld="-set systype oss"',
103         shared_ldflag    => '-Wshared',
104         shared_defflag   => '-Wxld_obey=',
105         shared_argfileflag => '-Wxld_obey=',
106     },
107
108     # Size variants
109     'nonstop-ilp32' => {
110         template         => 1,
111         cflags           => '-Wilp32',
112         bn_ops           => 'THIRTY_TWO_BIT',
113     },
114     'nonstop-lp64-itanium' => {
115         template         => 1,
116         cflags           => '-Wlp64',
117         bn_ops           => 'SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR',
118     },
119     'nonstop-lp64-x86_64' => {
120         template         => 1,
121         cflags           => '-Wlp64',
122         lflags           => '-Wxld="-set data_model lp64"',
123         bn_ops           => 'SIXTY_FOUR_BIT',
124     },
125
126     # Float variants
127     'nonstop-nfloat-mips' => {
128         template         => 1,
129         lflags           => '-Wld="-set floattype neutral_float"',
130     },
131     'nonstop-tfloat-mips' => {
132         template         => 1,
133         lflags           => '-Wld="-set floattype tandem_float"',
134     },
135     'nonstop-efloat-itanium' => {
136         template         => 1,
137         cflags           => '-WIEEE_float',
138         lflags           => '-Weld="-set floattype ieee_float"',
139     },
140     'nonstop-nfloat-itanium' => {
141         template         => 1,
142         lflags           => '-Weld="-set floattype neutral_float"',
143     },
144     'nonstop-tfloat-itanium' => {
145         template         => 1,
146         cflags           => '-WTandem_float',
147         lflags           => '-Weld="-set floattype tandem_float"',
148     },
149     'nonstop-efloat-x86_64' => {
150         template         => 1,
151         cflags           => '-WIEEE_float',
152         lflags           => '-Wxld="-set floattype ieee_float"',
153     },
154     'nonstop-nfloat-x86_64' => {
155         template         => 1,
156         lflags           => '-Wxld="-set floattype neutral_float"',
157     },
158     'nonstop-tfloat-x86_64' => {
159         template         => 1,
160         cflags           => '-WTandem_float',
161         lflags           => '-Wxld="-set floattype tandem_float"',
162     },
163
164     ######################################################################
165     # Build models
166     'nonstop-model-put' => {
167         template         => 1,
168         defines          => ['_PUT_MODEL_',
169                              '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'],
170         ex_libs          => '-lput',
171     },
172     'nonstop-model-spt' => {
173         template         => 1,
174         defines          => ['_SPT_MODEL_',
175                              '_REENTRANT', '_ENABLE_FLOSS_THREADS'],
176         ex_libs          => '-lspt',
177     },
178
179     # Additional floss model that can be combined with any of the other models.
180     # If used without any of the other models, the entry that does so must
181     # disable threads.
182     'nonstop-model-floss' => {
183         template         => 1,
184         defines          => ['OPENSSL_TANDEM_FLOSS'],
185         includes         => ['/usr/local/include'],
186         ex_libs          => '-lfloss',
187     },
188
189     ######################################################################
190     # Now for the entries themselves, let's combine things!
191     'nonstop-nsx' => {
192         inherit_from     => [ 'nonstop-common',
193                               'nonstop-archenv-x86_64-oss',
194                               'nonstop-ilp32',
195                               'nonstop-efloat-x86_64' ],
196         disable          => ['threads'],
197     },
198     'nonstop-nsx_put' => {
199         inherit_from     => [ 'nonstop-common',
200                               'nonstop-archenv-x86_64-oss',
201                               'nonstop-ilp32',
202                               'nonstop-efloat-x86_64',
203                               'nonstop-model-put' ],
204         multilib         => '-put',
205     },
206     'nonstop-nsx_64' => {
207         inherit_from     => [ 'nonstop-common',
208                               'nonstop-archenv-x86_64-oss',
209                               'nonstop-lp64-x86_64',
210                               'nonstop-efloat-x86_64' ],
211         multilib         => '64',
212         disable          => ['threads'],
213     },
214     'nonstop-nsx_64_put' => {
215         inherit_from     => [ 'nonstop-common',
216                               'nonstop-archenv-x86_64-oss',
217                               'nonstop-lp64-x86_64',
218                               'nonstop-efloat-x86_64',
219                               'nonstop-model-put' ],
220         multilib         => '64-put',
221     },
222     'nonstop-nsx_spt' => {
223         inherit_from     => [ 'nonstop-common',
224                               'nonstop-archenv-x86_64-oss',
225                               'nonstop-ilp32',
226                               'nonstop-efloat-x86_64',
227                               'nonstop-model-spt' ],
228         multilib         => '-spt',
229     },
230     'nonstop-nsx_spt_floss' => {
231         inherit_from     => [ 'nonstop-common',
232                               'nonstop-archenv-x86_64-oss',
233                               'nonstop-ilp32',
234                               'nonstop-efloat-x86_64',
235                               'nonstop-model-floss',
236                               'nonstop-model-spt'],
237         multilib         => '-spt',
238     },
239     'nonstop-nsx_g' => {
240         inherit_from     => [ 'nonstop-common',
241                               'nonstop-archenv-x86_64-guardian',
242                               'nonstop-ilp32', 'nonstop-nfloat-x86_64' ],
243         disable          => ['threads'],
244     },
245     'nonstop-nsx_g_tandem' => {
246         inherit_from     => [ 'nonstop-common',
247                               'nonstop-archenv-x86_64-guardian',
248                               'nonstop-ilp32', 'nonstop-tfloat-x86_64' ],
249         disable          => ['threads'],
250     },
251     'nonstop-nsv' => {
252         inherit_from     => [ 'nonstop-nsx' ],
253     },
254     'nonstop-nse' => {
255         inherit_from     => [ 'nonstop-common',
256                               'nonstop-archenv-itanium-oss',
257                               'nonstop-ilp32',
258                               'nonstop-efloat-itanium' ],
259         disable          => ['threads'],
260     },
261     'nonstop-nse_put' => {
262         inherit_from     => [ 'nonstop-common',
263                               'nonstop-archenv-itanium-oss',
264                               'nonstop-ilp32',
265                               'nonstop-efloat-itanium',
266                               'nonstop-model-put' ],
267         multilib         => '-put',
268     },
269     'nonstop-nse_64' => {
270         inherit_from     => [ 'nonstop-common',
271                               'nonstop-archenv-itanium-oss',
272                               'nonstop-lp64-itanium',
273                               'nonstop-efloat-itanium' ],
274         multilib         => '64',
275         disable          => ['threads'],
276     },
277     'nonstop-nse_64_put' => {
278         inherit_from     => [ 'nonstop-common',
279                               'nonstop-archenv-itanium-oss',
280                               'nonstop-lp64-itanium',
281                               'nonstop-efloat-itanium',
282                               'nonstop-model-put' ],
283         multilib         => '64-put',
284     },
285     'nonstop-nse_spt' => {
286         inherit_from     => [ 'nonstop-common',
287                               'nonstop-archenv-itanium-oss',
288                               'nonstop-ilp32',
289                               'nonstop-efloat-itanium',
290                               'nonstop-model-spt' ],
291         multilib         => '-spt',
292     },
293     'nonstop-nse_spt_floss' => {
294         inherit_from     => [ 'nonstop-common',
295                               'nonstop-archenv-itanium-oss',
296                               'nonstop-ilp32',
297                               'nonstop-efloat-itanium',
298                               'nonstop-model-floss', 'nonstop-model-spt' ],
299         multilib         => '-spt',
300     },
301     'nonstop-nse_g' => {
302         inherit_from     => [ 'nonstop-common',
303                               'nonstop-archenv-itanium-guardian',
304                               'nonstop-ilp32', 'nonstop-nfloat-itanium' ],
305         disable          => ['threads'],
306     },
307
308     'nonstop-nse_g_tandem' => {
309         inherit_from     => [ 'nonstop-common',
310                               'nonstop-archenv-itanium-guardian',
311                               'nonstop-ilp32', 'nonstop-tfloat-itanium' ],
312         disable          => ['threads'],
313     },