Home | History | Annotate | Line # | Download | only in Configurations
      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 	apps_aux_src	=> "",
     18 	apps_init_src	=> "",
     19 	cpuid_asm_src	=> "mem_clr.c",
     20 	uplink_aux_src	=> "",
     21 	bn_asm_src	=> "bn_asm.c",
     22 	ec_asm_src	=> "",
     23 	des_asm_src	=> "des_enc.c fcrypt_b.c",
     24 	aes_asm_src	=> "aes_core.c aes_cbc.c",
     25 	bf_asm_src	=> "bf_enc.c",
     26 	md5_asm_src	=> "",
     27 	cast_asm_src	=> "c_enc.c",
     28 	rc4_asm_src	=> "rc4_enc.c rc4_skey.c",
     29 	rmd160_asm_src	=> "",
     30 	rc5_asm_src	=> "rc5_enc.c",
     31 	wp_asm_src	=> "wp_block.c",
     32 	cmll_asm_src	=> "camellia.c cmll_misc.c cmll_cbc.c",
     33 	modes_asm_src	=> "",
     34 	padlock_asm_src	=> "",
     35 	chacha_asm_src	=> "chacha_enc.c",
     36 	poly1305_asm_src	=> "",
     37 	keccak1600_asm_src	=> "keccak1600.c",
     38 
     39 	unistd		=> "<unistd.h>",
     40 	shared_target	=> "",
     41 	shared_cflag	=> "",
     42 	shared_defines	=> [],
     43 	shared_ldflag	=> "",
     44 	shared_rcflag	=> "",
     45 	shared_extension	=> "",
     46 
     47 	#### Defaults for the benefit of the config targets who don't inherit
     48 	#### a BASE and assume Unix defaults
     49 	#### THESE WILL DISAPPEAR IN OpenSSL 1.2
     50 	build_scheme	=> [ "unified", "unix" ],
     51 	build_file	=> "Makefile",
     52 
     53 	AR		=> "ar",
     54 	ARFLAGS		=> "r",
     55 	CC		=> "cc",
     56 	HASHBANGPERL	=> "/usr/bin/env perl",
     57 	RANLIB		=> sub { which("$config{cross_compile_prefix}ranlib")
     58                                      ? "ranlib" : "" },
     59 	RC		=> "windres",
     60 
     61 	#### THESE WILL BE ENABLED IN OpenSSL 1.2
     62 	#HASHBANGPERL	=> "PERL", # Only Unix actually cares
     63     },
     64 
     65     BASE_common => {
     66 	template	=> 1,
     67 
     68 	enable		=> [],
     69 	disable		=> [],
     70 
     71 	defines		=>
     72 	    sub {
     73                 my @defs = ();
     74                 push @defs, "ZLIB" unless $disabled{zlib};
     75                 push @defs, "ZLIB_SHARED" unless $disabled{"zlib-dynamic"};
     76                 return [ @defs ];
     77             },
     78         includes        =>
     79             sub {
     80                 my @incs = ();
     81                 push @incs, $withargs{zlib_include}
     82                     if !$disabled{zlib} && $withargs{zlib_include};
     83                 return [ @incs ];
     84             },
     85     },
     86 
     87     BASE_unix => {
     88         inherit_from    => [ "BASE_common" ],
     89         template        => 1,
     90 
     91         AR              => "ar",
     92         ARFLAGS         => "r",
     93         CC              => "cc",
     94         lflags          =>
     95             sub { $withargs{zlib_lib} ? "-L".$withargs{zlib_lib} : () },
     96         ex_libs         =>
     97             sub { !defined($disabled{zlib})
     98                   && defined($disabled{"zlib-dynamic"})
     99                   ? "-lz" : () },
    100         HASHBANGPERL    => "/usr/bin/env perl", # Only Unix actually cares
    101         RANLIB          => sub { which("$config{cross_compile_prefix}ranlib")
    102                                      ? "ranlib" : "" },
    103         RC              => "windres",
    104 
    105         shared_extension => ".so",
    106 
    107         build_scheme    => [ "unified", "unix" ],
    108         build_file      => "Makefile",
    109     },
    110 
    111     BASE_Windows => {
    112         inherit_from    => [ "BASE_common" ],
    113         template        => 1,
    114 
    115         lib_defines      =>
    116             sub {
    117                 my @defs = ();
    118                 unless ($disabled{"zlib-dynamic"}) {
    119                     my $zlib = $withargs{zlib_lib} // "ZLIB1";
    120                     push @defs, 'LIBZ=' . (quotify("perl", $zlib))[0];
    121                 }
    122                 return [ @defs ];
    123             },
    124         ex_libs         =>
    125             sub {
    126                 unless ($disabled{zlib}) {
    127                     if (defined($disabled{"zlib-dynamic"})) {
    128                         return $withargs{zlib_lib} // "ZLIB1";
    129                     }
    130                 }
    131                 return ();
    132             },
    133 
    134         LD              => "link",
    135         LDFLAGS         => "/nologo",
    136         ldoutflag       => "/out:",
    137         AR              => "lib",
    138         ARFLAGS         => "/nologo",
    139         aroutflag       => "/out:",
    140         RC               => "rc",
    141         rcoutflag        => "/fo",
    142         MT              => "mt",
    143         MTFLAGS         => "-nologo",
    144         mtinflag        => "-manifest ",
    145         mtoutflag       => "-outputresource:",
    146 
    147         shared_extension => ".dll",
    148 
    149         build_file      => "makefile",
    150         build_scheme    => [ "unified", "windows" ],
    151     },
    152 
    153     BASE_VMS => {
    154         inherit_from    => [ "BASE_common" ],
    155         template        => 1,
    156 
    157         includes        =>
    158             add(sub {
    159                     my @incs = ();
    160                     # GNV$ZLIB_INCLUDE is the standard logical name for later
    161                     # zlib incarnations.
    162                     push @incs, 'GNV$ZLIB_INCLUDE:'
    163                         if !$disabled{zlib} && !$withargs{zlib_include};
    164                     return [ @incs ];
    165                 }),
    166 
    167         shared_extension => ".exe",
    168 
    169         build_file       => "descrip.mms",
    170         build_scheme     => [ "unified", "VMS" ],
    171     },
    172 
    173     uplink_common => {
    174 	template	=> 1,
    175 	apps_init_src	=> add("../ms/applink.c"),
    176 	uplink_aux_src	=> add("../ms/uplink.c"),
    177 	defines		=> add("OPENSSL_USE_APPLINK"),
    178     },
    179     x86_uplink => {
    180 	inherit_from	=> [ "uplink_common" ],
    181 	template	=> 1,
    182 	uplink_aux_src	=> add("uplink-x86.s"),
    183     },
    184     x86_64_uplink => {
    185 	inherit_from	=> [ "uplink_common" ],
    186 	template	=> 1,
    187 	uplink_aux_src	=> add("uplink-x86_64.s"),
    188     },
    189     ia64_uplink => {
    190 	inherit_from	=> [ "uplink_common" ],
    191 	template	=> 1,
    192 	uplink_aux_src	=> add("uplink-ia64.s"),
    193     },
    194 
    195     x86_asm => {
    196 	template	=> 1,
    197 	cpuid_asm_src	=> "x86cpuid.s",
    198 	bn_asm_src	=> "bn-586.s co-586.s x86-mont.s x86-gf2m.s",
    199 	ec_asm_src	=> "ecp_nistz256.c ecp_nistz256-x86.s",
    200 	des_asm_src	=> "des-586.s crypt586.s",
    201 	aes_asm_src	=> "aes_core.c aes_cbc.c vpaes-x86.s aesni-x86.s",
    202 	bf_asm_src	=> "bf-586.s",
    203 	md5_asm_src	=> "md5-586.s",
    204 	cast_asm_src	=> "cast-586.s",
    205 	sha1_asm_src	=> "sha1-586.s sha256-586.s sha512-586.s",
    206 	rc4_asm_src	=> "rc4-586.s",
    207 	rmd160_asm_src	=> "rmd-586.s",
    208 	rc5_asm_src	=> "rc5-586.s",
    209 	wp_asm_src	=> "wp_block.c wp-mmx.s",
    210 	cmll_asm_src	=> "cmll-x86.s",
    211 	modes_asm_src	=> "ghash-x86.s",
    212 	padlock_asm_src	=> "e_padlock-x86.s",
    213 	chacha_asm_src	=> "chacha-x86.s",
    214 	poly1305_asm_src=> "poly1305-x86.s",
    215     },
    216     x86_elf_asm => {
    217 	template	=> 1,
    218 	inherit_from	=> [ "x86_asm" ],
    219 	perlasm_scheme	=> "elf"
    220     },
    221     x86_64_asm => {
    222 	template	=> 1,
    223 	cpuid_asm_src   => "x86_64cpuid.s",
    224 	bn_asm_src      => "asm/x86_64-gcc.c x86_64-mont.s x86_64-mont5.s x86_64-gf2m.s rsaz_exp.c rsaz-x86_64.s rsaz-avx2.s",
    225 	ec_asm_src      => "ecp_nistz256.c ecp_nistz256-x86_64.s x25519-x86_64.s",
    226 	aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
    227 	md5_asm_src     => "md5-x86_64.s",
    228 	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",
    229 	rc4_asm_src     => "rc4-x86_64.s rc4-md5-x86_64.s",
    230 	wp_asm_src      => "wp-x86_64.s",
    231 	cmll_asm_src    => "cmll-x86_64.s cmll_misc.c",
    232 	modes_asm_src   => "ghash-x86_64.s aesni-gcm-x86_64.s",
    233 	padlock_asm_src => "e_padlock-x86_64.s",
    234 	chacha_asm_src	=> "chacha-x86_64.s",
    235 	poly1305_asm_src=> "poly1305-x86_64.s",
    236 	keccak1600_asm_src	=> "keccak1600-x86_64.s",
    237     },
    238     ia64_asm => {
    239 	template	=> 1,
    240 	cpuid_asm_src   => "ia64cpuid.s",
    241 	bn_asm_src      => "bn-ia64.s ia64-mont.s",
    242 	aes_asm_src     => "aes_core.c aes_cbc.c aes-ia64.s",
    243 	sha1_asm_src    => "sha1-ia64.s sha256-ia64.s sha512-ia64.s",
    244 	modes_asm_src   => "ghash-ia64.s",
    245 	perlasm_scheme	=> "void"
    246     },
    247     sparcv9_asm => {
    248 	template	=> 1,
    249 	cpuid_asm_src   => "sparcv9cap.c sparccpuid.S",
    250 	bn_asm_src      => "asm/sparcv8plus.S sparcv9-mont.S sparcv9a-mont.S vis3-mont.S sparct4-mont.S sparcv9-gf2m.S",
    251 	ec_asm_src      => "ecp_nistz256.c ecp_nistz256-sparcv9.S",
    252 	des_asm_src     => "des_enc-sparc.S fcrypt_b.c dest4-sparcv9.S",
    253 	aes_asm_src     => "aes_core.c aes_cbc.c aes-sparcv9.S aest4-sparcv9.S aesfx-sparcv9.S",
    254 	md5_asm_src     => "md5-sparcv9.S",
    255 	sha1_asm_src    => "sha1-sparcv9.S sha256-sparcv9.S sha512-sparcv9.S",
    256 	cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c cmllt4-sparcv9.S",
    257 	modes_asm_src   => "ghash-sparcv9.S",
    258 	poly1305_asm_src=> "poly1305-sparcv9.S",
    259 	perlasm_scheme	=> "void"
    260     },
    261     sparcv8_asm => {
    262 	template	=> 1,
    263 	cpuid_asm_src   => "",
    264 	bn_asm_src      => "asm/sparcv8.S",
    265 	des_asm_src     => "des_enc-sparc.S fcrypt_b.c",
    266 	perlasm_scheme	=> "void"
    267     },
    268     alpha_asm => {
    269 	template	=> 1,
    270 	cpuid_asm_src   => "alphacpuid.s",
    271 	bn_asm_src      => "bn_asm.c alpha-mont.S",
    272 	sha1_asm_src    => "sha1-alpha.S",
    273 	modes_asm_src   => "ghash-alpha.S",
    274 	perlasm_scheme	=> "void"
    275     },
    276     mips32_asm => {
    277 	template	=> 1,
    278 	bn_asm_src      => "bn-mips.S mips-mont.S",
    279 	aes_asm_src     => "aes_cbc.c aes-mips.S",
    280 	sha1_asm_src    => "sha1-mips.S sha256-mips.S",
    281     },
    282     mips64_asm => {
    283 	inherit_from	=> [ "mips32_asm" ],
    284 	template	=> 1,
    285 	sha1_asm_src    => add("sha512-mips.S"),
    286 	poly1305_asm_src=> "poly1305-mips.S",
    287     },
    288     s390x_asm => {
    289 	template	=> 1,
    290 	cpuid_asm_src   => "s390xcap.c s390xcpuid.S",
    291 	bn_asm_src      => "asm/s390x.S s390x-mont.S s390x-gf2m.s",
    292 	aes_asm_src     => "aes-s390x.S aes-ctr.fake aes-xts.fake",
    293 	sha1_asm_src    => "sha1-s390x.S sha256-s390x.S sha512-s390x.S",
    294 	rc4_asm_src     => "rc4-s390x.s",
    295 	modes_asm_src   => "ghash-s390x.S",
    296 	chacha_asm_src  => "chacha-s390x.S",
    297 	poly1305_asm_src=> "poly1305-s390x.S",
    298 	keccak1600_asm_src	=> "keccak1600-s390x.S",
    299     },
    300     armv4_asm => {
    301 	template	=> 1,
    302 	cpuid_asm_src   => "armcap.c armv4cpuid.S",
    303 	bn_asm_src      => "bn_asm.c armv4-mont.S armv4-gf2m.S",
    304 	ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv4.S",
    305 	aes_asm_src     => "aes_cbc.c aes-armv4.S bsaes-armv7.S aesv8-armx.S",
    306 	sha1_asm_src    => "sha1-armv4-large.S sha256-armv4.S sha512-armv4.S",
    307 	modes_asm_src   => "ghash-armv4.S ghashv8-armx.S",
    308 	chacha_asm_src  => "chacha-armv4.S",
    309 	poly1305_asm_src=> "poly1305-armv4.S",
    310 	keccak1600_asm_src	=> "keccak1600-armv4.S",
    311 	perlasm_scheme	=> "void"
    312     },
    313     aarch64_asm => {
    314 	template	=> 1,
    315 	cpuid_asm_src   => "armcap.c arm64cpuid.S",
    316 	ec_asm_src      => "ecp_nistz256.c ecp_nistz256-armv8.S",
    317 	bn_asm_src      => "bn_asm.c armv8-mont.S",
    318 	aes_asm_src     => "aes_core.c aes_cbc.c aesv8-armx.S vpaes-armv8.S",
    319 	sha1_asm_src    => "sha1-armv8.S sha256-armv8.S sha512-armv8.S",
    320 	modes_asm_src   => "ghashv8-armx.S",
    321 	chacha_asm_src  => "chacha-armv8.S",
    322 	poly1305_asm_src=> "poly1305-armv8.S",
    323 	keccak1600_asm_src	=> "keccak1600-armv8.S",
    324     },
    325     parisc11_asm => {
    326 	template	=> 1,
    327 	cpuid_asm_src   => "pariscid.s",
    328 	bn_asm_src      => "bn_asm.c parisc-mont.s",
    329 	aes_asm_src     => "aes_core.c aes_cbc.c aes-parisc.s",
    330 	sha1_asm_src    => "sha1-parisc.s sha256-parisc.s sha512-parisc.s",
    331 	rc4_asm_src     => "rc4-parisc.s",
    332 	modes_asm_src   => "ghash-parisc.s",
    333 	perlasm_scheme	=> "32"
    334     },
    335     parisc20_64_asm => {
    336 	template	=> 1,
    337 	inherit_from	=> [ "parisc11_asm" ],
    338 	perlasm_scheme	=> "64",
    339     },
    340     ppc32_asm => {
    341 	template	=> 1,
    342 	cpuid_asm_src   => "ppccpuid.s ppccap.c",
    343 	bn_asm_src      => "bn-ppc.s ppc-mont.s",
    344 	aes_asm_src     => "aes_core.c aes_cbc.c aes-ppc.s vpaes-ppc.s aesp8-ppc.s",
    345 	sha1_asm_src    => "sha1-ppc.s sha256-ppc.s sha512-ppc.s sha256p8-ppc.s sha512p8-ppc.s",
    346 	modes_asm_src   => "ghashp8-ppc.s",
    347 	chacha_asm_src	=> "chacha-ppc.s",
    348 	poly1305_asm_src=> "poly1305-ppc.s poly1305-ppcfp.s",
    349     },
    350     ppc64_asm => {
    351 	inherit_from	=> [ "ppc32_asm" ],
    352 	template	=> 1,
    353 	ec_asm_src	=> "ecp_nistz256.c ecp_nistz256-ppc64.s x25519-ppc64.s",
    354 	keccak1600_asm_src	=> "keccak1600-ppc64.s",
    355     },
    356 );
    357