Move cpuid_asm_src file information to build.info files
[openssl.git] / Configurations / 00-base-templates.conf
1 # -*- Mode: perl -*-
2 my %targets=(
3     DEFAULTS => {
4         template        => 1,
5
6         cflags          => "",
7         cppflags        => "",
8         lflags          => "",
9         defines         => [],
10         includes        => [],
11         lib_cflags      => "",
12         lib_cppflags    => "",
13         lib_defines     => [],
14         thread_scheme   => "(unknown)", # Assume we don't know
15         thread_defines  => [],
16
17         ec_asm_src      => "",
18         des_asm_src     => "des_enc.c fcrypt_b.c",
19         aes_asm_src     => "aes_core.c aes_cbc.c",
20         bf_asm_src      => "bf_enc.c",
21         md5_asm_src     => "",
22         cast_asm_src    => "c_enc.c",
23         rc4_asm_src     => "rc4_enc.c rc4_skey.c",
24         rmd160_asm_src  => "",
25         rc5_asm_src     => "rc5_enc.c",
26         wp_asm_src      => "wp_block.c",
27         cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c",
28         modes_asm_src   => "",
29         padlock_asm_src => "",
30         chacha_asm_src  => "chacha_enc.c",
31         poly1305_asm_src        => "",
32         keccak1600_asm_src      => "keccak1600.c",
33
34         unistd          => "<unistd.h>",
35         shared_target   => "",
36         shared_cflag    => "",
37         shared_defines  => [],
38         shared_ldflag   => "",
39         shared_rcflag   => "",
40
41         #### Defaults for the benefit of the config targets who don't inherit
42         #### a BASE and assume Unix defaults
43         #### THESE WILL DISAPPEAR IN OpenSSL 1.2
44         build_scheme    => [ "unified", "unix" ],
45         build_file      => "Makefile",
46
47         AR              => "ar",
48         ARFLAGS         => "r",
49         CC              => "cc",
50         HASHBANGPERL    => "/usr/bin/env perl",
51         RANLIB          => sub { which("$config{cross_compile_prefix}ranlib")
52                                      ? "ranlib" : "" },
53         RC              => "windres",
54
55         #### THESE WILL BE ENABLED IN OpenSSL 1.2
56         #HASHBANGPERL   => "PERL", # Only Unix actually cares
57     },
58
59     BASE_common => {
60         template        => 1,
61
62         enable          => [],
63         disable         => [],
64
65         defines         =>
66             sub {
67                 my @defs = ();
68                 push @defs, "ZLIB" unless $disabled{zlib};
69                 push @defs, "ZLIB_SHARED" unless $disabled{"zlib-dynamic"};
70                 return [ @defs ];
71             },
72         includes        =>
73             sub {
74                 my @incs = ();
75                 push @incs, $withargs{zlib_include}
76                     if !$disabled{zlib} && $withargs{zlib_include};
77                 return [ @incs ];
78             },
79     },
80
81     BASE_unix => {
82         inherit_from    => [ "BASE_common" ],
83         template        => 1,
84
85         AR              => "ar",
86         ARFLAGS         => "r",
87         CC              => "cc",
88         lflags          =>
89             sub { $withargs{zlib_lib} ? "-L".$withargs{zlib_lib} : () },
90         ex_libs         =>
91             sub { !defined($disabled{zlib})
92                   && defined($disabled{"zlib-dynamic"})
93                   ? "-lz" : () },
94         HASHBANGPERL    => "/usr/bin/env perl", # Only Unix actually cares
95         RANLIB          => sub { which("$config{cross_compile_prefix}ranlib")
96                                      ? "ranlib" : "" },
97         RC              => "windres",
98
99         build_scheme    => [ "unified", "unix" ],
100         build_file      => "Makefile",
101
102         perl_platform   => 'Unix',
103     },
104
105     BASE_Windows => {
106         inherit_from    => [ "BASE_common" ],
107         template        => 1,
108
109         lib_defines      =>
110             sub {
111                 my @defs = ();
112                 unless ($disabled{"zlib-dynamic"}) {
113                     my $zlib = $withargs{zlib_lib} // "ZLIB1";
114                     push @defs, 'LIBZ=' . (quotify("perl", $zlib))[0];
115                 }
116                 return [ @defs ];
117             },
118         ex_libs         =>
119             sub {
120                 unless ($disabled{zlib}) {
121                     if (defined($disabled{"zlib-dynamic"})) {
122                         return $withargs{zlib_lib} // "ZLIB1";
123                     }
124                 }
125                 return ();
126             },
127
128         LD              => "link",
129         LDFLAGS         => "/nologo",
130         ldoutflag       => "/out:",
131         AR              => "lib",
132         ARFLAGS         => "/nologo",
133         aroutflag       => "/out:",
134         RC               => "rc",
135         rcoutflag        => "/fo",
136         MT              => "mt",
137         MTFLAGS         => "-nologo",
138         mtinflag        => "-manifest ",
139         mtoutflag       => "-outputresource:",
140
141         build_file      => "makefile",
142         build_scheme    => [ "unified", "windows" ],
143
144         perl_platform   => 'Windows',
145     },
146
147     BASE_VMS => {
148         inherit_from    => [ "BASE_common" ],
149         template        => 1,
150
151         includes        =>
152             add(sub {
153                     my @incs = ();
154                     # GNV$ZLIB_INCLUDE is the standard logical name for later
155                     # zlib incarnations.
156                     push @incs, 'GNV$ZLIB_INCLUDE:'
157                         if !$disabled{zlib} && !$withargs{zlib_include};
158                     return [ @incs ];
159                 }),
160
161         build_file       => "descrip.mms",
162         build_scheme     => [ "unified", "VMS" ],
163
164         perl_platform    => 'VMS',
165     },
166
167     x86_asm => {
168         template        => 1,
169         ec_asm_src      => "ecp_nistz256.c ecp_nistz256-x86.s",
170         des_asm_src     => "des-586.s crypt586.s",
171         aes_asm_src     => "aes-586.s vpaes-x86.s aesni-x86.s",
172         bf_asm_src      => "bf-586.s",
173         md5_asm_src     => "md5-586.s",
174         cast_asm_src    => "cast-586.s",
175         sha1_asm_src    => "sha1-586.s sha256-586.s sha512-586.s",
176         rc4_asm_src     => "rc4-586.s",
177         rmd160_asm_src  => "rmd-586.s",
178         rc5_asm_src     => "rc5-586.s",
179         wp_asm_src      => "wp_block.c wp-mmx.s",
180         cmll_asm_src    => "cmll-x86.s",
181         modes_asm_src   => "ghash-x86.s",
182         padlock_asm_src => "e_padlock-x86.s",
183         chacha_asm_src  => "chacha-x86.s",
184         poly1305_asm_src=> "poly1305-x86.s",
185     },
186     x86_elf_asm => {
187         template        => 1,
188         inherit_from    => [ "x86_asm" ],
189     },
190     x86_64_asm => {
191         template        => 1,
192         ec_asm_src      => "ecp_nistz256.c ecp_nistz256-x86_64.s x25519-x86_64.s",
193         aes_asm_src     => "aes-x86_64.s vpaes-x86_64.s bsaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
194         md5_asm_src     => "md5-x86_64.s",
195         sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-x86_64.s sha1-mb-x86_64.s sha256-mb-x86_64.s",
196         rc4_asm_src     => "rc4-x86_64.s rc4-md5-x86_64.s",
197         wp_asm_src      => "wp-x86_64.s",
198         cmll_asm_src    => "cmll-x86_64.s cmll_misc.c",
199         modes_asm_src   => "ghash-x86_64.s aesni-gcm-x86_64.s",
200         padlock_asm_src => "e_padlock-x86_64.s",
201         chacha_asm_src  => "chacha-x86_64.s",
202         poly1305_asm_src=> "poly1305-x86_64.s",
203         keccak1600_asm_src      => "keccak1600-x86_64.s",
204     },
205     ia64_asm => {
206         template        => 1,
207         aes_asm_src     => "aes_core.c aes_cbc.c aes-ia64.s",
208         sha1_asm_src    => "sha1-ia64.s sha256-ia64.s sha512-ia64.s",
209         modes_asm_src   => "ghash-ia64.s",
210         chacha_asm_src  => "chacha-ia64.S",
211         poly1305_asm_src=> "asm/poly1305-ia64.S",
212     },
213     sparcv9_asm => {
214         template        => 1,
215         ec_asm_src      => "ecp_nistz256.c ecp_nistz256-sparcv9.S",
216         des_asm_src     => "des_enc-sparc.S fcrypt_b.c dest4-sparcv9.S",
217         aes_asm_src     => "aes_core.c aes_cbc.c aes-sparcv9.S aest4-sparcv9.S aesfx-sparcv9.S",
218         md5_asm_src     => "md5-sparcv9.S",
219         sha1_asm_src    => "sha1-sparcv9.S sha256-sparcv9.S sha512-sparcv9.S",
220         cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c cmllt4-sparcv9.S",
221         modes_asm_src   => "ghash-sparcv9.S",
222         poly1305_asm_src=> "poly1305-sparcv9.S",
223     },
224     sparcv8_asm => {
225         template        => 1,
226         des_asm_src     => "des_enc-sparc.S fcrypt_b.c",
227     },
228     alpha_asm => {
229         template        => 1,
230         sha1_asm_src    => "sha1-alpha.S",
231         modes_asm_src   => "ghash-alpha.S",
232     },
233     mips32_asm => {
234         template        => 1,
235         aes_asm_src     => "aes_cbc.c aes-mips.S",
236         sha1_asm_src    => "sha1-mips.S sha256-mips.S",
237     },
238     mips64_asm => {
239         inherit_from    => [ "mips32_asm" ],
240         template        => 1,
241         sha1_asm_src    => add("sha512-mips.S"),
242         poly1305_asm_src=> "poly1305-mips.S",
243     },
244     s390x_asm => {
245         template        => 1,
246         aes_asm_src     => "aes-s390x.S aes-ctr.fake aes-xts.fake",
247         sha1_asm_src    => "sha1-s390x.S sha256-s390x.S sha512-s390x.S",
248         rc4_asm_src     => "rc4-s390x.s",
249         modes_asm_src   => "ghash-s390x.S",
250         chacha_asm_src  => "chacha-s390x.S",
251         poly1305_asm_src=> "poly1305-s390x.S",
252         keccak1600_asm_src      => "keccak1600-s390x.S",
253     },
254     armv4_asm => {
255         template        => 1,
256         ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv4.S",
257         aes_asm_src     => "aes_cbc.c aes-armv4.S bsaes-armv7.S aesv8-armx.S",
258         sha1_asm_src    => "sha1-armv4-large.S sha256-armv4.S sha512-armv4.S",
259         modes_asm_src   => "ghash-armv4.S ghashv8-armx.S",
260         chacha_asm_src  => "chacha-armv4.S",
261         poly1305_asm_src=> "poly1305-armv4.S",
262         keccak1600_asm_src      => "keccak1600-armv4.S",
263     },
264     aarch64_asm => {
265         template        => 1,
266         ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv8.S",
267         aes_asm_src     => "aes_core.c aes_cbc.c aesv8-armx.S vpaes-armv8.S",
268         sha1_asm_src    => "sha1-armv8.S sha256-armv8.S sha512-armv8.S",
269         modes_asm_src   => "ghashv8-armx.S",
270         chacha_asm_src  => "chacha-armv8.S",
271         poly1305_asm_src=> "poly1305-armv8.S",
272         keccak1600_asm_src      => "keccak1600-armv8.S",
273     },
274     parisc11_asm => {
275         template        => 1,
276         aes_asm_src     => "aes_core.c aes_cbc.c aes-parisc.s",
277         sha1_asm_src    => "sha1-parisc.s sha256-parisc.s sha512-parisc.s",
278         rc4_asm_src     => "rc4-parisc.s",
279         modes_asm_src   => "ghash-parisc.s",
280     },
281     parisc20_64_asm => {
282         template        => 1,
283         inherit_from    => [ "parisc11_asm" ],
284     },
285     ppc32_asm => {
286         template        => 1,
287         aes_asm_src     => "aes_core.c aes_cbc.c aes-ppc.s vpaes-ppc.s aesp8-ppc.s",
288         sha1_asm_src    => "sha1-ppc.s sha256-ppc.s sha512-ppc.s sha256p8-ppc.s sha512p8-ppc.s",
289         modes_asm_src   => "ghashp8-ppc.s",
290         chacha_asm_src  => "chacha-ppc.s",
291         poly1305_asm_src=> "poly1305-ppc.s poly1305-ppcfp.s",
292     },
293     ppc64_asm => {
294         inherit_from    => [ "ppc32_asm" ],
295         template        => 1,
296         ec_asm_src      => "ecp_nistz256.c ecp_nistz256-ppc64.s x25519-ppc64.s",
297         keccak1600_asm_src      => "keccak1600-ppc64.s",
298     },
299 );