## -*- mode: perl; -*-
## Standard openssl configuration targets.

# Helper functions for the Windows configs
my $vc_win64a_info = {};
sub vc_win64a_info {
    unless (%$vc_win64a_info) {
        if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) {
            $vc_win64a_info = { AS        => "nasm",
                                ASFLAGS   => "-g",
                                asflags   => "-Ox -f win64 -DNEAR",
                                asoutflag => "-o " };
        } elsif ($disabled{asm}) {
            # assembler is still used to compile uplink shim
            $vc_win64a_info = { AS        => "ml64",
                                ASFLAGS   => "/nologo /Zi",
                                asflags   => "/c /Cp /Cx",
                                asoutflag => "/Fo" };
        } else {
            $die->("NASM not found - make sure it's installed and available on %PATH%\n");
            $vc_win64a_info = { AS        => "{unknown}",
                                ASFLAGS   => "",
                                asflags   => "",
                                asoutflag => "" };
        }
    }
    return $vc_win64a_info;
}

my $vc_win32_info = {};
sub vc_win32_info {
    unless (%$vc_win32_info) {
        my $ver=`nasm -v 2>NUL`;
        my $vew=`nasmw -v 2>NUL`;
        if ($ver ne "" || $vew ne "") {
            $vc_win32_info = { AS        => $ver ge $vew ? "nasm" : "nasmw",
                               ASFLAGS   => "",
                               asflags   => "-f win32",
                               asoutflag => "-o ",
                               perlasm_scheme => "win32n" };
        } elsif ($disabled{asm}) {
            # not actually used, uplink shim is inlined into C code
            $vc_win32_info = { AS        => "ml",
                               ASFLAGS   => "/nologo /Zi",
                               asflags   => "/Cp /coff /c /Cx",
                               asoutflag => "/Fo",
                               perlasm_scheme => "win32" };
        } else {
            $die->("NASM not found - make sure it's installed and available on %PATH%\n");
            $vc_win32_info = { AS        => "{unknown}",
                               ASFLAGS   => "",
                               asflags   => "",
                               asoutflag => "",
                               perlasm_scheme => "win32" };
        }
    }
    return $vc_win32_info;
}

my $vc_wince_info = {};
sub vc_wince_info {
    unless (%$vc_wince_info) {
        # sanity check
        $die->('%OSVERSION% is not defined') if (!defined(env('OSVERSION')));
        $die->('%PLATFORM% is not defined')  if (!defined(env('PLATFORM')));
        $die->('%TARGETCPU% is not defined') if (!defined(env('TARGETCPU')));

        #
        # Idea behind this is to mimic flags set by eVC++ IDE...
        #
        my $wcevers = env('OSVERSION');                     # WCENNN
	my $wcevernum;
	my $wceverdotnum;
	if ($wcevers =~ /^WCE([1-9])([0-9]{2})$/) {
	    $wcevernum = "$1$2";
	    $wceverdotnum = "$1.$2";
	} else {
	    $die->('%OSVERSION% value is insane');
	    $wcevernum = "{unknown}";
	    $wceverdotnum = "{unknown}";
	}
        my $wcecdefs = "-D_WIN32_WCE=$wcevernum -DUNDER_CE=$wcevernum"; # -D_WIN32_WCE=NNN
        my $wcelflag = "/subsystem:windowsce,$wceverdotnum";        # ...,N.NN

        my $wceplatf =  env('PLATFORM');

        $wceplatf =~ tr/a-z0-9 /A-Z0-9_/;
        $wcecdefs .= " -DWCE_PLATFORM_$wceplatf";

        my $wcetgt = env('TARGETCPU');                      # just shorter name...
      SWITCH: for($wcetgt) {
          /^X86/        && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_";
                                $wcelflag.=" /machine:X86";     last; };
          /^ARMV4[IT]/  && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
                                $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/);
                                $wcecdefs.=" -QRarch4T -QRinterwork-return";
                                $wcelflag.=" /machine:THUMB";   last; };
          /^ARM/        && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
                                $wcelflag.=" /machine:ARM";     last; };
          /^MIPSIV/     && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
                                $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32";
                                $wcelflag.=" /machine:MIPSFPU"; last; };
          /^MIPS16/     && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
                                $wcecdefs.=" -DMIPSII -QMmips16";
                                $wcelflag.=" /machine:MIPS16";  last; };
          /^MIPSII/     && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
                                $wcecdefs.=" -QMmips2";
                                $wcelflag.=" /machine:MIPS";    last; };
          /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000";
                                $wcelflag.=" /machine:MIPS";    last; };
          /^SH[0-9]/    && do { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_ -DSHx";
                                $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/);
                                $wcelflag.=" /machine:$wcetgt"; last; };
          { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_";
            $wcelflag.=" /machine:$wcetgt";                     last; };
      }

        $vc_wince_info = { cppflags => $wcecdefs,
                           lflags => $wcelflag };
    }
    return $vc_wince_info;
}

# Helper functions for the VMS configs
my $vms_info = {};
sub vms_info {
    my $pointer_size_str = $config{target} =~ m|-p(\d+)$| ? $1 : "";

    # For the case where Configure iterate through all config targets, such
    # as when listing them and their details, we reset info if the pointer
    # size changes.
    if (%$vms_info && $vms_info->{pointer_size} ne $pointer_size_str) {
        $vms_info = {};
    }

    unless (%$vms_info) {
        $vms_info->{disable_warns} = [
            "CXXPRAGMANA",      # Shut up about unknown / unsupported pragmas
        ];
        $vms_info->{pointer_size} = $pointer_size_str;
        if ($pointer_size_str eq "64") {
            `PIPE CC /NOCROSS_REFERENCE /NOLIST /NOOBJECT /WARNINGS = DISABLE = ( MAYLOSEDATA3, EMPTYFILE ) NL: 2> NL:`;
            if ($? == 0) {
                push @{$vms_info->{disable_warns}}, "MAYLOSEDATA3";
            }
        }

        unless ($disabled{zlib}) {
            my $default_zlib = 'GNV$LIBZSHR' . $pointer_size_str;
            if (defined($disabled{"zlib-dynamic"})) {
                $vms_info->{zlib} = $withargs{zlib_lib} || "$default_zlib/SHARE";
            } else {
                $vms_info->{def_zlib} = $withargs{zlib_lib} || $default_zlib;
                # In case the --with-zlib-lib value contains something like
                # /SHARE or /LIB or so at the end, remove it.
                $vms_info->{def_zlib} =~ s|/.*$||g;
            }
        }

        if ($config{target} =~ /-ia64/) {
            `PIPE ias -H 2> NL:`;
            if ($? == 0) {
                $vms_info->{AS} = "ias";
                $vms_info->{ASFLAGS} = '-d debug';
                $vms_info->{asflags} = '"-N" vms_upcase';
                $vms_info->{asoutflag} = "-o ";
                $vms_info->{perlasm_scheme} = "ias";
            }
        }
    }
    return $vms_info;
}

my %targets = (

#### Basic configs that should work on any 32-bit box
    "gcc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O3"),
        thread_scheme    => "(unknown)",
        bn_ops           => "BN_LLONG",
    },
    "cc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => "-O",
        thread_scheme    => "(unknown)",
    },

#### VOS Configurations
    "vos-gcc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => picker(default => "-Wall",
                                   debug   => "-O0 -g",
                                   release => "-O3"),
        cppflags         => "-D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES",
        lib_cppflags     => "-DB_ENDIAN",
        thread_scheme    => "(unknown)",
        sys_id           => "VOS",
        lflags           => add("-Wl,-map"),
        bn_ops           => "BN_LLONG",
        shared_extension => ".so",
    },

#### Solaris configurations
    "solaris-common" => {
        inherit_from     => [ "BASE_unix" ],
        template         => 1,
        lib_cppflags     => "-DFILIO_H",
        ex_libs          => add("-lsocket -lnsl -ldl"),
        dso_scheme       => "dlfcn",
        thread_scheme    => "pthreads",
    },
#### Solaris common with Sun C setups
    "solaris-common-cc" => {
        inherit_from     => [ "solaris-common" ],
        template         => 1,
        shared_target    => "solaris",
        shared_ldflag    => "-Wl,-Bsymbolic",
        shared_defflag   => "-Wl,-M,",
        shared_sonameflag=> "-Wl,-h,",
    },
#### Solaris common with GNU C setups
    "solaris-common-gcc" => {
        inherit_from     => [ "solaris-common" ],
        template         => 1,
        shared_target    => "solaris-gcc-shared", # The rest is on shared_info.pl
    },
