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