#### Solaris x86 with GNU C setups
    "solaris-x86-gcc" => {
        # NB. GNU C has to be configured to use GNU assembler, and not
        # /usr/ccs/bin/as. Failure to comply will result in compile
        # failures [at least] in 32-bit build.
        inherit_from     => [ "solaris-common-gcc" ],
        CC               => "gcc",
        CFLAGS           => add_before(picker(default => "-Wall",
                                              debug   => "-O0 -g",
                                              release => "-O3 -fomit-frame-pointer")),
        cflags           => add(threads("-pthread")),
        lib_cppflags     => add("-DL_ENDIAN"),
        ex_libs          => add(threads("-pthread")),
        bn_ops           => "BN_LLONG",
        shared_cflag     => "-fPIC",
        shared_ldflag    => add_before("-shared -static-libgcc"),
        asm_arch         => 'x86',
        perlasm_scheme   => 'elf',
    },
    "solaris64-x86_64-gcc" => {
        # -shared -static-libgcc might appear controversial, but modules
        # taken from static libgcc do not have relocations and linking
        # them into our shared objects doesn't have any negative side
        # effects. On the contrary, doing so makes it possible to use
        # gcc shared build with Sun C. Given that gcc generates faster
        # code [thanks to inline assembler], I would actually recommend
        # to consider using gcc shared build even with vendor compiler:-)
        #                        -- <appro@openssl.org>
        inherit_from     => [ "solaris-common-gcc" ],
        CC               => "gcc",
        CFLAGS           => add_before(picker(default => "-Wall",
                                              debug   => "-O0 -g",
                                              release => "-O3")),
        cflags           => add_before("-m64", threads("-pthread")),
        lib_cppflags     => add("-DL_ENDIAN"),
        ex_libs          => add(threads("-pthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf",
        shared_cflag     => "-fPIC",
        shared_ldflag    => add_before("-shared -static-libgcc"),
        multilib         => "/64",
    },

#### Solaris x86 with Sun C setups
    # There used to be solaris-x86-cc target, but it was removed,
    # primarily because vendor assembler can't assemble our modules
    # with -KPIC flag. As result it, assembly support, was not even
    # available as option. But its lack means lack of side-channel
    # resistant code, which is incompatible with security by today's
    # standards. Fortunately gcc is readily available prepackaged
    # option, which we can firmly point at...
    #
    # On related note, solaris64-x86_64-cc target won't compile code
    # paths utilizing AVX and post-Haswell instruction extensions.
    # Consider switching to solaris64-x86_64-gcc even here...
    #
    "solaris64-x86_64-cc" => {
        inherit_from     => [ "solaris-common-cc" ],
        CC               => "cc",
        CFLAGS           => add_before(picker(debug   => "-g",
                                              release => "-xO5 -xdepend -xbuiltin")),
        cflags           => add_before("-xarch=generic64 -xstrconst -Xa"),
        cppflags         => add(threads("-D_REENTRANT")),
        lib_cppflags     => add("-DL_ENDIAN"),
        thread_scheme    => "pthreads",
        lflags           => add(threads("-mt")),
        ex_libs          => add(threads("-lpthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf",
        shared_cflag     => "-KPIC",
        shared_ldflag    => add_before("-G -dy -z text"),
        multilib         => "/64",
    },

#### SPARC Solaris with GNU C setups
    "solaris-sparcv7-gcc" => {
        inherit_from     => [ "solaris-common-gcc" ],
        CC               => "gcc",
        CFLAGS           => add_before(picker(default => "-Wall",
                                              debug   => "-O0 -g",
                                              release => "-O3")),
        cflags           => add(threads("-pthread")),
        lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
        ex_libs          => add(threads("-pthread")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        shared_cflag     => "-fPIC",
        shared_ldflag    => add_before("-shared"),
    },
    "solaris-sparcv8-gcc" => {
        inherit_from     => [ "solaris-sparcv7-gcc" ],
        cflags           => add_before("-mcpu=v8"),
        asm_arch         => 'sparcv8',
        perlasm_scheme   => 'void',
    },
    "solaris-sparcv9-gcc" => {
        # -m32 should be safe to add as long as driver recognizes
        # -mcpu=ultrasparc
        inherit_from     => [ "solaris-sparcv7-gcc" ],
        cflags           => add_before("-m32 -mcpu=ultrasparc"),
        asm_arch         => 'sparcv9',
        perlasm_scheme   => 'void',
    },
    "solaris64-sparcv9-gcc" => {
        inherit_from     => [ "solaris-sparcv9-gcc" ],
        cflags           => sub { my $f=join(" ",@_); $f =~ s/\-m32/-m64/; $f; },
        bn_ops           => "BN_LLONG RC4_CHAR",
        multilib         => "/64",
    },

#### SPARC Solaris with Sun C setups
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
# SC5.0 note: Compiler common patch 107357-01 or later is required!
    "solaris-sparcv7-cc" => {
        inherit_from     => [ "solaris-common-cc" ],
        CC               => "cc",
        CFLAGS           => add_before(picker(debug   => "-g",
                                              release => "-xO5 -xdepend")),
        cflags           => add_before("-xstrconst -Xa"),
        cppflags         => add(threads("-D_REENTRANT")),
        lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
        lflags           => add(threads("-mt")),
        ex_libs          => add(threads("-lpthread")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        shared_cflag     => "-KPIC",
        shared_ldflag    => add_before("-G -dy -z text"),
    },
####
    "solaris-sparcv8-cc" => {
        inherit_from     => [ "solaris-sparcv7-cc" ],
        cflags           => add_before("-xarch=v8"),
        asm_arch         => 'sparcv8',
        perlasm_scheme   => 'void',
    },
    "solaris-sparcv9-cc" => {
        inherit_from     => [ "solaris-sparcv7-cc" ],
        cflags           => add_before("-xarch=v8plus"),
        asm_arch         => 'sparcv9',
        perlasm_scheme   => 'void',
    },
    "solaris64-sparcv9-cc" => {
        inherit_from     => [ "solaris-sparcv7-cc" ],
        cflags           => add_before("-m64 -xarch=sparc"),
        bn_ops           => "BN_LLONG RC4_CHAR",
        asm_arch         => 'sparcv9',
        perlasm_scheme   => 'void',
        multilib         => "/64",
    },

#### IRIX 6.x configs
# Only N32 and N64 ABIs are supported.
    "irix-common" => {
        inherit_from     => [ "BASE_unix" ],
        template         => 1,
        cppflags         => threads("-D_SGI_MP_SOURCE"),
        lib_cppflags     => "-DB_ENDIAN",
        ex_libs          => add(threads("-lpthread")),
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "self",
        shared_ldflag    => "-shared -Wl,-Bsymbolic",
        shared_sonameflag=> "-Wl,-soname,",
    },
    "irix-mips3-gcc" => {
        inherit_from     => [ "irix-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-g -O0",
                                   release => "-O3"),
        LDFLAGS          => "-static-libgcc",
        cflags           => "-mabi=n32",
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT",
        asm_arch         => 'mips64',
        perlasm_scheme   => "n32",
        multilib         => "32",
    },
    "irix-mips3-cc" => {
        inherit_from     => [ "irix-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "-g -O0",
                                   release => "-O2"),
        cflags           => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT",
        asm_arch         => 'mips64',
        perlasm_scheme   => "n32",
        multilib         => "32",
    },
    # N64 ABI builds.
    "irix64-mips4-gcc" => {
        inherit_from     => [ "irix-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-g -O0",
                                   release => "-O3"),
        LDFLAGS          => "-static-libgcc",
        cflags           => "-mabi=64 -mips4",
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'mips64',
        perlasm_scheme   => "64",
        multilib         => "64",
    },
    "irix64-mips4-cc" => {
        inherit_from     => [ "irix-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "-g -O0",
                                   release => "-O2"),
        cflags           => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'mips64',
        perlasm_scheme   => "64",
        multilib         => "64",
    },

#### Unified HP-UX ANSI C configs.
# Special notes:
# - Originally we were optimizing at +O4 level. It should be noted
#   that the only difference between +O3 and +O4 is global inter-
#   procedural analysis. As it has to be performed during the link
#   stage the compiler leaves behind certain pseudo-code in lib*.a
#   which might be release or even patch level specific. Generating
#   the machine code for and analyzing the *whole* program appears
#   to be *extremely* memory demanding while the performance gain is
#   actually questionable. The situation is intensified by the default
#   HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
#   which is way too low for +O4. In other words, doesn't +O3 make
#   more sense?
# - Keep in mind that the HP compiler by default generates code
#   suitable for execution on the host you're currently compiling at.
#   If the toolkit is meant to be used on various PA-RISC processors
#   consider './Configure hpux-parisc-[g]cc +DAportable'.
# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
#   32-bit message digests. (For the moment of this writing) HP C
#   doesn't seem to "digest" too many local variables (they make "him"
#   chew forever:-). For more details look-up MD32_XARRAY comment in
#   crypto/sha/sha_local.h.
# - originally there were 32-bit hpux-parisc2-* targets. They were
#   scrapped, because a) they were not interchangeable with other 32-bit
#   targets; b) performance-critical 32-bit assembly modules implement
#   even PA-RISC 2.0-specific code paths, which are chosen at run-time,
#   thus adequate performance is provided even with PA-RISC 1.1 build.
    "hpux-common" => {
        inherit_from     => [ "BASE_unix" ],
        template         => 1,
        defines          => add("_XOPEN_SOURCE", "_XOPEN_SOURCE_EXTENDED",
                                "_HPUX_ALT_XOPEN_SOCKET_API"),
        lib_cppflags     => "-DB_ENDIAN",
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",    # overridden in 32-bit PA-RISC builds
        shared_target    => "self",
        bin_lflags       => "-Wl,+s,+cdp,../:,+cdp,./:",
        shared_ldflag    => "-Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+cdp,../:,+cdp,./:",
        shared_sonameflag=> "-Wl,+h,",
    },
    "hpux-parisc-gcc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O3"),
        cflags           => add(threads("-pthread")),
        lib_cppflags     => add("-DBN_DIV2W"),
        ex_libs          => add("-ldld", threads("-pthread")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        dso_scheme       => "dl",
        shared_cflag     => "-fPIC",
        shared_ldflag    => add_before("-shared"),
        shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
    },
    "hpux-parisc1_1-gcc" => {
        inherit_from     => [ "hpux-parisc-gcc" ],
        asm_arch         => 'parisc11',
        perlasm_scheme   => "32",
        multilib         => "/pa1.1",
    },
    "hpux64-parisc2-gcc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "gcc",
        CFLAGS           => combine(picker(debug   => "-O0 -g",
                                           release => "-O3")),
        cflags           => add(threads("-pthread")),
        ex_libs          => add("-ldl", threads("-pthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        asm_arch         => 'parisc20_64',
        perlasm_scheme   => "64",
        shared_cflag     => "-fpic",
        shared_ldflag    => add_before("-shared"),
        shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
        multilib         => "/pa20_64",
    },

    # More attempts at unified 10.X and 11.X targets for HP C compiler.
    "hpux-parisc-cc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "+O0 +d -g",
                                   release => "+O3"),
        cflags           => "+Optrs_strongly_typed -Ae +ESlit",
        cppflags         => threads("-D_REENTRANT"),
        lib_cppflags     => add("-DBN_DIV2W -DMD32_XARRAY"),
        ex_libs          => add("-ldld", threads("-lpthread")),
        bn_ops           => "RC4_CHAR",
        dso_scheme       => "dl",
        shared_cflag     => "+Z",
        shared_ldflag    => add_before("-b"),
        shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
    },
    "hpux-parisc1_1-cc" => {
        inherit_from     => [ "hpux-parisc-cc" ],
        cflags           => add_before("+DA1.1"),
        asm_arch         => 'parisc11',
        perlasm_scheme   => "32",
        multilib         => "/pa1.1",
    },
    "hpux64-parisc2-cc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "+O0 +d -g",
                                   release => "+O3") ,
        cflags           => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
        cppflags         => threads("-D_REENTRANT") ,
        lib_cppflags     => add("-DMD32_XARRAY"),
        ex_libs          => add("-ldl", threads("-lpthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        asm_arch         => 'parisc20_64',
        perlasm_scheme   => "64",
        shared_cflag     => "+Z",
        shared_ldflag    => add_before("-b"),
        shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
        multilib         => "/pa20_64",
    },

    # HP/UX IA-64 targets
    "hpux-ia64-cc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "+O0 +d -g",
                                   release => "+O2"),
        cflags           => "-Ae +DD32 +Olit=all -z",
        cppflags         => add(threads("-D_REENTRANT")),
        ex_libs          => add("-ldl", threads("-lpthread")),
        bn_ops           => "SIXTY_FOUR_BIT",
        asm_arch         => 'ia64',
        perlasm_scheme   => 'void',
        shared_cflag     => "+Z",
        shared_ldflag    => add_before("-b"),
        multilib         => "/hpux32",
    },
    "hpux64-ia64-cc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "+O0 +d -g",
                                   release => "+O3"),
        cflags           => "-Ae +DD64 +Olit=all -z",
        cppflags         => threads("-D_REENTRANT"),
        ex_libs          => add("-ldl", threads("-lpthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'ia64',
        perlasm_scheme   => 'void',
        shared_cflag     => "+Z",
        shared_ldflag    => add_before("-b"),
        multilib         => "/hpux64",
    },
    # GCC builds...
    "hpux-ia64-gcc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O3"),
        cflags           => add(threads("-pthread")),
        ex_libs          => add("-ldl", threads("-pthread")),
        bn_ops           => "SIXTY_FOUR_BIT",
        asm_arch         => 'ia64',
        perlasm_scheme   => 'void',
        shared_cflag     => "-fpic",
        shared_ldflag    => add_before("-shared"),
        multilib         => "/hpux32",
    },
    "hpux64-ia64-gcc" => {
        inherit_from     => [ "hpux-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O3"),
        cflags           => combine("-mlp64", threads("-pthread")),
        ex_libs          => add("-ldl", threads("-pthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'ia64',
        perlasm_scheme   => 'void',
        shared_cflag     => "-fpic",
        shared_ldflag    => add_before("-shared"),
        multilib         => "/hpux64",
    },

#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
    "MPE/iX-gcc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => "-O3",
        cppflags         => "-D_POSIX_SOURCE -D_SOCKET_SOURCE",
        includes         => [ "/SYSLOG/PUB" ],
        lib_cppflags     => "-DBN_DIV2W",
        sys_id           => "MPE",
        lflags           => add("-L/SYSLOG/PUB"),
        ex_libs          => add("-lsyslog -lsocket -lcurses"),
        thread_scheme    => "(unknown)",
        bn_ops           => "BN_LLONG",
    },

#### DEC Alpha Tru64 targets. Tru64 is marketing name for OSF/1 version 4
#### and forward. In reality 'uname -s' still returns "OSF1". Originally
#### there were even osf1-* configs targeting prior versions provided,
#### but not anymore...
    "tru64-alpha-gcc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => "-O3",
        cflags           => add("-std=c9x", threads("-pthread")),
        cppflags         => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
        ex_libs          => add("-lrt", threads("-pthread")), # for mlock(2)
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'alpha',
        perlasm_scheme   => "void",
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "alpha-osf1-shared",
        shared_extension => ".so",
    },
    "tru64-alpha-cc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => "-tune host -fast",
        cflags           => add("-std1 -readonly_strings",
                                threads("-pthread")),
        cppflags         => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
        ex_libs          => add("-lrt", threads("-pthread")), # for mlock(2)
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'alpha',
        perlasm_scheme   => "void",
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "alpha-osf1-shared",
        shared_ldflag    => "-msym",
        shared_extension => ".so",
    },

####
#### Variety of LINUX:-)
####
# *-generic* is endian-neutral target, but ./config is free to
# throw in -D[BL]_ENDIAN, whichever appropriate...
    "linux-generic32" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CXX              => "g++",
        CFLAGS           => picker(default => "-Wall",
                                   debug   => "-O0 -g",
                                   release => "-O3"),
        CXXFLAGS         => picker(default => "-Wall",
                                   debug   => "-O0 -g",
                                   release => "-O3"),
        cflags           => threads("-pthread"),
        cxxflags         => combine("-std=c++11", threads("-pthread")),
        lib_cppflags     => "-DOPENSSL_USE_NODELETE",
        ex_libs          => add("-ldl", threads("-pthread")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        shared_ldflag    => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
        enable           => [ "afalgeng" ],
    },
    "linux-latomic" => {
        inherit_from     => [ "linux-generic32" ],
        ex_libs          => add(threads("-latomic")),
    },
    "linux-generic64" => {
        inherit_from     => [ "linux-generic32" ],
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
    },

    "linux-ppc" => {
        inherit_from     => [ "linux-latomic" ],
        asm_arch         => 'ppc32',
        perlasm_scheme   => "linux32",
        lib_cppflags     => add("-DB_ENDIAN"),
    },
    "linux-ppc64" => {
        inherit_from     => [ "linux-generic64" ],
        cflags           => add("-m64"),
        cxxflags         => add("-m64"),
        lib_cppflags     => add("-DB_ENDIAN"),
        asm_arch         => 'ppc64',
        perlasm_scheme   => "linux64",
        multilib         => "64",
    },
    "linux-ppc64le" => {
        inherit_from     => [ "linux-generic64" ],
        cflags           => add("-m64"),
        cxxflags         => add("-m64"),
        lib_cppflags     => add("-DL_ENDIAN"),
        asm_arch         => 'ppc64',
        perlasm_scheme   => "linux64le",
    },

    "linux-armv4" => {
        ################################################################
        # Note that -march is not among compiler options in linux-armv4
        # target description. Not specifying one is intentional to give
        # you choice to:
        #
        # a) rely on your compiler default by not specifying one;
        # b) specify your target platform explicitly for optimal
        # performance, e.g. -march=armv6 or -march=armv7-a;
        # c) build "universal" binary that targets *range* of platforms
        # by specifying minimum and maximum supported architecture;
        #
        # As for c) option. It actually makes no sense to specify
        # maximum to be less than ARMv7, because it's the least
        # requirement for run-time switch between platform-specific
        # code paths. And without run-time switch performance would be
        # equivalent to one for minimum. Secondly, there are some
        # natural limitations that you'd have to accept and respect.
        # Most notably you can *not* build "universal" binary for
        # big-endian platform. This is because ARMv7 processor always
        # picks instructions in little-endian order. Another similar
        # limitation is that -mthumb can't "cross" -march=armv6t2
        # boundary, because that's where it became Thumb-2. Well, this
        # limitation is a bit artificial, because it's not really
        # impossible, but it's deemed too tricky to support. And of
        # course you have to be sure that your binutils are actually
        # up to the task of handling maximum target platform. With all
        # this in mind here is an example of how to configure
        # "universal" build:
        #
        # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
        #
        inherit_from     => [ "linux-latomic" ],
        asm_arch         => 'armv4',
        perlasm_scheme   => "linux32",
    },
    "linux-aarch64" => {
        inherit_from     => [ "linux-generic64" ],
        asm_arch         => 'aarch64',
        perlasm_scheme   => "linux64",
    },
    "linux-arm64ilp32" => {  # https://wiki.linaro.org/Platform/arm64-ilp32
        inherit_from     => [ "linux-generic32" ],
        cflags           => add("-mabi=ilp32"),
        cxxflags         => add("-mabi=ilp32"),
        bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR",
        asm_arch         => 'aarch64',
        perlasm_scheme   => "linux64",
    },

    "linux-mips32" => {
        # Configure script adds minimally required -march for assembly
        # support, if no -march was specified at command line.
        inherit_from     => [ "linux-latomic" ],
        cflags           => add("-mabi=32"),
        cxxflags         => add("-mabi=32"),
        asm_arch         => 'mips32',
        perlasm_scheme   => "o32",
    },
    # mips32 and mips64 below refer to contemporary MIPS Architecture
    # specifications, MIPS32 and MIPS64, rather than to kernel bitness.
    "linux-mips64" => {
        inherit_from     => [ "linux-latomic" ],
        cflags           => add("-mabi=n32"),
        cxxflags         => add("-mabi=n32"),
        bn_ops           => "RC4_CHAR",
        asm_arch         => 'mips64',
        perlasm_scheme   => "n32",
        multilib         => "32",
    },
    "linux64-mips64" => {
        inherit_from     => [ "linux-generic64" ],
        cflags           => add("-mabi=64"),
        cxxflags         => add("-mabi=64"),
        asm_arch         => 'mips64',
        perlasm_scheme   => "64",
        multilib         => "64",
    },

    # riscv64 below refers to contemporary RISCV Architecture
    # specifications,
    "linux64-riscv64" => {
        inherit_from     => [ "linux-generic64"],
        perlasm_scheme   => "linux64",
    },

    #### IA-32 targets...
    #### These two targets are a bit aged and are to be used on older Linux
    #### machines where gcc doesn't understand -m32 and -m64
    "linux-elf" => {
        inherit_from     => [ "linux-generic32" ],
        CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf",
    },
    "linux-aout" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => add(picker(default => "-Wall",
                                       debug   => "-O0 -g",
                                       release => "-O3 -fomit-frame-pointer")),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "BN_LLONG",
        thread_scheme    => "(unknown)",
        asm_arch         => 'x86',
        perlasm_scheme   => "a.out",
    },

    #### X86 / X86_64 targets
    "linux-x86" => {
        inherit_from     => [ "linux-generic32" ],
        CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
        cflags           => add("-m32"),
        cxxflags         => add("-m32"),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf",
    },
    "linux-x86-clang" => {
        inherit_from     => [ "linux-x86" ],
        CC               => "clang",
        CXX              => "clang++",
        ex_libs          => add(threads("-latomic")),
    },
    "linux-x86_64" => {
        inherit_from     => [ "linux-generic64" ],
        cflags           => add("-m64"),
        cxxflags         => add("-m64"),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf",
        multilib         => "64",
    },
    "linux-x86_64-clang" => {
        inherit_from     => [ "linux-x86_64" ],
        CC               => "clang",
        CXX              => "clang++",
    },
    "linux-x32" => {
        inherit_from     => [ "linux-generic32" ],
        cflags           => add("-mx32"),
        cxxflags         => add("-mx32"),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf32",
        multilib         => "x32",
    },

    "linux-ia64" => {
        inherit_from     => [ "linux-generic64" ],
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'ia64',
        perlasm_scheme   => 'void',
    },

    "linux64-s390x" => {
        inherit_from     => [ "linux-generic64" ],
        cflags           => add("-m64"),
        cxxflags         => add("-m64"),
        lib_cppflags     => add("-DB_ENDIAN"),
        asm_arch         => 's390x',
        perlasm_scheme   => "64",
        multilib         => "64",
    },
    "linux32-s390x" => {
        #### So called "highgprs" target for z/Architecture CPUs
        # "Highgprs" is kernel feature first implemented in Linux
        # 2.6.32, see /proc/cpuinfo. The idea is to preserve most
        # significant bits of general purpose registers not only
        # upon 32-bit process context switch, but even on
        # asynchronous signal delivery to such process. This makes
        # it possible to deploy 64-bit instructions even in legacy
        # application context and achieve better [or should we say
        # adequate] performance. The build is binary compatible with
        # linux-generic32, and the idea is to be able to install the
        # resulting libcrypto.so alongside generic one, e.g. as
        # /lib/highgprs/libcrypto.so.x.y, for ldconfig and run-time
        # linker to autodiscover. Unfortunately it doesn't work just
        # yet, because of couple of bugs in glibc
        # sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
        #
        inherit_from     => [ "linux-generic32" ],
        cflags           => add("-m31 -Wa,-mzarch"),
        cxxflags         => add("-m31 -Wa,-mzarch"),
        lib_cppflags     => add("-DB_ENDIAN"),
        asm_arch         => 's390x',
        perlasm_scheme   => "31",
        multilib         => "/highgprs",
    },

    #### SPARC Linux setups
    "linux-sparcv8" => {
        inherit_from     => [ "linux-latomic" ],
        cflags           => add("-mcpu=v8"),
        cxxflags         => add("-mcpu=v8"),
        lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
        asm_arch         => 'sparcv8',
        perlasm_scheme   => 'void',
    },
    "linux-sparcv9" => {
        # it's a real mess with -mcpu=ultrasparc option under Linux,
        # but -Wa,-Av8plus should do the trick no matter what.
        inherit_from     => [ "linux-latomic" ],
        cflags           => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
        cxxflags         => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
        lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
        asm_arch         => 'sparcv9',
        perlasm_scheme   => 'void',
    },
    "linux64-sparcv9" => {
        # GCC 3.1 is a requirement
        inherit_from     => [ "linux-generic64" ],
        cflags           => add("-m64 -mcpu=ultrasparc"),
        cxxflags         => add("-m64 -mcpu=ultrasparc"),
        lib_cppflags     => add("-DB_ENDIAN"),
        ex_libs          => add(threads("-latomic")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        asm_arch         => 'sparcv9',
        perlasm_scheme   => 'void',
        multilib         => "64",
    },

    "linux-alpha-gcc" => {
        inherit_from     => [ "linux-generic64" ],
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'alpha',
        perlasm_scheme   => "void",
    },
    "linux-c64xplus" => {
        inherit_from     => [ "BASE_unix" ],
        # TI_CGT_C6000_7.3.x is a requirement
        CC               => "cl6x",
        CFLAGS           => "-o2 -ox -ms",
        cflags           => "--linux -ea=.s -eo=.o -mv6400+ -pden",
        cxxflags         => "--linux -ea=.s -eo=.o -mv6400+ -pden",
        cppflags         => combine("-DOPENSSL_SMALL_FOOTPRINT",
                                    threads("-D_REENTRANT")),
        bn_ops           => "BN_LLONG",
        thread_scheme    => "pthreads",
        asm_arch         => 'c64xplus',
        perlasm_scheme   => "void",
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "--pic",
        shared_ldflag    => add("-z --sysv --shared"),
        ranlib           => "true",
    },

#### *BSD
    "BSD-generic32" => {
        # As for thread cflag. Idea is to maintain "collective" set of
        # flags, which would cover all BSD flavors. -pthread applies
        # to them all, but is treated differently. OpenBSD expands is
        # as -D_POSIX_THREAD -lc_r, which is sufficient. FreeBSD 4.x
        # expands it as -lc_r, which has to be accompanied by explicit
        # -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
        # expands it as -lc_r, which seems to be sufficient?
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => picker(default => "-Wall",
                                   debug   => "-O0 -g",
                                   release => "-O3"),
        cflags           => threads("-pthread"),
        cppflags         => threads("-D_THREAD_SAFE -D_REENTRANT"),
        ex_libs          => add(threads("-pthread")),
        enable           => add("devcryptoeng"),
        bn_ops           => "BN_LLONG",
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
    },
    "BSD-generic64" => {
        inherit_from     => [ "BSD-generic32" ],
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
    },

    "BSD-x86" => {
        inherit_from     => [ "BSD-generic32" ],
        CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => "a.out",
    },
    "BSD-x86-elf" => {
        inherit_from     => [ "BSD-x86" ],
        perlasm_scheme   => "elf",
    },

    "BSD-sparcv8" => {
        inherit_from     => [ "BSD-generic32" ],
        cflags           => add("-mcpu=v8"),
        lib_cppflags     => add("-DB_ENDIAN"),
        asm_arch         => 'sparcv8',
        perlasm_scheme   => 'void',
    },
    "BSD-sparc64" => {
        # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
        # simply *happens* to work around a compiler bug in gcc 3.3.3,
        # triggered by RIPEMD160 code.
        inherit_from     => [ "BSD-generic64" ],
        lib_cppflags     => add("-DB_ENDIAN -DMD32_REG_T=int"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'sparcv9',
        perlasm_scheme   => 'void',
    },

    "BSD-ia64" => {
        inherit_from     => [ "BSD-generic64" ],
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'ia64',
        perlasm_scheme   => 'void',
    },

    "BSD-x86_64" => {
        inherit_from     => [ "BSD-generic64" ],
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "elf",
    },

    "BSD-aarch64" => {
        inherit_from     => [ "BSD-generic64" ],
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'aarch64',
        perlasm_scheme   => "linux64",
    },

    "BSD-ppc" => {
        inherit_from     => [ "BSD-generic32" ],
        asm_arch         => 'ppc32',
        perlasm_scheme   => "linux32",
        lib_cppflags     => add("-DB_ENDIAN"),
    },

    "BSD-ppc64" => {
        inherit_from     => [ "BSD-generic64" ],
        cflags           => add("-m64"),
        cxxflags         => add("-m64"),
        lib_cppflags     => add("-DB_ENDIAN"),
        asm_arch         => 'ppc64',
        perlasm_scheme   => "linux64",
    },

    "BSD-ppc64le" => {
        inherit_from     => [ "BSD-generic64" ],
        cflags           => add("-m64"),
        cxxflags         => add("-m64"),
        lib_cppflags     => add("-DL_ENDIAN"),
        asm_arch         => 'ppc64',
        perlasm_scheme   => "linux64le",
    },

    # riscv64 below refers to contemporary RISCV Architecture
    # specifications,
    "BSD-riscv64" => {
        inherit_from     => [ "BSD-generic64"],
        perlasm_scheme   => "linux64",
    },

    "bsdi-elf-gcc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => "-fomit-frame-pointer -O3 -Wall",
        lib_cppflags     => "-DPERL5 -DL_ENDIAN",
        ex_libs          => add("-ldl"),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf",
        thread_scheme    => "(unknown)",
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
    },

#### SCO/Caldera targets.
#
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
# Now we only have blended unixware-* as it's the only one used by ./config.
# If you want to optimize for particular microarchitecture, bypass ./config
# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
# Note that not all targets include assembler support. Mostly because of
# lack of motivation to support out-of-date platforms with out-of-date
# compiler drivers and assemblers.
#
# UnixWare 2.0x fails destest with -O.
    "unixware-2.0" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        cflags           => threads("-Kthread"),
        lib_cppflags     => "-DFILIO_H -DNO_STRINGS_H",
        ex_libs          => add("-lsocket -lnsl -lresolv -lx"),
        thread_scheme    => "uithreads",
    },
    "unixware-2.1" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => "-O",
        cflags           => threads("-Kthread"),
        lib_cppflags     => "-DFILIO_H",
        ex_libs          => add("-lsocket -lnsl -lresolv -lx"),
        thread_scheme    => "uithreads",
    },
    "unixware-7" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => "-O",
        cflags           => combine("-Kalloca", threads("-Kthread")),
        lib_cppflags     => "-DFILIO_H",
        ex_libs          => add("-lsocket -lnsl"),
        thread_scheme    => "uithreads",
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "svr5-shared",
        shared_cflag     => "-Kpic",
    },
    "unixware-7-gcc" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => "-O3 -fomit-frame-pointer -Wall",
        cppflags         => add(threads("-D_REENTRANT")),
        lib_cppflags     => add("-DL_ENDIAN -DFILIO_H"),
        ex_libs          => add("-lsocket -lnsl"),
        bn_ops           => "BN_LLONG",
        thread_scheme    => "pthreads",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "gnu-shared",
        shared_cflag     => "-fPIC",
    },
# SCO 5 - Ben Laurie says the -O breaks the SCO cc.
    "sco5-cc" => {
        inherit_from     => [ "BASE_unix" ],
        cc               => "cc",
        cflags           => "-belf",
        ex_libs          => add("-lsocket -lnsl"),
        thread_scheme    => "(unknown)",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "svr3-shared",
        shared_cflag     => "-Kpic",
    },
    "sco5-gcc" => {
        inherit_from     => [ "BASE_unix" ],
        cc               => "gcc",
        cflags           => "-O3 -fomit-frame-pointer",
        ex_libs          => add("-lsocket -lnsl"),
        bn_ops           => "BN_LLONG",
        thread_scheme    => "(unknown)",
        asm_arch         => 'x86',
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "svr3-shared",
        shared_cflag     => "-fPIC",
    },

#### IBM's AIX.
    # Below targets assume AIX >=5. Caveat lector. If you are accustomed
    # to control compilation "bitness" by setting $OBJECT_MODE environment
    # variable, then you should know that in OpenSSL case it's considered
    # only in ./config. Once configured, build procedure remains "deaf" to
    # current value of $OBJECT_MODE.
    "aix-common" => {
        inherit_from     => [ "BASE_unix" ],
        template         => 1,
        sys_id           => "AIX",
        lib_cppflags     => "-DB_ENDIAN",
        lflags           => "-Wl,-bsvr4",
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "aix",
        module_ldflags   => "-Wl,-G,-bsymbolic,-bnoentry",
        shared_ldflag    => "-Wl,-G,-bsymbolic,-bnoentry",
        shared_defflag   => "-Wl,-bE:",
        shared_fipsflag  => "-Wl,-binitfini:_init:_cleanup",
        perl_platform    => 'AIX',
    },
    "aix-gcc" => {
        inherit_from     => [ "aix-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O"),
        cflags           => add(threads("-pthread")),
        ex_libs          => add(threads("-pthread")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        asm_arch         => 'ppc32',
        perlasm_scheme   => "aix32",
        shared_ldflag    => add_before("-shared -static-libgcc"),
        AR               => add("-X32"),
        RANLIB           => add("-X32"),
    },
    "aix64-gcc" => {
        inherit_from     => [ "aix-common" ],
        CC               => "gcc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O"),
        cflags           => combine("-maix64", threads("-pthread")),
        ex_libs          => add(threads("-pthread")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        asm_arch         => 'ppc64',
        perlasm_scheme   => "aix64",
        shared_ldflag    => add_before("-shared -static-libgcc"),
        shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)",
        AR               => add("-X64"),
        RANLIB           => add("-X64"),
    },
    "aix64-gcc-as" => {
        inherit_from     => [ "aix64-gcc" ],
        perlasm_scheme   => "aix64-as",
    },
    "aix-cc" => {
        inherit_from     => [ "aix-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O"),
        cflags           => combine("-q32 -qmaxmem=16384 -qro -qroconst",
                                    threads("-qthreaded")),
        cppflags         => threads("-D_THREAD_SAFE"),
        ex_libs          => add(threads("-lpthreads")),
        bn_ops           => "BN_LLONG RC4_CHAR",
        asm_arch         => 'ppc32',
        perlasm_scheme   => "aix32",
        shared_cflag     => "-qpic",
        AR               => add("-X32"),
        RANLIB           => add("-X32"),
    },
    "aix64-cc" => {
        inherit_from     => [ "aix-common" ],
        CC               => "cc",
        CFLAGS           => picker(debug   => "-O0 -g",
                                   release => "-O"),
        cflags           => combine("-q64 -qmaxmem=16384 -qro -qroconst",
                                    threads("-qthreaded")),
        cppflags         => threads("-D_THREAD_SAFE"),
        ex_libs          => add(threads("-lpthreads")),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        asm_arch         => 'ppc64',
        perlasm_scheme   => "aix64",
        dso_scheme       => "dlfcn",
        shared_cflag     => "-qpic",
        shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)",
        AR               => add("-X64"),
        RANLIB           => add("-X64"),
    },

# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
    "BS2000-OSD" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "c89",
        CFLAGS           => "-O",
        cflags           => "-XLLML -XLLMK -XL",
        cppflags         => "-DCHARSET_EBCDIC",
        lib_cppflags     => "-DB_ENDIAN",
        ex_libs          => add("-lsocket -lnsl"),
        bn_ops           => "THIRTY_TWO_BIT RC4_CHAR",
        thread_scheme    => "(unknown)",
    },

#### Visual C targets
#
# Win64 targets, WIN64I denotes IA-64/Itanium and WIN64A - AMD64
#
# Note about /wd4090, disable warning C4090. This warning returns false
# positives in some situations. Disabling it altogether masks both
# legitimate and false cases, but as we compile on multiple platforms,
# we rely on other compilers to catch legitimate cases.
#
# Also note that we force threads no matter what.  Configuring "no-threads"
# is ignored.
#
# UNICODE is defined in VC-common and applies to all targets. It used to
# be an opt-in option for VC-WIN32, but not anymore. The original reason
# was because ANSI API was *native* system interface for no longer
# supported Windows 9x. Keep in mind that UNICODE only affects how
# OpenSSL libraries interact with underlying OS, it doesn't affect API
# that OpenSSL presents to application.

    "VC-common" => {
        inherit_from     => [ "BASE_Windows" ],
        template         => 1,
        CC               => "cl",
        CPP              => '"$(CC)" /EP /C',
        CFLAGS           => "/W3 /wd4090 /nologo",
        coutflag         => "/Fo",
        LD               => "link",
        LDFLAGS          => "/nologo /debug",
        ldoutflag        => "/out:",
        ldpostoutflag    => "",
        ld_resp_delim    => "\n",
        bin_lflags       => "setargv.obj",
        makedepcmd       => '"$(CC)" /Zs /showIncludes',
        makedep_scheme   => 'VC',
        AR               => "lib",
        ARFLAGS          => "/nologo",
        aroutflag        => "/out:",
        ar_resp_delim    => "\n",
        RC               => "rc",
        rcoutflag        => "/fo",
        defines          => add("OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN",
                                "UNICODE", "_UNICODE",
                                "_CRT_SECURE_NO_DEPRECATE",
                                "_WINSOCK_DEPRECATED_NO_WARNINGS"),
        lib_cflags       => add("/Zi /Fdossl_static.pdb"),
        lib_defines      => add("L_ENDIAN"),
        dso_cflags       => "/Zi /Fddso.pdb",
        bin_cflags       => "/Zi /Fdapp.pdb",
        # def_flag made to empty string so a .def file gets generated
        shared_defflag   => '',
        shared_ldflag    => "/dll",
        shared_target    => "win-shared", # meaningless except it gives Configure a hint
        lddefflag        => "/def:",
        ldresflag        => " ",
        ld_implib_flag   => "/implib:",
        thread_scheme    => "winthreads",
        dso_scheme       => "win32",
        perl_platform    => 'Windows::MSVC',
        # additional parameter to build_scheme denotes install-path "flavour"
        build_scheme     => add("VC-common", { separator => undef }),
    },
    "VC-noCE-common" => {
        inherit_from     => [ "VC-common" ],
        template         => 1,
        CFLAGS           => add(picker(debug   => '/Od',
                                       release => '/O2')),
        cflags           => add(picker(default => '/Gs0 /GF /Gy',
                                       debug   =>
                                       sub {
                                           ($disabled{shared} ? "" : "/MDd");
                                       },
                                       release =>
                                       sub {
                                           ($disabled{shared} ? "" : "/MD");
                                       })),
        defines          => add(picker(default => [], # works as type cast
                                       debug   => [ "DEBUG", "_DEBUG" ])),
        lib_cflags       => add(sub { $disabled{shared} ? "/MT /Zl" : () }),
        # Following might/should appears controversial, i.e. defining
        # /MDd without evaluating $disabled{shared}. It works in
        # non-shared build because static library is compiled with /Zl
        # and bares no reference to specific RTL. And it works in
        # shared build because multiple /MDd options are not prohibited.
        # But why /MDd in static build? Well, basically this is just a
        # reference point, which allows to catch eventual errors that
        # would prevent those who want to wrap OpenSSL into own .DLL.
        # Why not /MD in release build then? Well, some are likely to
        # prefer [non-debug] openssl.exe to be free from Micorosoft RTL
        # redistributable.
        bin_cflags       => add(picker(debug   => "/MDd",
                                       release => sub { $disabled{shared} ? "/MT" : () },
                                      )),
        bin_lflags       => add("/subsystem:console /opt:ref"),
        ex_libs          => add(sub {
            my @ex_libs = ();
            push @ex_libs, 'ws2_32.lib' unless $disabled{sock};
            push @ex_libs, 'gdi32.lib advapi32.lib crypt32.lib user32.lib';
            return join(" ", @ex_libs);
        }),
    },
    "VC-WIN64-common" => {
        inherit_from     => [ "VC-noCE-common" ],
        template         => 1,
        ex_libs          => add(sub {
            my @ex_libs = ();
            push @ex_libs, 'bufferoverflowu.lib' if (`cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
            return join(" ", @_, @ex_libs);
        }),
        bn_ops           => add("SIXTY_FOUR_BIT"),
    },
    "VC-WIN64I" => {
        inherit_from     => [ "VC-WIN64-common" ],
        AS               => "ias",
        ASFLAGS          => "-d debug",
        asoutflag        => "-o ",
        sys_id           => "WIN64I",
        uplink_arch      => 'ia64',
        asm_arch         => 'ia64',
        perlasm_scheme   => "ias",
        multilib         => "-ia64",
    },
    "VC-WIN64A" => {
        inherit_from     => [ "VC-WIN64-common" ],
        AS               => sub { vc_win64a_info()->{AS} },
        ASFLAGS          => sub { vc_win64a_info()->{ASFLAGS} },
        asoutflag        => sub { vc_win64a_info()->{asoutflag} },
        asflags          => sub { vc_win64a_info()->{asflags} },
        sys_id           => "WIN64A",
        uplink_arch      => 'x86_64',
        asm_arch         => 'x86_64',
        perlasm_scheme   => "auto",
        multilib         => "-x64",
    },
    "VC-WIN32" => {
        inherit_from     => [ "VC-noCE-common" ],
        AS               => sub { vc_win32_info()->{AS} },
        ASFLAGS          => sub { vc_win32_info()->{ASFLAGS} },
        asoutflag        => sub { vc_win32_info()->{asoutflag} },
        asflags          => sub { vc_win32_info()->{asflags} },
        sys_id           => "WIN32",
        bn_ops           => add("BN_LLONG"),
        uplink_arch      => 'common',
        asm_arch         => 'x86',
        perlasm_scheme   => sub { vc_win32_info()->{perlasm_scheme} },
        # "WOW" stands for "Windows on Windows", and "VC-WOW" engages
        # some installation path heuristics in windows-makefile.tmpl...
        build_scheme     => add("VC-WOW", { separator => undef }),
    },
    "VC-CE" => {
        inherit_from     => [ "VC-common" ],
        CFLAGS           => add(picker(debug   => "/Od",
                                       release => "/O1i")),
        CPPDEFINES       => picker(debug   => [ "DEBUG", "_DEBUG" ]),
        LDFLAGS          => add("/nologo /opt:ref"),
        cflags           =>
            combine('/GF /Gy',
                    sub { vc_wince_info()->{cflags}; },
                    sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
                              ? ($disabled{shared} ? " /MT" : " /MD")
                              : " /MC"; }),
        cppflags         => sub { vc_wince_info()->{cppflags}; },
        lib_defines      => add("NO_CHMOD", "OPENSSL_SMALL_FOOTPRINT"),
        lib_cppflags     => sub { vc_wince_info()->{cppflags}; },
        includes         =>
            add(combine(sub { defined(env('WCECOMPAT'))
                              ? '$(WCECOMPAT)/include' : (); },
                        sub { defined(env('PORTSDK_LIBPATH'))
                                  ? '$(PORTSDK_LIBPATH)/../../include'
                                  : (); })),
        lflags           => add(combine(sub { vc_wince_info()->{lflags}; },
                                        sub { defined(env('PORTSDK_LIBPATH'))
                                                  ? "/entry:mainCRTstartup" : (); })),
        sys_id           => "WINCE",
        bn_ops           => add("BN_LLONG"),
        ex_libs          => add(sub {
            my @ex_libs = ();
            push @ex_libs, 'ws2.lib' unless $disabled{sock};
            push @ex_libs, 'crypt32.lib';
            if (defined(env('WCECOMPAT'))) {
                my $x = '$(WCECOMPAT)/lib';
                if (-f "$x/env('TARGETCPU')/wcecompatex.lib") {
                    $x .= '/$(TARGETCPU)/wcecompatex.lib';
                } else {
                    $x .= '/wcecompatex.lib';
                }
                push @ex_libs, $x;
            }
            push @ex_libs, '$(PORTSDK_LIBPATH)/portlib.lib'
                if (defined(env('PORTSDK_LIBPATH')));
            push @ex_libs, '/nodefaultlib coredll.lib corelibc.lib'
                if (env('TARGETCPU') =~ /^X86|^ARMV4[IT]/);
            return join(" ", @ex_libs);
        }),
    },

#### MinGW
    "mingw-common" => {
        inherit_from     => [ 'BASE_unix' ],
        template         => 1,
        CC               => "gcc",
        CFLAGS           => picker(default => "-Wall",
                                   debug   => "-g -O0",
                                   release => "-O3"),
        cppflags         => combine("-DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN",
                                    threads("-D_MT")),
        lib_cppflags     => "-DL_ENDIAN",
        ex_libs          => add("-lws2_32 -lgdi32 -lcrypt32"),
        thread_scheme    => "winthreads",
        dso_scheme       => "win32",
        shared_target    => "mingw-shared",
        shared_cppflags  => add("_WINDLL"),
        shared_ldflag    => "-static-libgcc",

        perl_platform    => 'mingw',
    },
    "mingw" => {
        inherit_from     => [ "mingw-common" ],
        CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
        cflags           => "-m32",
        sys_id           => "MINGW32",
        bn_ops           => add("BN_LLONG"),
        asm_arch         => 'x86',
        uplink_arch      => 'x86',
        perlasm_scheme   => "coff",
        shared_rcflag    => "--target=pe-i386",
        multilib         => "",
    },
    "mingw64" => {
        # As for uplink_arch. Applink makes it possible to use
        # .dll compiled with one compiler with application compiled with
        # another compiler. It's possible to engage Applink support in
        # mingw64 build, but it's not done, because until mingw64
        # supports structured exception handling, one can't seriously
        # consider its binaries for using with non-mingw64 run-time
        # environment. And as mingw64 is always consistent with itself,
        # Applink is never engaged and can as well be omitted.
        inherit_from     => [ "mingw-common" ],
        cflags           => "-m64",
        sys_id           => "MINGW64",
        bn_ops           => add("SIXTY_FOUR_BIT"),
        asm_arch         => 'x86_64',
        uplink_arch      => undef,
        perlasm_scheme   => "mingw64",
        shared_rcflag    => "--target=pe-x86-64",
        multilib         => "64",
    },

#### UEFI
    "UEFI" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => "-O",
        lib_cppflags     => "-DL_ENDIAN",
        sys_id           => "UEFI",
    },
    "UEFI-x86" => {
        inherit_from     => [ "UEFI" ],
        asm_arch         => 'x86',
        perlasm_scheme   => "win32n",
    },
    "UEFI-x86_64" => {
        inherit_from     => [ "UEFI" ],
        asm_arch         => 'x86_64',
        perlasm_scheme   => "nasm",
    },

#### UWIN
    "UWIN" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "cc",
        CFLAGS           => "-O -Wall",
        lib_cppflags     => "-DTERMIOS -DL_ENDIAN",
        sys_id           => "UWIN",
        bn_ops           => "BN_LLONG",
        dso_scheme       => "win32",
    },

#### Cygwin
    "Cygwin-common" => {
        inherit_from     => [ "BASE_unix" ],
        template         => 1,

        CC               => "gcc",
        CFLAGS           => picker(default => "-Wall",
                                   debug   => "-g -O0",
                                   release => "-O3"),
        lib_cppflags     => "-DTERMIOS -DL_ENDIAN",
        sys_id           => "CYGWIN",
        thread_scheme    => "pthread",
        dso_scheme       => "dlfcn",
        shared_target    => "cygwin-shared",
        shared_cppflags  => "-D_WINDLL",

        perl_platform    => 'Cygwin',
    },
    "Cygwin-x86" => {
        inherit_from     => [ "Cygwin-common" ],
        CFLAGS           => add(picker(release => "-O3 -fomit-frame-pointer")),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => "coff",
    },
    "Cygwin-x86_64" => {
        inherit_from     => [ "Cygwin-common" ],
        CC               => "gcc",
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "mingw64",
    },
    # Backward compatibility for those using this target
    "Cygwin" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    # In case someone constructs the Cygwin target name themself
    "Cygwin-i386" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    "Cygwin-i486" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    "Cygwin-i586" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    "Cygwin-i686" => {
	inherit_from     => [ "Cygwin-x86" ]
    },

##### MacOS X (a.k.a. Darwin) setup
    "darwin-common" => {
        inherit_from     => [ "BASE_unix" ],
        template         => 1,
        CC               => "cc",
        CFLAGS           => picker(debug   => "-g -O0",
                                   release => "-O3"),
        cppflags         => threads("-D_REENTRANT"),
        lflags           => add("-Wl,-search_paths_first"),
        sys_id           => "MACOSX",
        bn_ops           => "BN_LLONG RC4_CHAR",
        thread_scheme    => "pthreads",
        perlasm_scheme   => "osx32",
        dso_scheme       => "dlfcn",
        ranlib           => "ranlib -c",
        shared_target    => "darwin-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".\$(SHLIB_VERSION_NUMBER).dylib",
    },
    # Option "freeze" such as -std=gnu9x can't negatively interfere
    # with future defaults for below two targets, because MacOS X
    # for PPC has no future, it was discontinued by vendor in 2009.
    "darwin-ppc-cc" => { inherit_from => [ "darwin-ppc" ] }, # Historic alias
    "darwin-ppc" => {
        inherit_from     => [ "darwin-common" ],
        cflags           => add("-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL"),
        lib_cppflags     => add("-DB_ENDIAN"),
        shared_cflag     => add("-fno-common"),
        asm_arch         => 'ppc32',
        perlasm_scheme   => "osx32",
    },
    "darwin64-ppc-cc" => { inherit_from => [ "darwin64-ppc" ] }, # Historic alias
    "darwin64-ppc" => {
        inherit_from     => [ "darwin-common" ],
        cflags           => add("-arch ppc64 -std=gnu9x"),
        lib_cppflags     => add("-DB_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        asm_arch         => 'ppc64',
        perlasm_scheme   => "osx64",
    },
    "darwin-i386-cc" => { inherit_from => [ "darwin-i386" ] }, # Historic alias
    "darwin-i386" => {
        inherit_from     => [ "darwin-common" ],
        CFLAGS           => add(picker(release => "-fomit-frame-pointer")),
        cflags           => add("-arch i386"),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "BN_LLONG RC4_INT",
        asm_arch         => 'x86',
        perlasm_scheme   => "macosx",
    },
    "darwin64-x86_64-cc" => { inherit_from => [ "darwin64-x86_64" ] }, # Historic alias
    "darwin64-x86_64" => {
        inherit_from     => [ "darwin-common" ],
        CFLAGS           => add("-Wall"),
        cflags           => add("-arch x86_64"),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'x86_64',
        perlasm_scheme   => "macosx",
    },
    "darwin64-arm64-cc" => { inherit_from => [ "darwin64-arm64" ] }, # "Historic" alias
    "darwin64-arm64" => {
        inherit_from     => [ "darwin-common" ],
        CFLAGS           => add("-Wall"),
        cflags           => add("-arch arm64"),
        lib_cppflags     => add("-DL_ENDIAN"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        asm_arch         => 'aarch64',
        perlasm_scheme   => "ios64",
    },

##### GNU Hurd
    "hurd-x86" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "gcc",
        CFLAGS           => "-O3 -fomit-frame-pointer -Wall",
        cflags           => threads("-pthread"),
        lib_cppflags     => "-DL_ENDIAN",
        ex_libs          => add("-ldl", threads("-pthread")),
        bn_ops           => "BN_LLONG",
        asm_arch         => 'x86',
        perlasm_scheme   => 'elf',
        thread_scheme    => "pthreads",
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
    },

##### VxWorks for various targets
    "vxworks-ppc60x" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccppc",
        CFLAGS           => "-O2 -Wall -fstrength-reduce",
        cflags           => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -fno-builtin -fno-strict-aliasing",
        cppflags         => combine("-D_REENTRANT -DPPC32_fp60x -DCPU=PPC32",
                                    "_DTOOL_FAMILY=gnu -DTOOL=gnu",
                                    "-I\$(WIND_BASE)/target/usr/h",
                                    "-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
        sys_id           => "VXWORKS",
        lflags           => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common"),
        ex_libs          => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
    },
    "vxworks-ppcgen" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccppc",
        CFLAGS           => "-O1 -Wall",
        cflags           => "-mrtp -msoft-float -mstrict-align -fno-builtin -fno-strict-aliasing",
        cppflags         => combine("-D_REENTRANT -DPPC32 -DCPU=PPC32",
                                    "-DTOOL_FAMILY=gnu -DTOOL=gnu",
                                    "-I\$(WIND_BASE)/target/usr/h",
                                    "-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
        sys_id           => "VXWORKS",
        lflags           => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon"),
        ex_libs          => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
    },
    "vxworks-ppc405" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccppc",
        CFLAGS           => "-g",
        cflags           => "-msoft-float -mlongcall",
        cppflags         => combine("-D_REENTRANT -DPPC32 -DCPU=PPC405",
                                    "-DTOOL_FAMILY=gnu -DTOOL=gnu",
                                    "-I\$(WIND_BASE)/target/h"),
        sys_id           => "VXWORKS",
        lflags           => add("-r"),
    },
    "vxworks-ppc750" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccppc",
        CFLAGS           => "-ansi -fvolatile -Wall \$(DEBUG_FLAG)",
        cflags           => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
        cppflags         => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
                                    "-I\$(WIND_BASE)/target/h"),
        sys_id           => "VXWORKS",
        lflags           => add("-r"),
    },
    "vxworks-ppc750-debug" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccppc",
        CFLAGS           => "-ansi -fvolatile -Wall -g",
        cflags           => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
        cppflags         => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
                                    "-DPEDANTIC -DDEBUG",
                                    "-I\$(WIND_BASE)/target/h"),
        sys_id           => "VXWORKS",
        lflags           => add("-r"),
    },
    "vxworks-ppc860" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccppc",
        cflags           => "-nostdinc -msoft-float",
        cppflags         => combine("-DCPU=PPC860 -DNO_STRINGS_H",
                                    "-I\$(WIND_BASE)/target/h"),
        sys_id           => "VXWORKS",
        lflags           => add("-r"),
    },
    "vxworks-simlinux" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccpentium",
        cflags           => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -fno-builtin -fno-defer-pop",
        cppflags         => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
                                    "-DL_ENDIAN -DCPU=SIMLINUX -DNO_STRINGS_H",
                                    "-DTOOL_FAMILY=gnu -DTOOL=gnu",
                                    "-DOPENSSL_NO_HW_PADLOCK",
                                    "-I\$(WIND_BASE)/target/h",
                                    "-I\$(WIND_BASE)/target/h/wrn/coreip"),
        sys_id           => "VXWORKS",
        lflags           => add("-r"),
        ranlib           => "ranlibpentium",
    },
    "vxworks-mips" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => "ccmips",
        CFLAGS           => "-O -G 0",
        cflags           => "-mrtp -mips2 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno-branch-likely -fno-builtin -fno-defer-pop",
        cppflags         => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
                                    "-DCPU=MIPS32 -DNO_STRINGS_H",
                                    "-DTOOL_FAMILY=gnu -DTOOL=gnu",
                                    "-DOPENSSL_NO_HW_PADLOCK",
                                    threads("-D_REENTRANT"),
                                    "-I\$(WIND_BASE)/target/h",
                                    "-I\$(WIND_BASE)/target/h/wrn/coreip"),
        sys_id           => "VXWORKS",
        lflags           => add("-L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon"),
        ex_libs          => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
        thread_scheme    => "pthreads",
        asm_arch         => 'mips32',
        perlasm_scheme   => "o32",
        ranlib           => "ranlibmips",
    },

#### uClinux
    "uClinux-dist" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => sub { env('CC') },
        cppflags         => threads("-D_REENTRANT"),
        ex_libs          => add("\$(LDLIBS)"),
        bn_ops           => "BN_LLONG",
        thread_scheme    => "pthreads",
        dso_scheme       => sub { env('LIBSSL_dlfcn') },
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        ranlib           => sub { env('RANLIB') },
    },
    "uClinux-dist64" => {
        inherit_from     => [ "BASE_unix" ],
        CC               => sub { env('CC') },
        cppflags         => threads("-D_REENTRANT"),
        ex_libs          => add("\$(LDLIBS)"),
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        thread_scheme    => "pthreads",
        dso_scheme       => sub { env('LIBSSL_dlfcn') },
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        ranlib           => sub { env('RANLIB') },
    },

    ##### VMS
    # Most things happen in vms-generic.
    # Note that vms_info extracts the pointer size from the end of
    # the target name, and will assume that anything matching /-p\d+$/
    # indicates the pointer size setting for the desired target.
    "vms-generic" => {
        inherit_from     => [ "BASE_VMS" ],
        template         => 1,
        CC               => "CC/DECC",
        CPP              => '$(CC)/PREPROCESS_ONLY=SYS$OUTPUT:',
        CFLAGS           =>
            combine(picker(default => "/STANDARD=(ISOC94,RELAXED)/NOLIST/PREFIX=ALL",
                           debug   => "/NOOPTIMIZE/DEBUG",
                           release => "/OPTIMIZE/NODEBUG"),
                    sub { my @warnings =
                              @{vms_info()->{disable_warns}};
                          @warnings
                              ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
        cflag_incfirst   => '/FIRST_INCLUDE=',
        lib_defines      =>
            add("OPENSSL_USE_NODELETE",
                sub {
                    return vms_info()->{def_zlib}
                        ? "LIBZ=\"\"\"".vms_info()->{def_zlib}."\"\"\"" : ();
                }),
        lflags           => picker(default => "/MAP='F\$PARSE(\".MAP\",\"\$\@\")'",
                                   debug   => "/DEBUG/TRACEBACK",
                                   release => "/NODEBUG/NOTRACEBACK"),
        # Because of dso_cflags below, we can't set the generic |cflags| here,
        # as it can't be overridden, so we set separate C flags for libraries
        # and binaries instead.
        bin_cflags       => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
        lib_cflags       => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
        # Strictly speaking, DSOs should not need to have name shortening,
        # as all their exported symbols should be short enough to fit the
        # linker's 31 character per symbol name limit.  However, providers
        # may be composed of more than one object file, and internal symbols
        # may and do surpass the 31 character limit.
        dso_cflags       => add("/NAMES=(SHORTENED)"),
        ex_libs          => add(sub { return vms_info()->{zlib} || (); }),
        shared_target    => "vms-shared",
        # def_flag made to empty string so a .opt file gets generated
        shared_defflag   => '',
        dso_scheme       => "vms",
        thread_scheme    => "pthreads",

        makedep_scheme   => 'VMS C',
        AS               => sub { vms_info()->{AS} },
        ASFLAGS          => sub { vms_info()->{ASFLAGS} },
        asoutflag        => sub { vms_info()->{asoutflag} },
        asflags          => sub { vms_info()->{asflags} },
        perlasm_scheme   => sub { vms_info()->{perlasm_scheme} },

        disable          => add('pinshared', 'loadereng'),

    },

    # From HELP CC/POINTER_SIZE:
    #
    # ----------
    # LONG[=ARGV] The compiler assumes 64-bit pointers. If the ARGV option to
    #             LONG or 64 is present, the main argument argv will be an
    #             array of long pointers instead of an array of short pointers.
    #
    # 64[=ARGV]   Same as LONG.
    # ----------
    #
    # We don't want the hassle of dealing with 32-bit pointers with argv, so
    # we force it to have 64-bit pointers, see the added cflags in the -p64
    # config targets below.

    "vms-alpha" => {
        inherit_from     => [ "vms-generic" ],
        bn_ops           => "SIXTY_FOUR_BIT RC4_INT",
        pointer_size     => "",
    },
    "vms-alpha-p32" => {
        inherit_from     => [ "vms-alpha" ],
        cflags           => add("/POINTER_SIZE=32"),
        pointer_size     => "32",
    },
    "vms-alpha-p64" => {
        inherit_from     => [ "vms-alpha" ],
        cflags           => add("/POINTER_SIZE=64=ARGV"),
        pointer_size     => "64",
    },
    "vms-ia64" => {
        inherit_from     => [ "vms-generic" ],
        bn_ops           => "SIXTY_FOUR_BIT RC4_INT",
        asm_arch         => sub { vms_info()->{AS} ? 'ia64' : undef },
        perlasm_scheme   => 'ias',
        pointer_size     => "",

    },
    "vms-ia64-p32" => {
        inherit_from     => [ "vms-ia64" ],
        cflags           => add("/POINTER_SIZE=32"),
        pointer_size     => "32",
    },
    "vms-ia64-p64" => {
        inherit_from     => [ "vms-ia64" ],
        cflags           => add("/POINTER_SIZE=64=ARGV"),
        pointer_size     => "64",
    },

);
