[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Mon Mar 16 21:17:48 UTC 2015


The branch master has been updated
       via  d52dcf8da7f15bf75fbf065bac2c4557470ea2fa (commit)
       via  7910044064e106073c097a6940d25fe36401266b (commit)
       via  5e1b23536a95597b537e97d045e3139be3d97cdf (commit)
       via  b124552999b0b05cdccc891191b89bf562ba2b90 (commit)
       via  70e4f10346da354915c343d37302eadaed40b1dd (commit)
       via  7d46b9426f6d40634c6d613ed5ce9247acd7b018 (commit)
       via  09816a2e339642e09c612ec48dde0754fec930d2 (commit)
       via  aaf878cc97478b2f4e1f72f344f5ab6247a8084a (commit)
      from  9b0a453190efc9b14cc04e74ce2e8e35af45fb39 (commit)


- Log -----------------------------------------------------------------
commit d52dcf8da7f15bf75fbf065bac2c4557470ea2fa
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Mar 16 22:01:01 2015 +0100

    Updated TABLE
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit 7910044064e106073c097a6940d25fe36401266b
Author: Richard Levitte <levitte at openssl.org>
Date:   Thu Mar 12 14:55:05 2015 +0100

    Find debug- targets that can be combined with their non-debug counterparts and do so
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit 5e1b23536a95597b537e97d045e3139be3d97cdf
Author: Richard Levitte <levitte at openssl.org>
Date:   Wed Mar 11 00:58:50 2015 +0100

    Change all the main configurations to the new format.
    
    As part of this, remove some levitte examples that never were relevant.
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit b124552999b0b05cdccc891191b89bf562ba2b90
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Mar 10 22:04:44 2015 +0100

    Rethink templates.
    
    Because base templates express inheritance of values, the attribute is
    renamed to 'inherit_from', and texts about this talk about 'inheritance(s)'
    rather than base templates.
    
    As they were previously implemented, base templates that were listed
    together would override one another, the first one acting as defaults for
    the next and so on.
    
    However, it was pointed out that a strength of inheritance would be to
    base configurations on several templates - for example one for CPU, one
    for operating system and one for compiler - and that requires a different
    way of combining those templates.  With this change, inherited values
    from several inheritances are concatenated by default (keep on reading).
    
    Also, in-string templates with the double-curly syntax are removed,
    replaced with the possibility to have a configuration value be a coderef
    (i.e. a 'sub { /* your code goes here */ }') that gets the list of values
    from all inheritances as the list @_.  The result of executing such a
    coderef on a list of values is assumed to become a string.  ANY OTHER
    FORM OF VALUE WILL CURRENTLY BREAK.
    
    As a matter of fact, an attribute in the current config with no value is
    assumed to have this coderef as value:
    
        sub { join(' ', @_) }
    
    While we're at it, rename debug-[cl]flags to debug_[cl]flags and
    nodebug-[cl]flags to release_[cl]flags.
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit 70e4f10346da354915c343d37302eadaed40b1dd
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri Mar 6 10:16:05 2015 +0100

    Provide a few examples by converting my own strings to hash table configurations
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit 7d46b9426f6d40634c6d613ed5ce9247acd7b018
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri Mar 6 10:01:08 2015 +0100

    Add base template processing.
    
    Base templates are templates that are used to inherit from.  They can
    loosely be compared with parent class inheritance in object orientation.
    They can be used for the same purpose as the variables with multi-field
    strings are used in old-style string configurations.
    
    Base templates are declared with the base_templates configuration
    attribute, like so:
    
    	"example_target" => {
    		base_templates => [ "x86_asm", ... ]
    		...
    	}
    
    Note: The value of base_templates MUST be an array reference (an array
    enclosed in square brackets).
    
    Any configuration target can be used as a base template by another.  It
    is also possible to have a target that's a pure template and not meant to
    be used directly as a configuration target.  Such a target is marked with
    the template configuration attribute, like so:
    
    	"example_template" => {
    		template => 1,
    		cc => "mycc",
    		...
    	},
    
    As part of this commit, all variables with multi-field strings have been
    translated to pure templates.  The variables currently remain since we
    can't expect people to shift to hash table configurations immediately.
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit 09816a2e339642e09c612ec48dde0754fec930d2
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri Mar 6 03:00:53 2015 +0100

    Add template reference processing.
    
    Template references are words with double brackets, and refer to the
    same field in the target pointed at the the double bracketed word.
    
    For example, if a target's configuration has the following entry:
    
        'cflags' => '-DFOO {{x86_debug}}'
    
    ... then {{x86_debug}} will be replaced with the 'cflags' value from
    target 'x86_debug'.
    
    Note: template references are resolved recursively, and circular
    references are not allowed
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

commit aaf878cc97478b2f4e1f72f344f5ab6247a8084a
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri Mar 6 02:00:21 2015 +0100

    Rewrite Configure to handle the target values as hash tables.
    
    The reasoning is that configuration strings are hard to read and error
    prone, and that a better way would be for them to be key => value hashes.
    
    Configure is made to be able to handle target configuration values as a
    string as well as a hash.  It also does the best it can to combine a
    "debug-foo" target with a "foo" target, given that they are similar
    except for the cflags and lflags values.  The latter are spliced into
    options that are common for "debug-foo" and "foo", options that exist
    only with "debug-foo" and options that exist only with "foo", and make
    them into combinable attributes that holds common cflags, extra cflags
    for debuggin and extra cflags for non-debugging configurations.
    
    The next step is to make it possible to have template configurations.
    
    Reviewed-by: Andy Polyakov <appro at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 Configurations/10-main.conf | 1767 +++++++++++++++++++++++++++++++++++++++----
 Configurations/90-team.conf |  367 ++++++++-
 Configure                   |  946 ++++++++++++++++++++---
 TABLE                       | 1370 ++++++++++++++++++---------------
 4 files changed, 3520 insertions(+), 930 deletions(-)

diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 9c64956..eb46789 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -4,18 +4,34 @@
 ##	make -f Makefile.org TABLE
 ## This file is interpolated by the Configure script.
 
-# Filler used for when there are no asm files.
-my $no_asm_filler="::::::::::::::::void";
-
 %targets = (
 
 # Basic configs that should work on any (32 and less bit) box
-"gcc",		"gcc:-O3::(unknown):::BN_LLONG:::",
-"cc",		"cc:-O::(unknown)::::::",
+    "gcc" => {
+        cc               => "gcc",
+        cflags           => "-O3",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG",
+    },
+    "cc" => {
+        cc               => "cc",
+        cflags           => "-O",
+        thread_cflag     => "(unknown)",
+    },
 
 ####VOS Configurations
-"vos-gcc","gcc:-O3 -Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm_filler}:::::.so:",
-"debug-vos-gcc","gcc:-O0 -g -Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm_filler}:::::.so:",
+    "vos-gcc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN",
+        debug_cflags     => "-O0 -g -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG",
+        release_cflags   => "-O3",
+        thread_cflag     => "(unknown)",
+        sys_id           => "VOS",
+        lflags           => "-Wl,-map",
+        bn_ops           => "BN_LLONG",
+        shared_extension => ".so",
+    },
 
 #### Solaris x86 with GNU C setups
 # -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
@@ -23,7 +39,19 @@ my $no_asm_filler="::::::::::::::::void";
 # surrounds it with #APP #NO_APP comment pair which (at least Solaris
 # 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
 # error message.
-"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -march=pentium -Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "solaris-x86-gcc" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -fomit-frame-pointer -march=pentium -Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 # -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,
@@ -32,46 +60,260 @@ my $no_asm_filler="::::::::::::::::void";
 # actually recommend to consider using gcc shared build even with vendor
 # compiler:-)
 #						<appro at fy.chalmers.se>
-"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
+    "solaris64-x86_64-gcc" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -O3 -Wall -DL_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64 -shared -static-libgcc",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/64",
+    },
 
 #### Solaris x86 with Sun C setups
-"solaris-x86-cc","cc:-fast -xarch=generic -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
+    "solaris-x86-cc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "-fast -xarch=generic -O -Xa",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-KPIC",
+        shared_ldflag    => "-G -dy -z text",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "solaris64-x86_64-cc" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "cc",
+        cflags           => "-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-KPIC",
+        shared_ldflag    => "-xarch=amd64 -G -dy -z text",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/64",
+    },
 
 #### SPARC Solaris with GNU C setups
-"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
-"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
+    "solaris-sparcv7-gcc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 ####
-"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "solaris-sparcv8-gcc" => {
+        inherit_from     => [ "sparcv8_asm" ],
+        cc               => "gcc",
+        cflags           => "-mv8 -Wall -DB_ENDIAN",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g",
+        release_cflags   => "-O3 -fomit-frame-pointer -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
+    "solaris-sparcv9-gcc" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "gcc",
+        cflags           => "-m32 -mcpu=ultrasparc -Wall -DB_ENDIAN -DBN_DIV2W",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -pedantic -ansi -Wshadow -Wno-long-long -D__EXTENSIONS__",
+        release_cflags   => "-O3 -fomit-frame-pointer",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "ULTRASPARC",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "solaris64-sparcv9-gcc" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "ULTRASPARC",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64 -shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        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","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
+    "solaris-sparcv7-cc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-KPIC",
+        shared_ldflag    => "-G -dy -z text",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 ####
-"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "solaris-sparcv8-cc" => {
+        inherit_from     => [ "sparcv8_asm" ],
+        cc               => "cc",
+        cflags           => "-xarch=v8 -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -g -O",
+        release_cflags   => "-xO5 -xdepend",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-KPIC",
+        shared_ldflag    => "-G -dy -z text",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "solaris-sparcv9-cc" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "cc",
+        cflags           => "-xtarget=ultra -xarch=v8plus -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -g -O",
+        release_cflags   => "-xO5 -xdepend",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "ULTRASPARC",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-KPIC",
+        shared_ldflag    => "-G -dy -z text",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "solaris64-sparcv9-cc" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "cc",
+        cflags           => "-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "ULTRASPARC",
+        lflags           => "-lsocket -lnsl -ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "solaris-shared",
+        shared_cflag     => "-KPIC",
+        shared_ldflag    => "-xarch=v9 -G -dy -z text",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/64",
+    },
 
 #### IRIX 5.x configs
 # -mips2 flag is added by ./config when appropriate.
-"irix-gcc","gcc:-O3 -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${mips32_asm}:o32:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"irix-cc", "cc:-O2 -use_readonly_const -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "irix-gcc" => {
+        inherit_from     => [ "mips32_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -DB_ENDIAN",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR",
+        perlasm_scheme   => "o32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "irix-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "irix-cc" => {
+        inherit_from     => [ "mips32_asm" ],
+        cc               => "cc",
+        cflags           => "-O2 -use_readonly_const -DB_ENDIAN",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR",
+        perlasm_scheme   => "o32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "irix-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 #### IRIX 6.x configs
 # Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
 # './Configure irix-cc -o32' manually.
-"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${mips64_asm}:n32:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
-"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${mips64_asm}:n32:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
+    "irix-mips3-gcc" => {
+        inherit_from     => [ "mips64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mabi=n32 -O3 -DB_ENDIAN -DBN_DIV3W",
+        thread_cflag     => "-D_SGI_MP_SOURCE",
+        bn_ops           => "MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT",
+        perlasm_scheme   => "n32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "irix-shared",
+        shared_ldflag    => "-mabi=n32",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "32",
+    },
+    "irix-mips3-cc" => {
+        inherit_from     => [ "mips64_asm" ],
+        cc               => "cc",
+        cflags           => "-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W",
+        thread_cflag     => "-D_SGI_MP_SOURCE",
+        bn_ops           => "DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT",
+        perlasm_scheme   => "n32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "irix-shared",
+        shared_ldflag    => "-n32",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "32",
+    },
 # N64 ABI builds.
-"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips64_asm}:64:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips64_asm}:64:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+    "irix64-mips4-gcc" => {
+        inherit_from     => [ "mips64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mabi=64 -mips4 -O3 -DB_ENDIAN -DBN_DIV3W",
+        thread_cflag     => "-D_SGI_MP_SOURCE",
+        bn_ops           => "RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG",
+        perlasm_scheme   => "64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "irix-shared",
+        shared_ldflag    => "-mabi=64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "irix64-mips4-cc" => {
+        inherit_from     => [ "mips64_asm" ],
+        cc               => "cc",
+        cflags           => "-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W",
+        thread_cflag     => "-D_SGI_MP_SOURCE",
+        bn_ops           => "RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG",
+        perlasm_scheme   => "64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "irix-shared",
+        shared_ldflag    => "-64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
 
 #### Unified HP-UX ANSI C configs.
 # Special notes:
@@ -102,36 +344,226 @@ my $no_asm_filler="::::::::::::::::void";
 #					<appro at fy.chalmers.se>
 #
 # Since there is mention of this in shlib/hpux10-cc.sh
-"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm_filler}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm_filler}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"hpux-parisc1_1-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${parisc11_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa1.1",
-"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1:".eval{my $asm=$parisc20_asm;$asm=~s/2W\./2\./;$asm=~s/:64/:32/;$asm}.":dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_32",
-"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o:::::::::::::::void:dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64",
+    "hpux-parisc-cc-o4" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldld",
+        bn_ops           => "BN_LLONG DES_PTR DES_UNROLL DES_RISC1",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "-b",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "hpux-parisc-gcc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-O3 -DB_ENDIAN -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "BN_LLONG DES_PTR DES_UNROLL DES_RISC1",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "hpux-parisc1_1-gcc" => {
+        inherit_from     => [ "parisc11_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -DB_ENDIAN -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "BN_LLONG DES_PTR DES_UNROLL DES_RISC1",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/pa1.1",
+    },
+    "hpux-parisc2-gcc" => {
+        inherit_from     => [ "parisc20_32_asm" ],
+        cc               => "gcc",
+        cflags           => "-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/pa20_32",
+    },
+    "hpux64-parisc2-gcc" => {
+        cc               => "gcc",
+        cflags           => "-O3 -DB_ENDIAN -D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT",
+        bn_obj           => "pa-risc2W.o",
+        perlasm_scheme   => "void",
+        dso_scheme       => "dlfcn",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fpic",
+        shared_ldflag    => "-shared",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/pa20_64",
+    },
 
 # More attempts at unified 10.X and 11.X targets for HP C compiler.
 #
 # Chris Ruemmler <ruemmler at cup.hp.com>
 # Kevin Steves <ks at hp.se>
-"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm_filler}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"hpux-parisc1_1-cc","cc:+DA1.1 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${parisc11_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa1.1",
-"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:".eval{my $asm=$parisc20_asm;$asm=~s/2W\./2\./;$asm=~s/:64/:32/;$asm}.":dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_32",
-"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${parisc20_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64",
+    "hpux-parisc-cc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "-b",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "hpux-parisc1_1-cc" => {
+        inherit_from     => [ "parisc11_asm" ],
+        cc               => "cc",
+        cflags           => "+DA1.1 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "-b",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/pa1.1",
+    },
+    "hpux-parisc2-cc" => {
+        inherit_from     => [ "parisc20_32_asm" ],
+        cc               => "cc",
+        cflags           => "+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "-b",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/pa20_32",
+    },
+    "hpux64-parisc2-cc" => {
+        inherit_from     => [ "parisc20_64_asm" ],
+        cc               => "cc",
+        cflags           => "+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "+DD64 -b",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/pa20_64",
+    },
 
 # HP/UX IA-64 targets
-"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32",
+    "hpux-ia64-cc" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "cc",
+        cflags           => "-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "+DD32 -b",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/hpux32",
+    },
 # Frank Geurts <frank.geurts at nl.abnamro.com> has patiently assisted with
 # with debugging of the following config.
-"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64",
+    "hpux64-ia64-cc" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "cc",
+        cflags           => "-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "+DD64 -b",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/hpux64",
+    },
 # GCC builds...
-"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32",
-"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64",
+    "hpux-ia64-gcc" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -DB_ENDIAN -D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fpic",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/hpux32",
+    },
+    "hpux64-ia64-gcc" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mlp64 -O3 -DB_ENDIAN -D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fpic",
+        shared_ldflag    => "-mlp64 -shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/hpux64",
+    },
 
 # Legacy HPUX 9.X configs...
-"hpux-cc",	"cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm_filler}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"hpux-gcc",	"gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm_filler}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "hpux-cc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z",
+        thread_cflag     => "(unknown)",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "DES_PTR DES_UNROLL DES_RISC1",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "+Z",
+        shared_ldflag    => "-b",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "hpux-gcc" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-DB_ENDIAN -DBN_DIV2W -O3",
+        thread_cflag     => "(unknown)",
+        lflags           => "-Wl,+s -ldld",
+        bn_ops           => "DES_PTR DES_UNROLL DES_RISC1",
+        dso_scheme       => "dl",
+        shared_target    => "hpux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
 #### HP MPE/iX http://jazz.external.hp.com/src/openssl/
-"MPE/iX-gcc",	"gcc:-D_ENDIAN -DBN_DIV2W -O3 -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB::(unknown):MPE:-L/SYSLOG/PUB -lsyslog -lsocket -lcurses:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:::",
+    "MPE/iX-gcc" => {
+        cc               => "gcc",
+        cflags           => "-D_ENDIAN -DBN_DIV2W -O3 -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB",
+        thread_cflag     => "(unknown)",
+        sys_id           => "MPE",
+        lflags           => "-L/SYSLOG/PUB -lsyslog -lsocket -lcurses",
+        bn_ops           => "BN_LLONG DES_PTR DES_UNROLL DES_RISC1",
+    },
 
 # DEC Alpha OSF/1/Tru64 targets.
 #
@@ -142,17 +574,70 @@ my $no_asm_filler="::::::::::::::::void";
 #
 # For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
 #
-"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
-"osf1-alpha-cc",  "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
-"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
+    "osf1-alpha-gcc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1",
+        dso_scheme       => "dlfcn",
+        shared_target    => "alpha-osf1-shared",
+        shared_extension => ".so",
+    },
+    "osf1-alpha-cc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "cc",
+        cflags           => "-std1 -tune host -O4 -readonly_strings",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK",
+        dso_scheme       => "dlfcn",
+        shared_target    => "alpha-osf1-shared",
+        shared_extension => ".so",
+    },
+    "tru64-alpha-cc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "cc",
+        cflags           => "-std1 -tune host -fast -readonly_strings",
+        thread_cflag     => "-pthread",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK",
+        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","gcc:-O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-ppc",	"gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "linux-generic32" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-Wall",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g",
+        release_cflags   => "-O3 -fomit-frame-pointer",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-ppc" => {
+        inherit_from     => [ "ppc32_asm" ],
+        cc               => "gcc",
+        cflags           => "-DB_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL",
+        perlasm_scheme   => "linux32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
 #######################################################################
 # Note that -march is not among compiler options in below linux-armv4
@@ -181,30 +666,258 @@ my $no_asm_filler="::::::::::::::::void";
 #
 #       ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
 #
-"linux-armv4",	"gcc:-O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-aarch64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "linux-armv4" => {
+        inherit_from     => [ "armv4_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-aarch64" => {
+        inherit_from     => [ "aarch64_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        perlasm_scheme   => "linux64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 # Configure script adds minimally required -march for assembly support,
 # if no -march was specified at command line. mips32 and mips64 below
 # refer to contemporary MIPS Architecture specifications, MIPS32 and
 # MIPS64, rather than to kernel bitness.
-"linux-mips32",	"gcc:-mabi=32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-mips64",   "gcc:-mabi=n32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
-"linux64-mips64",   "gcc:-mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+    "linux-mips32" => {
+        inherit_from     => [ "mips32_asm" ],
+        cc               => "gcc",
+        cflags           => "-mabi=32 -O3 -Wall -DBN_DIV3W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        perlasm_scheme   => "o32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-mips64" => {
+        inherit_from     => [ "mips64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mabi=n32 -O3 -Wall -DBN_DIV3W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        perlasm_scheme   => "n32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-mabi=n32",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "32",
+    },
+    "linux64-mips64" => {
+        inherit_from     => [ "mips64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mabi=64 -O3 -Wall -DBN_DIV3W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        perlasm_scheme   => "64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-mabi=64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
 #### IA-32 targets...
-"linux-ia32-icc",	"icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-elf",	"gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-aout",	"gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out",
+    "linux-ia32-icc" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "icc",
+        cflags           => "-DL_ENDIAN -O2",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl -no_cpprt",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-KPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-elf" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -Wall",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -g -march=i486",
+        release_cflags   => "-O3 -fomit-frame-pointer",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        debug_lflags     => "-lefence",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-aout" => {
+        inherit_from     => [ "x86_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "a.out",
+    },
 ####
-"linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-ppc64",	"gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"linux-ppc64le","gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::",
-"linux-ia64",	"gcc:-DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-ia64-icc","icc:-DL_ENDIAN -O2 -Wall::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-x86_64",	"gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"linux-x86_64-clang",	"clang:-m64 -DL_ENDIAN -O3 -Weverything $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"linux-x86_64-icc", "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"linux-x32",	"gcc:-mx32 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::x32:",
-"linux64-s390x",	"gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+    "linux-generic64" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-Wall",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g",
+        release_cflags   => "-O3",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-ppc64" => {
+        inherit_from     => [ "ppc64_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -DB_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL",
+        perlasm_scheme   => "linux64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "linux-ppc64le" => {
+        inherit_from     => [ "ppc64_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -DL_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL",
+        perlasm_scheme   => "linux64le",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-ia64" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-ia64-icc" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "icc",
+        cflags           => "-DL_ENDIAN -O2 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl -no_cpprt",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-x86_64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -DL_ENDIAN -Wall",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g",
+        release_cflags   => "-O3",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "linux-x86_64-clang" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "clang",
+        cflags           => "-m64 -DL_ENDIAN -O3 -Weverything $clang_disabled_warnings -Qunused-arguments",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "linux-x86_64-icc" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "icc",
+        cflags           => "-DL_ENDIAN -O2",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl -no_cpprt",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "linux-x32" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mx32 -DL_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-mx32",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "x32",
+    },
+    "linux64-s390x" => {
+        inherit_from     => [ "s390x_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -DB_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
 #### 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
@@ -218,16 +931,68 @@ my $no_asm_filler="::::::::::::::::void";
 # 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...
-"linux32-s390x",	"gcc:-m31 -Wa,-mzarch -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$s390x_asm;$asm=~s/bn\-s390x\.o/bn_asm.o/;$asm}.":31:dlfcn:linux-shared:-fPIC:-m31:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/highgprs",
+    "linux32-s390x" => {
+        inherit_from     => [ "s390x_32_asm" ],
+        cc               => "gcc",
+        cflags           => "-m31 -Wa,-mzarch -DB_ENDIAN -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "31",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m31",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "/highgprs",
+    },
 #### SPARC Linux setups
 # Ray Miller <ray.miller at computing-services.oxford.ac.uk> has patiently
 # assisted with debugging of following two configs.
-"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "linux-sparcv8" => {
+        inherit_from     => [ "sparcv8_asm" ],
+        cc               => "gcc",
+        cflags           => "-mv8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 # it's a real mess with -mcpu=ultrasparc option under Linux, but
 # -Wa,-Av8plus should do the trick no matter what.
-"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "linux-sparcv9" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "gcc",
+        cflags           => "-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "ULTRASPARC",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m32",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 # GCC 3.1 is a requirement
-"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+    "linux64-sparcv9" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "gcc",
+        cflags           => "-m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "ULTRASPARC",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
 #### Alpha Linux with GNU C and Compaq C setups
 # Special notes:
 # - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
@@ -238,44 +1003,270 @@ my $no_asm_filler="::::::::::::::::void";
 #   compiler is free to issue instructions which gonna make elder CPU
 #   choke. If you wish to build "blended" toolkit, add -arch generic
 #   *after* -fast and invoke './Configure linux-alpha-ccc' manually.
-"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
-"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
+    "linux-alpha-gcc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -DL_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-alpha+bwx-gcc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -DL_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "linux-alpha-ccc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "ccc",
+        cflags           => "-fast -readonly_strings -DL_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL",
+    },
+    "linux-alpha+bwx-ccc" => {
+        inherit_from     => [ "alpha_asm" ],
+        cc               => "ccc",
+        cflags           => "-fast -readonly_strings -DL_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL",
+    },
 #
 # TI_CGT_C6000_7.3.x is a requirement
-"linux-c64xplus","cl6x:--linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden -DOPENSSL_SMALL_FOOTPRINT::-D_REENTRANT:::BN_LLONG:c64xpluscpuid.o:bn-c64xplus.o c64xplus-gf2m.o:::aes-c64xplus.o aes_cbc.o aes_ctr.o:::sha1-c64xplus.o sha256-c64xplus.o sha512-c64xplus.o::rc4-c64xplus.o:::::ghash-c64xplus.o::void:dlfcn:linux-shared:--pic:-z --sysv --shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):true",
+    "linux-c64xplus" => {
+        cc               => "cl6x",
+        cflags           => "--linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden -DOPENSSL_SMALL_FOOTPRINT",
+        thread_cflag     => "-D_REENTRANT",
+        bn_ops           => "BN_LLONG",
+        cpuid_obj        => "c64xpluscpuid.o",
+        bn_obj           => "bn-c64xplus.o c64xplus-gf2m.o",
+        aes_obj          => "aes-c64xplus.o aes_cbc.o aes_ctr.o",
+        sha1_obj         => "sha1-c64xplus.o sha256-c64xplus.o sha512-c64xplus.o",
+        rc4_obj          => "rc4-c64xplus.o",
+        modes_obj        => "ghash-c64xplus.o",
+        perlasm_scheme   => "void",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "--pic",
+        shared_ldflag    => "-z --sysv --shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        ranlib           => "true",
+    },
 
 # Android: linux-* but without pointers to headers and libs.
-"android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"android-mips","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "android" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "android-x86" => {
+        inherit_from     => [ "android_x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "android-armv7" => {
+        inherit_from     => [ "armv4_asm" ],
+        cc               => "gcc",
+        cflags           => "-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "android-mips" => {
+        inherit_from     => [ "mips32_asm" ],
+        cc               => "gcc",
+        cflags           => "-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        perlasm_scheme   => "o32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
 #### *BSD [do see comment about ${BSDthreads} in Configure!]
-"BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm_filler}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"BSD-x86",	"gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"BSD-x86-elf",	"gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-BSD-x86-elf",	"gcc:-DL_ENDIAN -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"BSD-sparcv8",	"gcc:-DB_ENDIAN -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "BSD-generic32" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "BSD-x86" => {
+        inherit_from     => [ "x86_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "a.out",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "BSD-x86-elf" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -Wall",
+        debug_cflags     => "-g",
+        release_cflags   => "-O3 -fomit-frame-pointer",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "BSD-sparcv8" => {
+        inherit_from     => [ "sparcv8_asm" ],
+        cc               => "gcc",
+        cflags           => "-DB_ENDIAN -O3 -mv8 -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
-"BSD-generic64","gcc:-O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm_filler}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "BSD-generic64" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-O3 -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 # -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.
-"BSD-sparc64",	"gcc:-DB_ENDIAN -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:${sparcv9_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"BSD-ia64",	"gcc:-DL_ENDIAN -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"BSD-x86_64",	"gcc:-DL_ENDIAN -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "BSD-sparc64" => {
+        inherit_from     => [ "sparcv9_asm" ],
+        cc               => "gcc",
+        cflags           => "-DB_ENDIAN -O3 -DMD32_REG_T=int -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "BSD-ia64" => {
+        inherit_from     => [ "ia64_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O3 -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "BSD-x86_64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O3 -Wall",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
-"bsdi-elf-gcc",     "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "bsdi-elf-gcc" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall",
+        thread_cflag     => "(unknown)",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
-"nextstep",	"cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
-"nextstep3.3",	"cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
+    "nextstep" => {
+        cc               => "cc",
+        cflags           => "-O -Wall",
+        unistd           => "<libc.h>",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+    },
+    "nextstep3.3" => {
+        cc               => "cc",
+        cflags           => "-O3 -Wall",
+        unistd           => "<libc.h>",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+    },
 
 # QNX
-"qnx4",	"cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
-"QNX6",       "gcc:::::-lsocket::${no_asm_filler}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"QNX6-i386",  "gcc:-DL_ENDIAN -O2 -Wall::::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "qnx4" => {
+        cc               => "cc",
+        cflags           => "-DL_ENDIAN -DTERMIO",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "${x86_gcc_des} ${x86_gcc_opts}",
+    },
+    "QNX6" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        lflags           => "-lsocket",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "QNX6-i386" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O2 -Wall",
+        lflags           => "-lsocket",
+        bn_ops           => "${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
 #### SCO/Caldera targets.
 #
@@ -289,31 +1280,160 @@ my $no_asm_filler="::::::::::::::::void";
 # patiently assisted to debug most of it.
 #
 # UnixWare 2.0x fails destest with -O.
-"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
-"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
-"unixware-7","cc:-O -DFILIO_H -Kalloca::-Kthread::-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}:${x86_elf_asm}-1:dlfcn:svr5-shared:-Kpic::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"unixware-7-gcc","gcc:-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -march=pentium -Wall::-D_REENTRANT::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}-1:dlfcn:gnu-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "unixware-2.0" => {
+        cc               => "cc",
+        cflags           => "-DFILIO_H -DNO_STRINGS_H",
+        thread_cflag     => "-Kthread",
+        lflags           => "-lsocket -lnsl -lresolv -lx",
+        bn_ops           => "${x86_gcc_des} ${x86_gcc_opts}",
+    },
+    "unixware-2.1" => {
+        cc               => "cc",
+        cflags           => "-O -DFILIO_H",
+        thread_cflag     => "-Kthread",
+        lflags           => "-lsocket -lnsl -lresolv -lx",
+        bn_ops           => "${x86_gcc_des} ${x86_gcc_opts}",
+    },
+    "unixware-7" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "cc",
+        cflags           => "-O -DFILIO_H -Kalloca",
+        thread_cflag     => "-Kthread",
+        lflags           => "-lsocket -lnsl",
+        bn_ops           => "BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}",
+        perlasm_scheme   => "elf-1",
+        dso_scheme       => "dlfcn",
+        shared_target    => "svr5-shared",
+        shared_cflag     => "-Kpic",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "unixware-7-gcc" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -march=pentium -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-lsocket -lnsl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "elf-1",
+        dso_scheme       => "dlfcn",
+        shared_target    => "gnu-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 # SCO 5 - Ben Laurie <ben at algroup.co.uk> says the -O breaks the SCO cc.
-"sco5-cc",  "cc:-belf::(unknown)::-lsocket -lnsl:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}-1:dlfcn:svr3-shared:-Kpic::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"sco5-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown)::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}-1:dlfcn:svr3-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    "sco5-cc" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "cc",
+        cflags           => "-belf",
+        thread_cflag     => "(unknown)",
+        lflags           => "-lsocket -lnsl",
+        bn_ops           => "${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "elf-1",
+        dso_scheme       => "dlfcn",
+        shared_target    => "svr3-shared",
+        shared_cflag     => "-Kpic",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "sco5-gcc" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-O3 -fomit-frame-pointer",
+        thread_cflag     => "(unknown)",
+        lflags           => "-lsocket -lnsl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "elf-1",
+        dso_scheme       => "dlfcn",
+        shared_target    => "svr3-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
 
 #### IBM's AIX.
-"aix3-cc",  "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
-"aix-gcc",  "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR:$ppc32_asm:aix32:dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X32",
-"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:$ppc64_asm:aix64:dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
+    "aix3-cc" => {
+        cc               => "cc",
+        cflags           => "-O -DB_ENDIAN -qmaxmem=16384",
+        thread_cflag     => "(unknown)",
+        sys_id           => "AIX",
+        bn_ops           => "BN_LLONG RC4_CHAR",
+    },
+    "aix-gcc" => {
+        inherit_from     => [ "ppc32_asm" ],
+        cc               => "gcc",
+        cflags           => "-O -DB_ENDIAN",
+        thread_cflag     => "-pthread",
+        sys_id           => "AIX",
+        bn_ops           => "BN_LLONG RC4_CHAR",
+        perlasm_scheme   => "aix32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "aix-shared",
+        shared_ldflag    => "-shared -Wl,-G",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        arflags          => "-X32",
+    },
+    "aix64-gcc" => {
+        inherit_from     => [ "ppc64_asm" ],
+        cc               => "gcc",
+        cflags           => "-maix64 -O -DB_ENDIAN",
+        thread_cflag     => "-pthread",
+        sys_id           => "AIX",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        perlasm_scheme   => "aix64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "aix-shared",
+        shared_ldflag    => "-maix64 -shared -Wl,-G",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        arflags          => "-X64",
+    },
 # Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
 # at build time. $OBJECT_MODE is respected at ./config stage!
-"aix-cc",   "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR:$ppc32_asm:aix32:dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
-"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:$ppc64_asm:aix64:dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
+    "aix-cc" => {
+        inherit_from     => [ "ppc32_asm" ],
+        cc               => "cc",
+        cflags           => "-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst",
+        thread_cflag     => "-qthreaded -D_THREAD_SAFE",
+        sys_id           => "AIX",
+        bn_ops           => "BN_LLONG RC4_CHAR",
+        perlasm_scheme   => "aix32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "aix-shared",
+        shared_ldflag    => "-q32 -G",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        arflags          => "-X 32",
+    },
+    "aix64-cc" => {
+        inherit_from     => [ "ppc64_asm" ],
+        cc               => "cc",
+        cflags           => "-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst",
+        thread_cflag     => "-qthreaded -D_THREAD_SAFE",
+        sys_id           => "AIX",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        perlasm_scheme   => "aix64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "aix-shared",
+        shared_ldflag    => "-q64 -G",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        arflags          => "-X 64",
+    },
 
 # SIEMENS BS2000/OSD: an EBCDIC-based mainframe
-"BS2000-OSD","c89:-O -XLLML -XLLMK -XL -DB_ENDIAN -DCHARSET_EBCDIC::(unknown)::-lsocket -lnsl:THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
+    "BS2000-OSD" => {
+        cc               => "c89",
+        cflags           => "-O -XLLML -XLLMK -XL -DB_ENDIAN -DCHARSET_EBCDIC",
+        thread_cflag     => "(unknown)",
+        lflags           => "-lsocket -lnsl",
+        bn_ops           => "THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR",
+    },
 
 # OS/390 Unix an EBCDIC-based Unix system on IBM mainframe
 # You need to compile using the c89.sh wrapper in the tools directory, because the
 # IBM compiler does not like the -L switch after any object modules.
 #
-"OS390-Unix","c89.sh:-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H  -D_ALL_SOURCE::(unknown):::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
+    "OS390-Unix" => {
+        cc               => "c89.sh",
+        cflags           => "-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H  -D_ALL_SOURCE",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR",
+    },
 
 # Visual C targets
 #
@@ -323,22 +1443,90 @@ my $no_asm_filler="::::::::::::::::void";
 # 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.
-"VC-WIN64I","cl:-W3 -wd4090 -Gs0 -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o ia64-mont.o:::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ghash-ia64.o::ias:win32",
-"VC-WIN64A","cl:-W3 -wd4090 -Gs0 -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:".eval{my $asm=$x86_64_asm;$asm=~s/x86_64-gcc\.o/bn_asm.o/;$asm}.":auto:win32",
-"debug-VC-WIN64I","cl:-W3 -wd4090 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o:::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ghash-ia64.o::ias:win32",
-"debug-VC-WIN64A","cl:-W3 -wd4090 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:".eval{my $asm=$x86_64_asm;$asm=~s/x86_64-gcc\.o/bn_asm.o/;$asm}.":auto:win32",
+    "VC-WIN64I" => {
+        cc               => "cl",
+        cflags           => "-W3 -wd4090 -Gs0 -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE",
+        sys_id           => "WIN64I",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN",
+        cpuid_obj        => "ia64cpuid.o",
+        bn_obj           => "ia64.o ia64-mont.o",
+        aes_obj          => "aes_core.o aes_cbc.o aes-ia64.o",
+        md5_obj          => "md5-ia64.o",
+        sha1_obj         => "sha1-ia64.o sha256-ia64.o sha512-ia64.o",
+        modes_obj        => "ghash-ia64.o",
+        perlasm_scheme   => "ias",
+        dso_scheme       => "win32",
+    },
+    "debug-VC-WIN64I" => {
+        cc               => "cl",
+        cflags           => "-W3 -wd4090 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE",
+        sys_id           => "WIN64I",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN",
+        cpuid_obj        => "ia64cpuid.o",
+        bn_obj           => "ia64.o",
+        aes_obj          => "aes_core.o aes_cbc.o aes-ia64.o",
+        md5_obj          => "md5-ia64.o",
+        sha1_obj         => "sha1-ia64.o sha256-ia64.o sha512-ia64.o",
+        modes_obj        => "ghash-ia64.o",
+        perlasm_scheme   => "ias",
+        dso_scheme       => "win32",
+    },
+    "VC-WIN64A" => {
+        inherit_from     => [ "win_x86_64_asm" ],
+        cc               => "cl",
+        cflags           => "-W3 -wd4090 -Gs0 -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE",
+        debug_cflags     => "-Zi",
+        sys_id           => "WIN64A",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN",
+        perlasm_scheme   => "auto",
+        dso_scheme       => "win32",
+    },
 # x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
 # 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
-"VC-WIN32","cl:-W3 -wd4090 -Gs0 -GF -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
-"debug-VC-WIN32","cl:-W3 -wd4090 -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
+    "VC-WIN32" => {
+        inherit_from     => [ "x86_asm" ],
+        cc               => "cl",
+        cflags           => "-W3 -wd4090 -Gs0 -GF -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE",
+        debug_cflags     => "-Zi",
+        sys_id           => "WIN32",
+        bn_ops           => "BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}",
+        perlasm_scheme   => "win32n",
+        dso_scheme       => "win32",
+    },
 # Unified CE target
-"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm_filler}:win32",
+    "VC-CE" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cl",
+        sys_id           => "WINCE",
+        bn_ops           => "BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}",
+        dso_scheme       => "win32",
+    },
 
 # Borland C++ 4.5
-"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm_filler}:win32",
+    "BC-32" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "bcc32",
+        sys_id           => "WIN32",
+        bn_ops           => "BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN",
+        dso_scheme       => "win32",
+    },
 
 # MinGW
-"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a",
+    "mingw" => {
+        inherit_from     => [ "x86_asm" ],
+        cc               => "gcc",
+        cflags           => "-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall",
+        thread_cflag     => "-D_MT",
+        sys_id           => "MINGW32",
+        lflags           => "-lws2_32 -lgdi32 -lcrypt32",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN",
+        perlasm_scheme   => "coff",
+        dso_scheme       => "win32",
+        shared_target    => "cygwin-shared",
+        shared_cflag     => "-D_WINDLL -DOPENSSL_USE_APPLINK",
+        shared_ldflag    => "-mno-cygwin",
+        shared_extension => ".dll.a",
+    },
 # As for OPENSSL_USE_APPLINK. 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,
@@ -346,47 +1534,196 @@ my $no_asm_filler="::::::::::::::::void";
 # 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.
-"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
+    "mingw64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE",
+        thread_cflag     => "-D_MT",
+        sys_id           => "MINGW64",
+        lflags           => "-lws2_32 -lgdi32 -lcrypt32",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN",
+        perlasm_scheme   => "mingw64",
+        dso_scheme       => "win32",
+        shared_target    => "cygwin-shared",
+        shared_cflag     => "-D_WINDLL",
+        shared_ldflag    => "-mno-cygwin",
+        shared_extension => ".dll.a",
+    },
 
 # UWIN
-"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm_filler}:win32",
+    "UWIN" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "-DTERMIOS -DL_ENDIAN -O -Wall",
+        sys_id           => "UWIN",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "win32",
+    },
 
 # Cygwin
-"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:coff:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
-"Cygwin-x86_64", "gcc:-DTERMIOS -DL_ENDIAN -O3 -Wall:::CYGWIN::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:mingw64:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
+    "Cygwin" => {
+        inherit_from     => [ "x86_asm" ],
+        cc               => "gcc",
+        cflags           => "-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall",
+        sys_id           => "CYGWIN",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "coff",
+        dso_scheme       => "dlfcn",
+        shared_target    => "cygwin-shared",
+        shared_cflag     => "-D_WINDLL",
+        shared_ldflag    => "-shared",
+        shared_extension => ".dll.a",
+    },
+    "Cygwin-x86_64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "-DTERMIOS -DL_ENDIAN -O3 -Wall",
+        sys_id           => "CYGWIN",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "mingw64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "cygwin-shared",
+        shared_cflag     => "-D_WINDLL",
+        shared_ldflag    => "-shared",
+        shared_extension => ".dll.a",
+    },
 
 # NetWare from David Ward (dsward at novell.com)
 # requires either MetroWerks NLM development tools, or gcc / nlmconv
 # NetWare defaults socket bio to WinSock sockets. However,
 # the builds can be configured to use BSD sockets instead.
 # netware-clib => legacy CLib c-runtime support
-"netware-clib", "mwccnlm::::::${x86_gcc_opts}::",
-"netware-clib-bsdsock", "mwccnlm::::::${x86_gcc_opts}::",
-"netware-clib-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
-"netware-clib-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
+    "netware-clib" => {
+        cc               => "mwccnlm",
+        bn_ops           => "${x86_gcc_opts}",
+    },
+    "netware-clib-bsdsock" => {
+        cc               => "mwccnlm",
+        bn_ops           => "${x86_gcc_opts}",
+    },
+    "netware-clib-gcc" => {
+        cc               => "i586-netware-gcc",
+        cflags           => "-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall",
+        bn_ops           => "${x86_gcc_opts}",
+    },
+    "netware-clib-bsdsock-gcc" => {
+        cc               => "i586-netware-gcc",
+        cflags           => "-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall",
+        bn_ops           => "${x86_gcc_opts}",
+    },
 # netware-libc => LibC/NKS support
-"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
-"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
-"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
-"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
+    "netware-libc" => {
+        cc               => "mwccnlm",
+        bn_ops           => "BN_LLONG ${x86_gcc_opts}",
+    },
+    "netware-libc-bsdsock" => {
+        cc               => "mwccnlm",
+        bn_ops           => "BN_LLONG ${x86_gcc_opts}",
+    },
+    "netware-libc-gcc" => {
+        cc               => "i586-netware-gcc",
+        cflags           => "-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall",
+        bn_ops           => "BN_LLONG ${x86_gcc_opts}",
+    },
+    "netware-libc-bsdsock-gcc" => {
+        cc               => "i586-netware-gcc",
+        cflags           => "-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall",
+        bn_ops           => "BN_LLONG ${x86_gcc_opts}",
+    },
 
 # DJGPP
-"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIO -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:",
+    "DJGPP" => {
+        inherit_from     => [ "x86_asm" ],
+        cc               => "gcc",
+        cflags           => "-I/dev/env/WATT_ROOT/inc -DTERMIO -DL_ENDIAN -fomit-frame-pointer -O2 -Wall",
+        sys_id           => "MSDOS",
+        lflags           => "-L/dev/env/WATT_ROOT/lib -lwatt",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        perlasm_scheme   => "a.out",
+    },
 
 # Ultrix from Bernhard Simon <simon at zid.tuwien.ac.at>
-"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
-"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::BN_LLONG::::",
+    "ultrix-cc" => {
+        cc               => "cc",
+        cflags           => "-std1 -O -Olimit 2500 -DL_ENDIAN",
+        thread_cflag     => "(unknown)",
+    },
+    "ultrix-gcc" => {
+        cc               => "gcc",
+        cflags           => "-O3 -DL_ENDIAN",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG",
+    },
 # K&R C is no longer supported; you need gcc on old Ultrix installations
 ##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
 
 ##### MacOS X (a.k.a. Darwin) setup
-"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc64_asm}:osx64:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:".eval{my $asm=$x86_asm;$asm=~s/cast\-586\.o//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"debug-darwin64-x86_64-cc","cc:-arch x86_64 -ggdb -g2 -O0 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    "darwin-ppc-cc" => {
+        inherit_from     => [ "ppc32_asm" ],
+        cc               => "cc",
+        cflags           => "-arch ppc -DB_ENDIAN -Wa,-force_cpusubtype_ALL",
+        debug_cflags     => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall -O",
+        release_cflags   => "-O3",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "MACOSX",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        perlasm_scheme   => "osx32",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-arch ppc -dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
+    "darwin64-ppc-cc" => {
+        inherit_from     => [ "ppc64_asm" ],
+        cc               => "cc",
+        cflags           => "-arch ppc64 -O3 -DB_ENDIAN",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "MACOSX",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        perlasm_scheme   => "osx64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-arch ppc64 -dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
+    "darwin-i386-cc" => {
+        inherit_from     => [ "x86_asm_nocast" ],
+        cc               => "cc",
+        cflags           => "-arch i386 -DL_ENDIAN",
+        debug_cflags     => "-g3",
+        release_cflags   => "-O3 -fomit-frame-pointer",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "MACOSX",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR",
+        perlasm_scheme   => "macosx",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-arch i386 -dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
+    "darwin64-x86_64-cc" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "cc",
+        cflags           => "-arch x86_64 -DL_ENDIAN -Wall",
+        debug_cflags     => "-ggdb -g2 -O0",
+        release_cflags   => "-O3",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "MACOSX",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "macosx",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-arch x86_64 -dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
 # iPhoneOS/iOS
 #
 # It takes three prior-set environment variables to make it work:
@@ -402,30 +1739,148 @@ my $no_asm_filler="::::::::::::::::void";
 # CROSS_TOP=`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer
 # CROSS_SDK=iPhoneOS7.0.sdk
 #
-"iphoneos-cross","cc:-O3 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"ios64-cross","cc:-O3 -arch arm64 -mios-version-min=7.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:ios64:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    "iphoneos-cross" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "cc",
+        cflags           => "-O3 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fomit-frame-pointer -fno-common",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "iOS",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
+    "ios64-cross" => {
+        inherit_from     => [ "aarch64_asm" ],
+        cc               => "cc",
+        cflags           => "-O3 -arch arm64 -mios-version-min=7.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "iOS",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        perlasm_scheme   => "ios64",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
 
 ##### A/UX
-"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
+    "aux3-gcc" => {
+        cc               => "gcc",
+        cflags           => "-O2 -DTERMIO",
+        thread_cflag     => "(unknown)",
+        sys_id           => "AUX",
+        lflags           => "-lbsd",
+        bn_ops           => "RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR",
+    },
 
 ##### GNU Hurd
-"hurd-x86",  "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC",
+    "hurd-x86" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+    },
 
 ##### OS/2 EMX
-"OS2-EMX", "gcc::::::::",
+    "OS2-EMX" => {
+        cc               => "gcc",
+    },
 
 ##### VxWorks for various targets
-"vxworks-ppc60x","ccppc:-D_REENTRANT -mrtp -mhard-float -mstrict-align -fno-implicit-fp -DPPC32_fp60x -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip:::VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common:::::",
-"vxworks-ppcgen","ccppc:-D_REENTRANT -mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip:::VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon:::::",
-"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
-"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
-"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
-"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
-"vxworks-simlinux","ccpentium:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DL_ENDIAN -DCPU=SIMLINUX -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/h -I\$(WIND_BASE)/target/h/wrn/coreip -DOPENSSL_NO_HW_PADLOCK:::VXWORKS:-r::${no_asm_filler}::::::ranlibpentium:",
-"vxworks-mips","ccmips:-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DCPU=MIPS32 -msoft-float -mno-branch-likely -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/h/wrn/coreip::-D_REENTRANT:VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon::${mips32_asm}:o32::::::ranlibmips:",
+    "vxworks-ppc60x" => {
+        cc               => "ccppc",
+        cflags           => "-D_REENTRANT -mrtp -mhard-float -mstrict-align -fno-implicit-fp -DPPC32_fp60x -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall -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           => "-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common",
+    },
+    "vxworks-ppcgen" => {
+        cc               => "ccppc",
+        cflags           => "-D_REENTRANT -mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall -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           => "-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon",
+    },
+    "vxworks-ppc405" => {
+        cc               => "ccppc",
+        cflags           => "-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h",
+        sys_id           => "VXWORKS",
+        lflags           => "-r",
+    },
+    "vxworks-ppc750" => {
+        cc               => "ccppc",
+        cflags           => "-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG)",
+        sys_id           => "VXWORKS",
+        lflags           => "-r",
+    },
+    "vxworks-ppc750-debug" => {
+        cc               => "ccppc",
+        cflags           => "-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g",
+        sys_id           => "VXWORKS",
+        lflags           => "-r",
+    },
+    "vxworks-ppc860" => {
+        cc               => "ccppc",
+        cflags           => "-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h",
+        sys_id           => "VXWORKS",
+        lflags           => "-r",
+    },
+    "vxworks-simlinux" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "ccpentium",
+        cflags           => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DL_ENDIAN -DCPU=SIMLINUX -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/h -I\$(WIND_BASE)/target/h/wrn/coreip -DOPENSSL_NO_HW_PADLOCK",
+        sys_id           => "VXWORKS",
+        lflags           => "-r",
+        ranlib           => "ranlibpentium",
+    },
+    "vxworks-mips" => {
+        inherit_from     => [ "mips32_asm" ],
+        cc               => "ccmips",
+        cflags           => "-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DCPU=MIPS32 -msoft-float -mno-branch-likely -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/h/wrn/coreip",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "VXWORKS",
+        lflags           => "-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon",
+        perlasm_scheme   => "o32",
+        ranlib           => "ranlibmips",
+    },
 
 # uClinux
-"uClinux-dist","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):BN_LLONG:${no_asm_filler}:$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
-"uClinux-dist64","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):SIXTY_FOUR_BIT_LONG:${no_asm_filler}:$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
+    "uClinux-dist" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "$ENV{'CC'}",
+        cflags           => "\$(CFLAGS)",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "\$(LDFLAGS) \$(LDLIBS)",
+        bn_ops           => "BN_LLONG",
+        dso_scheme       => "$ENV{'LIBSSL_dlfcn'}",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        ranlib           => "$ENV{'RANLIB'}",
+    },
+    "uClinux-dist64" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "$ENV{'CC'}",
+        cflags           => "\$(CFLAGS)",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "\$(LDFLAGS) \$(LDLIBS)",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG",
+        dso_scheme       => "$ENV{'LIBSSL_dlfcn'}",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-shared",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        ranlib           => "$ENV{'RANLIB'}",
+    },
 
 );
diff --git a/Configurations/90-team.conf b/Configurations/90-team.conf
index cfc2b16..66d1eae 100644
--- a/Configurations/90-team.conf
+++ b/Configurations/90-team.conf
@@ -4,44 +4,333 @@
 ##	make -f Makefile.org TABLE
 ## This file is interpolated by the Configure script.
 
-# Filler used for when there are no asm files.
-my $no_asm_filler="::::::::::::::::void";
-
 %targets = (
-"purify",	"purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
-"debug",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::",
-"debug-ben",	"gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DDEBUG_SAFESTACK -O2 -pipe::(unknown):::::",
-"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
-"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
-"debug-ben-debug",	"gcc:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DOPENSSL_NO_HW_PADLOCK -g3 -O2 -pipe::(unknown)::::::",
-"debug-ben-debug-64",	"gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-ben-debug-64-clang",	"clang:$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-ben-debug-64-noopt",	"gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-ben-macos",	"cc:$gcc_devteam_warn -DOPENSSL_NO_ASM -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3 -DL_ENDIAN -g3 -pipe::(unknown)::::::",
-"debug-ben-no-opt",	"gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -Wall -g3::(unknown)::::::",
-"debug-ben-strict",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
-"debug-ben-darwin64","cc:$gcc_devteam_warn -Wno-language-extension-token -Wno-extended-offsetof -arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:$x86_64_asm:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-"debug-rse","cc:-DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
-"debug-bodo",	"gcc:$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DBN_DEBUG_RAND -DCONF_DEBUG -DBIO_PAIR_DEBUG -m64 -DL_ENDIAN -DTERMIO -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"debug-erbridge",   "gcc:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-geoff32","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-geoff64","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
-"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
-"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-linux-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:x86cpuid.o:bn-586.o co-586.o x86-mont.o::des-586.o crypt586.o:aes_x86core.o aes_cbc.o aesni-x86.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o::ghash-x86.o:e_padlock-x86.o:elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-linux-generic32","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-linux-generic64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm_filler}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-linux-x86_64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"dist",		"cc:-O::(unknown)::::::",
-"debug-test-64-clang",	"clang:$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"darwin64-debug-test-64-clang",  "clang:-arch x86_64 -DL_ENDIAN $gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:MACOSX::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    "purify" => {
+        cc               => "purify gcc",
+        cflags           => "-g -DPURIFY -Wall",
+        thread_cflag     => "(unknown)",
+        lflags           => "-lsocket -lnsl",
+    },
+    "debug" => {
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror",
+        thread_cflag     => "(unknown)",
+        lflags           => "-lefence",
+    },
+    "debug-ben" => {
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DDEBUG_SAFESTACK -O2 -pipe",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-openbsd" => {
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-openbsd-debug" => {
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-debug" => {
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DOPENSSL_NO_HW_PADLOCK -g3 -O2 -pipe",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-debug-64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-ben-debug-64-clang" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "clang",
+        cflags           => "$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-ben-debug-64-noopt" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -pipe",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-ben-macos" => {
+        cc               => "cc",
+        cflags           => "$gcc_devteam_warn -DOPENSSL_NO_ASM -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3 -DL_ENDIAN -g3 -pipe",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-no-opt" => {
+        cc               => "gcc",
+        cflags           => "-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -Wall -g3",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-strict" => {
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-ben-darwin64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "cc",
+        cflags           => "$gcc_devteam_warn -Wno-language-extension-token -Wno-extended-offsetof -arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        sys_id           => "MACOSX",
+        lflags           => "-Wl,-search_paths_first%",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "macosx",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-arch x86_64 -dynamiclib",
+        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
+    "debug-rse" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "cc",
+        cflags           => "-DL_ENDIAN -pipe -O -g -ggdb3 -Wall",
+        thread_cflag     => "(unknown)",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+    },
+    "debug-bodo" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -Wno-error=overlength-strings -DBN_DEBUG -DBN_DEBUG_RAND -DCONF_DEBUG -DBIO_PAIR_DEBUG -m64 -DL_ENDIAN -DTERMIO -g -DMD32_REG_T=int",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "debug-erbridge" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+        multilib         => "64",
+    },
+    "debug-steve64" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-steve32" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g -pipe",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-rdynamic -ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m32",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-steve-opt" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "gcc",
+        cflags           => "$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_ldflag    => "-m64",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+
+    # Richard Levitte
+    "debug-levitte-linux-noasm" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-levitte-linux-elf-extreme" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-levitte-linux-noasm-extreme" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT",
+        perlasm_scheme   => "void",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+
+    "debug-geoff32" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-geoff64" => {
+        inherit_from     => [ "no_asm_filler" ],
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-linux-pentium" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentium -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+    },
+    "debug-linux-ppro" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentiumpro -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+    },
+    "debug-linux-elf-noefence" => {
+        inherit_from     => [ "x86_elf_asm" ],
+        cc               => "gcc",
+        cflags           => "-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "debug-linux-ia32-aes" => {
+        cc               => "gcc",
+        cflags           => "-DAES_EXPERIMENTAL -DL_ENDIAN -O3 -fomit-frame-pointer -Wall",
+        thread_cflag     => "-D_REENTRANT",
+        lflags           => "-ldl",
+        bn_ops           => "BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}",
+        cpuid_obj        => "x86cpuid.o",
+        bn_obj           => "bn-586.o co-586.o x86-mont.o",
+        des_obj          => "des-586.o crypt586.o",
+        aes_obj          => "aes_x86core.o aes_cbc.o aesni-x86.o",
+        bf_obj           => "bf-586.o",
+        md5_obj          => "md5-586.o",
+        sha1_obj         => "sha1-586.o sha256-586.o sha512-586.o",
+        cast_obj         => "cast-586.o",
+        rc4_obj          => "rc4-586.o",
+        rmd160_obj       => "rmd-586.o",
+        rc5_obj          => "rc5-586.o",
+        wp_obj           => "wp_block.o wp-mmx.o",
+        modes_obj        => "ghash-x86.o",
+        engines_obj      => "e_padlock-x86.o",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "linux-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "dist" => {
+        cc               => "cc",
+        cflags           => "-O",
+        thread_cflag     => "(unknown)",
+    },
+    "debug-test-64-clang" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "clang",
+        cflags           => "$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        thread_cflag     => "${BSDthreads}",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "elf",
+        dso_scheme       => "dlfcn",
+        shared_target    => "bsd-gcc-shared",
+        shared_cflag     => "-fPIC",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+    },
+    "darwin64-debug-test-64-clang" => {
+        inherit_from     => [ "x86_64_asm" ],
+        cc               => "clang",
+        cflags           => "-arch x86_64 -DL_ENDIAN $gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        thread_cflag     => "${BSDthreads}",
+        sys_id           => "MACOSX",
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL",
+        perlasm_scheme   => "macosx",
+        dso_scheme       => "dlfcn",
+        shared_target    => "darwin-shared",
+        shared_cflag     => "-fPIC -fno-common",
+        shared_ldflag    => "-arch x86_64 -dynamiclib",
+        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
+    },
 );
diff --git a/Configure b/Configure
index 4094c08..705f4c6 100755
--- a/Configure
+++ b/Configure
@@ -134,10 +134,13 @@ my $bits1="THIRTY_TWO_BIT ";
 my $bits2="SIXTY_FOUR_BIT ";
 
 my $x86_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o x86-gf2m.o:ecp_nistz256.o ecp_nistz256-x86.o:des-586.o crypt586.o:aes-586.o vpaes-x86.o aesni-x86.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:cmll-x86.o:ghash-x86.o:e_padlock-x86.o";
+my $x86_asm_nocast=$x86_asm;$x86_asm_nocast=~s/cast\-586\.o//;
 
 my $x86_elf_asm="$x86_asm:elf";
+my $android_x86_elf_asm="$x86_asm:android";
 
 my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o:ecp_nistz256.o ecp_nistz256-x86_64.o::aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o aesni-sha256-x86_64.o aesni-mb-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o sha1-mb-x86_64.o sha256-mb-x86_64.o::rc4-x86_64.o rc4-md5-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:ghash-x86_64.o aesni-gcm-x86_64.o:e_padlock-x86_64.o";
+my $win_x86_64_asm=$x86_asm;$win_x86_64_asm=~s/x86_64-gcc\.o/bn_asm.o/;
 my $ia64_asm="ia64cpuid.o:bn-ia64.o ia64-mont.o:::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::::ghash-ia64.o::void";
 my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o::des_enc-sparc.o fcrypt_b.o dest4-sparcv9.o:aes_core.o aes_cbc.o aes-sparcv9.o aest4-sparcv9.o::md5-sparcv9.o:sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o::::::camellia.o cmll_misc.o cmll_cbc.o cmllt4-sparcv9.o:ghash-sparcv9.o::void";
 my $sparcv8_asm=":sparcv8.o::des_enc-sparc.o fcrypt_b.o:::::::::::::void";
@@ -145,10 +148,12 @@ my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o::::::sha1-alpha.o:::::::ghash-
 my $mips64_asm=":bn-mips.o mips-mont.o:::aes_cbc.o aes-mips.o:::sha1-mips.o sha256-mips.o sha512-mips.o::::::::";
 my $mips32_asm=$mips64_asm; $mips32_asm =~ s/\s*sha512\-mips\.o//;
 my $s390x_asm="s390xcap.o s390xcpuid.o:bn-s390x.o s390x-mont.o s390x-gf2m.o:::aes-s390x.o aes-ctr.o aes-xts.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o::rc4-s390x.o:::::ghash-s390x.o:";
+my $s390x_32_asm=$s390x_asm;$s390x_32_asm=~s/bn\-s390x\.o/bn_asm.o/;
 my $armv4_asm="armcap.o armv4cpuid.o:bn_asm.o armv4-mont.o armv4-gf2m.o:ecp_nistz256.o ecp_nistz256-armv4.o::aes_cbc.o aes-armv4.o bsaes-armv7.o aesv8-armx.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::ghash-armv4.o ghashv8-armx.o::void";
 my $aarch64_asm="armcap.o arm64cpuid.o mem_clr.o::::aes_core.o aes_cbc.o aesv8-armx.o:::sha1-armv8.o sha256-armv8.o sha512-armv8.o:::::::ghashv8-armx.o:";
 my $parisc11_asm="pariscid.o:bn_asm.o parisc-mont.o:::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::32";
-my $parisc20_asm="pariscid.o:pa-risc2W.o parisc-mont.o:::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64";
+my $parisc20_64_asm="pariscid.o:pa-risc2W.o parisc-mont.o:::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64";
+my $parisc20_32_asm=$parisc20_64_asm;$parisc20_32_asm=~s/2W\./2\./;$parisc20_32_asm=~s/:64/:32/;
 my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o:::aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o:::::::ghashp8-ppc.o:";
 my $ppc32_asm=$ppc64_asm;
 
@@ -161,12 +166,444 @@ my $ppc32_asm=$ppc64_asm;
 # seems to be sufficient?
 my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
 
-#config-string	$cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $ec_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $wp_obj : $cmll_obj : $modes_obj : $engines_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags : $multilib
 
 # table of known configurations, read in from files
+#
+# The content of each entry can take one of two forms:
+#
+# - old style config-string, colon seperated fields with exactly the
+#   following structure.:
+#
+#	$cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $ec_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $wp_obj : $cmll_obj : $modes_obj : $engines_obj : $perlasm_scheme : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags : $multilib
+#
+#   We use the stringtohash function - defined below - to combine with the
+#   fields and form a proper hash table from the string.
+#
+# - direct transfer of old style config string to hash table, using the names
+#   of the fields as keys:
+#
+#	{
+#	  cc => $cc,
+#	  cflags => $cflags,
+#	  unistd => $unistd,
+#	  thread_cflag => $thread_cflag,
+#	  sys_id => $sys_id,
+#	  lflags => $lflags,
+#	  bn_ops => $bn_ops,
+#	  cpuid_obj => $cpuid_obj,
+#	  bn_obj => $bn_obj,
+#	  ec_obj => $ec_obj,
+#	  des_obj => $des_obj,
+#	  aes_obj => $aes_obj,
+#	  bf_obj => $bf_obj,
+#	  md5_obj => $md5_obj,
+#	  sha1_obj => $sha1_obj,
+#	  cast_obj => $cast_obj,
+#	  rc4_obj => $rc4_obj,
+#	  rmd160_obj => $rmd160_obj,
+#	  rc5_obj => $rc5_obj,
+#	  wp_obj => $wp_obj,
+#	  cmll_obj => $cmll_obj,
+#	  modes_obj => $modes_obj,
+#	  engines_obj => $engines_obj,
+#	  perlasm_scheme => $perlasm_scheme,
+#	  dso_scheme => $dso_scheme,
+#	  shared_target => $shared_target,
+#	  shared_cflag => $shared_cflag,
+#	  shared_ldflag => $shared_ldflag,
+#	  shared_extension => $shared_extension,
+#	  ranlib => $ranlib,
+#	  arflags => $arflags,
+#	  multilib => $multilib
+#	}
+#
+# - new style config hash table, which has additional attributes for debug
+#   and non-debug flags to be added to the common flags, for cflags and lflags:
+#
+#	{
+#	  cc => $cc,
+#	  cflags => $cflags,
+#	  debug_cflags => $debug_cflags,
+#	  release_cflags => $release_cflags,
+#	  unistd => $unistd,
+#	  thread_cflag => $thread_cflag,
+#	  sys_id => $sys_id,
+#	  lflags => $lflags,
+#	  debug_lflags => $debug_lflags,
+#	  release_lflags => $release_lflags,
+#	  bn_ops => $bn_ops,
+#	  cpuid_obj => $cpuid_obj,
+#	  bn_obj => $bn_obj,
+#	  ec_obj => $ec_obj,
+#	  des_obj => $des_obj,
+#	  aes_obj => $aes_obj,
+#	  bf_obj => $bf_obj,
+#	  md5_obj => $md5_obj,
+#	  sha1_obj => $sha1_obj,
+#	  cast_obj => $cast_obj,
+#	  rc4_obj => $rc4_obj,
+#	  rmd160_obj => $rmd160_obj,
+#	  rc5_obj => $rc5_obj,
+#	  wp_obj => $wp_obj,
+#	  cmll_obj => $cmll_obj,
+#	  modes_obj => $modes_obj,
+#	  engines_obj => $engines_obj,
+#	  dso_scheme => $dso_scheme,
+#	  shared_target => $shared_target,
+#	  shared_cflag => $shared_cflag,
+#	  shared_ldflag => $shared_ldflag,
+#	  shared_extension => $shared_extension,
+#	  ranlib => $ranlib,
+#	  arflags => $arflags,
+#	  multilib => $multilib
+#	}
+#
+# The configuration reader will do what it can to translate everything into
+# new style config hash tables, including merging $target and debug-$target
+# if they are similar enough.
+#
+# The configuration hashes can refer to templates in two different manners:
+#
+# - as part of the hash, one can have a key called 'inherit_from' that
+#   indicate what other configuration hashes to inherit data from.
+#   These are resolved recursively.
+#
+#   Inheritance works as a set of default values that can be overriden
+#   by corresponding attribute values in the inheriting configuration.
+#
+#   If several configurations are given in the 'inherit_from' array, the
+#   values of same attribute are concatenated with space separation.
+#   With this, it's possible to have several smaller templates for
+#   different configuration aspects that can be combined into a complete
+#   configuration.
+#
+#   Example:
+#
+#	"foo" => {
+#		template => 1,
+#		haha => "haha",
+#		hoho => "ho"
+#	},
+#	"bar" => {
+#		template => 1,
+#		hoho => "ho",
+#		hehe => "hehe"
+#	},
+#	"laughter" => {
+#		inherit_from => [ "foo", "bar" ],
+#	}
+#
+#	The entry for "foo" will become as follows after processing:
+#
+#	"laughter" => {
+#		haha => "haha",
+#		hoho => "ho ho",
+#		hehe => "hehe"
+#	}
+#
+#   Note 1: any entry from the table can be used as a template.
+#   Note 2: pure templates have the attribute 'template => 1' and cannot
+#           be used as targets.
+#
+# - instead of a string, one can have a code block of the form
+#   'sub { /* your code here */ }', where the arguments are the list of
+#   inherited values for that key.  In fact, the concatenation of strings
+#   is really done by using 'sub { join(" ", at _) }' on the list of inherited
+#   values.
+#
+#   Example:
+#
+#	"foo" => {
+#		template => 1,
+#		haha => "ha ha",
+#		hoho => "ho",
+#		ignored => "This should not appear in the end result",
+#	},
+#	"bar" => {
+#		template => 1,
+#		haha => "ah",
+#		hoho => "haho",
+#		hehe => "hehe"
+#	},
+#	"laughter" => {
+#		inherit_from => [ "foo", "bar" ],
+#		hehe => sub { join(" ",(@_,"!!!")) },
+#		ignored => "",
+#	}
+#
+#	The entry for "foo" will become as follows after processing:
+#
+#	"laughter" => {
+#		haha => "ha ha ah",
+#		hoho => "ho haho",
+#		hehe => "hehe !!!",
+#		ignored => ""
+#	}
+#
+
 my %table=(
+
+    # All these templates are merely a translation of the corresponding
+    # variables further up.
+    #
+    # Note: as long as someone might use old style configuration strings,
+    # or we bother supporting that, those variables need to stay
+
+    # Filler used for when there are no asm files.
+    no_asm_filler => {
+	template	=> 1,
+	cpuid_obj	=> "",
+	bn_obj		=> "",
+	ec_obj		=> "",
+	des_obj		=> "",
+	aes_obj		=> "",
+	bf_obj		=> "",
+	md5_obj		=> "",
+	sha1_obj	=> "",
+	cast_obj	=> "",
+	rc4_obj		=> "",
+	rmd160_obj	=> "",
+	rc5_obj		=> "",
+	wp_obj		=> "",
+	cmll_obj	=> "",
+	modes_obj	=> "",
+	engines_obj	=> "",
+	perlasm_scheme	=> "void"
+    },
+
+    x86_asm_nocast => {
+	template	=> 1,
+	cpuid_obj	=> "x86cpuid.o",
+	bn_obj		=> "bn-586.o co-586.o x86-mont.o x86-gf2m.o",
+	ec_obj		=> "ecp_nistz256.o ecp_nistz256-x86.o",
+	des_obj		=> "des-586.o crypt586.o",
+	aes_obj		=> "aes-586.o vpaes-x86.o aesni-x86.o",
+	bf_obj		=> "bf-586.o",
+	md5_obj		=> "md5-586.o",
+	sha1_obj	=> "sha1-586.o sha256-586.o sha512-586.o",
+	rc4_obj		=> "rc4-586.o",
+	rmd160_obj	=> "rmd-586.o",
+	rc5_obj		=> "rc5-586.o",
+	wp_obj		=> "wp_block.o wp-mmx.o",
+	cmll_obj	=> "cmll-x86.o",
+	modes_obj	=> "ghash-x86.o",
+	engines_obj	=> "e_padlock-x86.o"
+    },
+    x86_asm => {
+	template	=> 1,
+	inherit_from	=> [ "x86_asm_nocast" ],
+	cast_obj	=> "cast-586.o",
+    },
+    x86_elf_asm => {
+	template	=> 1,
+	inherit_from	=> [ "x86_asm" ],
+	perlasm_scheme	=> "elf"
+    },
+    android_x86_elf_asm => {
+	template	=> 1,
+	inherit_from	=> [ "x86_asm" ],
+	perlasm_scheme	=> "android"
+    },
+
+    _x86_64_asm => {
+	template	=> 1,
+	cpuid_obj       => "x86_64cpuid.o",
+	bn_obj          => "x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o",
+	ec_obj          => "ecp_nistz256.o ecp_nistz256-x86_64.o",
+	aes_obj         => "aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o aesni-sha256-x86_64.o aesni-mb-x86_64.o",
+	md5_obj         => "md5-x86_64.o",
+	sha1_obj        => "sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o sha1-mb-x86_64.o sha256-mb-x86_64.o",
+	rc4_obj         => "rc4-x86_64.o rc4-md5-x86_64.o",
+	wp_obj          => "wp-x86_64.o",
+	cmll_obj        => "cmll-x86_64.o cmll_misc.o",
+	modes_obj       => "ghash-x86_64.o aesni-gcm-x86_64.o",
+	engines_obj     => "e_padlock-x86_64.o"
+    },
+    x86_64_asm => {
+	inherit_from	=> [ "_x86_64_asm" ],
+	template	=> 1,
+	bn_obj          => sub { join(" ","x86_64-gcc.o", at _) }
+    },
+    win_x86_64_asm => {
+	inherit_from	=> [ "_x86_64_asm" ],
+	template	=> 1,
+	bn_obj          => sub { join(" ","bn_asm.o", at _) }
+    },
+    ia64_asm => {
+	template	=> 1,
+	cpuid_obj       => "ia64cpuid.o",
+	bn_obj          => "bn-ia64.o ia64-mont.o",
+	aes_obj         => "aes_core.o aes_cbc.o aes-ia64.o",
+	md5_obj         => "md5-ia64.o",
+	sha1_obj        => "sha1-ia64.o sha256-ia64.o sha512-ia64.o",
+	rc4_obj         => "rc4-ia64.o rc4_skey.o",
+	modes_obj       => "ghash-ia64.o",
+	perlasm_scheme	=> "void"
+    },
+    sparcv9_asm => {
+	template	=> 1,
+	cpuid_obj       => "sparcv9cap.o sparccpuid.o",
+	bn_obj          => "bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o",
+	des_obj         => "des_enc-sparc.o fcrypt_b.o dest4-sparcv9.o",
+	aes_obj         => "aes_core.o aes_cbc.o aes-sparcv9.o aest4-sparcv9.o",
+	md5_obj         => "md5-sparcv9.o",
+	sha1_obj        => "sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o",
+	cmll_obj        => "camellia.o cmll_misc.o cmll_cbc.o cmllt4-sparcv9.o",
+	modes_obj       => "ghash-sparcv9.o",
+	perlasm_scheme	=> "void"
+    },
+    sparcv8_asm => {
+	template	=> 1,
+	cpuid_obj       => "",
+	bn_obj          => "sparcv8.o",
+	des_obj         => "des_enc-sparc.o fcrypt_b.o",
+	perlasm_scheme	=> "void"
+    },
+    alpha_asm => {
+	template	=> 1,
+	cpuid_obj       => "alphacpuid.o",
+	bn_obj          => "bn_asm.o alpha-mont.o",
+	sha1_obj        => "sha1-alpha.o",
+	modes_obj       => "ghash-alpha.o",
+	perlasm_scheme	=> "void"
+    },
+    mips32_asm => {
+	template	=> 1,
+	bn_obj          => "bn-mips.o mips-mont.o",
+	aes_obj         => "aes_cbc.o aes-mips.o",
+	sha1_obj        => "sha1-mips.o sha256-mips.o",
+    },
+    mips64_asm => {
+	inherit_from	=> [ "mips32_asm" ],
+	template	=> 1,
+	sha1_obj        => sub { join(" ", @_, "sha512-mips.o") }
+    },
+    _s390x_asm => {
+	template	=> 1,
+	cpuid_obj       => "s390xcap.o s390xcpuid.o",
+	bn_obj          => "s390x-mont.o s390x-gf2m.o",
+	aes_obj         => "aes-s390x.o aes-ctr.o aes-xts.o",
+	sha1_obj        => "sha1-s390x.o sha256-s390x.o sha512-s390x.o",
+	rc4_obj         => "rc4-s390x.o",
+	modes_obj       => "ghash-s390x.o",
+    },
+    s390x_asm => {
+	template	=> 1,
+	inherit_from	=> [ "_s390x_asm" ],
+	bn_obj          => sub { join(" ", "bn-s390x.o", @_) }
+    },
+    s390x_32_asm => {
+	template	=> 1,
+	inherit_from	=> [ "_s390x_asm" ],
+	bn_obj          => sub { join(" ", "bn_asm.o", @_) }
+    },
+    armv4_asm => {
+	template	=> 1,
+	cpuid_obj       => "armcap.o armv4cpuid.o",
+	bn_obj          => "bn_asm.o armv4-mont.o armv4-gf2m.o",
+	ec_obj          => "ecp_nistz256.o ecp_nistz256-armv4.o",
+	aes_obj         => "aes_cbc.o aes-armv4.o bsaes-armv7.o aesv8-armx.o",
+	sha1_obj        => "sha1-armv4-large.o sha256-armv4.o sha512-armv4.o",
+	modes_obj       => "ghash-armv4.o ghashv8-armx.o",
+	perlasm_scheme	=> "void"
+    },
+    aarch64_asm => {
+	template	=> 1,
+	cpuid_obj       => "armcap.o arm64cpuid.o mem_clr.o",
+	aes_obj         => "aes_core.o aes_cbc.o aesv8-armx.o",
+	sha1_obj        => "sha1-armv8.o sha256-armv8.o sha512-armv8.o",
+	modes_obj       => "ghashv8-armx.o",
+    },
+    parisc11_asm => {
+	template	=> 1,
+	cpuid_obj       => "pariscid.o",
+	bn_obj          => "bn_asm.o parisc-mont.o",
+	aes_obj         => "aes_core.o aes_cbc.o aes-parisc.o",
+	sha1_obj        => "sha1-parisc.o sha256-parisc.o sha512-parisc.o",
+	rc4_obj         => "rc4-parisc.o",
+	modes_obj       => "ghash-parisc.o",
+	perlasm_scheme	=> "32"
+    },
+    _parisc20_asm => {
+	template	=> 1,
+	cpuid_obj       => "pariscid.o",
+	bn_obj          => "parisc-mont.o",
+	aes_obj         => "aes_core.o aes_cbc.o aes-parisc.o",
+	sha1_obj        => "sha1-parisc.o sha256-parisc.o sha512-parisc.o",
+	rc4_obj         => "rc4-parisc.o",
+	modes_obj       => "ghash-parisc.o",
+	perlasm_scheme	=> "64"
+    },
+    parisc20_32_asm => {
+	template	=> 1,
+	inherit_from	=> [ "_parisc20_asm" ],
+	bn_obj          => sub { join(" ", "pa-risc2.o", @_) },
+	perlasm_scheme	=> "32",
+    },
+    parisc20_64_asm => {
+	template	=> 1,
+	inherit_from	=> [ "_parisc20_asm" ],
+	bn_obj          => sub { join(" ", "pa-risc2W.o", @_) },
+	perlasm_scheme	=> "64",
+    },
+    ppc64_asm => {
+	template	=> 1,
+	cpuid_obj       => "ppccpuid.o ppccap.o",
+	bn_obj          => "bn-ppc.o ppc-mont.o ppc64-mont.o",
+	aes_obj         => "aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o",
+	sha1_obj        => "sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o",
+	modes_obj       => "ghashp8-ppc.o",
+    },
+    ppc32_asm => {
+	inherit_from	=> [ "ppc64_asm" ],
+	template	=> 1
+    },
 );
 
+sub stringtohash {
+    my $in = shift @_;
+    if (ref($in) eq "HASH") {
+	return $in;
+    }
+    my @stringsequence = (
+	"cc",
+	"cflags",
+	"unistd",
+	"thread_cflag",
+	"sys_id",
+	"lflags",
+	"bn_ops",
+	"cpuid_obj",
+	"bn_obj",
+	"ec_obj",
+	"des_obj",
+	"aes_obj",
+	"bf_obj",
+	"md5_obj",
+	"sha1_obj",
+	"cast_obj",
+	"rc4_obj",
+	"rmd160_obj",
+	"rc5_obj",
+	"wp_obj",
+	"cmll_obj",
+	"modes_obj",
+	"engines_obj",
+	"perlasm_scheme",
+	"dso_scheme",
+	"shared_target",
+	"shared_cflag",
+	"shared_ldflag",
+	"shared_extension",
+	"ranlib",
+	"arflags",
+	"multilib",
+	);
+
+    # return a ref to a hash, that's what the outer braces are for.
+    return { map { shift @stringsequence => $_ } split /:/, $in };
+};
+
 # Read configuration target stanzas from a file, so that people can have
 # local files with their own definitions
 sub read_config {
@@ -180,7 +617,227 @@ sub read_config {
 	close(CONFFILE);
 	my %targets = ();
 	eval $content;
+
+	# Make sure we have debug- targets first
+	my @keys =
+	    sort {
+		my $a_nd = $a =~ m/^debug-/ ? $' :$a;
+		my $b_nd = $b =~ m/^debug-/ ? $' :$b;
+		my $res = 0;
+
+		if (($a_nd == $a) == ($b_nd == $b)) {
+		    # they are both debug- or not, compare them as they are
+		    $res = $a cmp $b;
+		} elsif ($a_nd != $a) {
+		    # $a is debug-, make it lesser
+		    $res = -1;
+		} else {
+		    # $b is debug-, make $a greater
+		    $res = 1;
+		}
+		$res;
+	    } keys %targets;
+
+	foreach (@keys) {
+	    if (ref($targets{$_}) ne "HASH") {
+		# Value is assumed to be a string.  Split it up to
+		# become a hash table of parameters.  Also, try to
+		# merge debug- variants with the non-debug target.
+
+		# Start with converting the value from a string to a
+		# standardised hash of fields.  Using $tohash is safe,
+		# if the input is already a hash ref, it's just returned
+		# back.
+		$targets{$_} = stringtohash($targets{$_});
+
+		# If the current target is a debug target, there might
+		# be a corresponding non-debug target that we can merge
+		# with.  If it isn't a debug- target, we've already done
+		# as much merging as we can and do not need to bother
+		# with that any more.
+		if ($_ =~ m/^debug-/) {
+		    my $debugkey = $_;
+		    my $nondebugkey = $';
+		    my $debug = $targets{$debugkey};
+		    my $nondebug;
+
+		    if ($targets{$nondebugkey}) {
+			$nondebug = stringtohash($targets{$nondebugkey});
+		    }
+
+		    if ($nondebug) {
+			# There's both a debug and non-debug variant of
+			# this target, so we should try to merge them
+			# together.
+
+			# First, check that the non-debug variant isn't
+			# already built up with all it should have.
+			if ($nondebug->{debug_cflags}
+			    || $nondebug->{release_cflags}
+			    || $nondebug->{debug_lflags}
+			    || $nondebug->{release_lflags}) {
+			    warn "there's a debug target $debugkey to be merged with a target $nondebugkey, but the latter seems to already have both nodebug and debug information.  This requires human intervention.  Skipping $debugkey...";
+			    next;
+			}
+
+			# Now, check similarity.
+			# For keys they have in common, support that
+			# cflags and lflags can differ, otherwise they
+			# must have exactly the same values for them
+			# to be merged into one.
+			my $similarenough = 1;
+			for (keys %{$debug}) {
+			    if ($nondebug->{$_} ne $debug->{$_}
+				&& $_ !~ m/^[cl]flags$/) {
+				$similarenough = 0;
+				last;
+			    }
+			}
+
+			if ($similarenough) {
+			    # Here's where the magic happens, split the
+			    # options in the debug and non-debug variants
+			    # cflags and ldflags into three strings each,
+			    # one with common flags, one with extra debug
+			    # flags and one with extra non-debug flags.
+
+			    # The result ends up in %h_nondebug, which
+			    # becomes the merged variant when we're done.
+			    # for each of cflags and lflags, they are
+			    # replaced with cflags, debug_cflags,
+			    # release_cflags and similar for lflags.
+			    #
+			    # The purpose is that 'cflags' should be
+			    # used together with 'debug_cflags' or
+			    # 'release_cflags' depending on what the
+			    # user asks for.
+			    foreach (("cflags", "lflags")) {
+				my @list_d = split /\s+/, $debug->{$_};
+				my @list_nd = split /\s+/, $nondebug->{$_};
+				my %presence = (); # bitmap
+						   # 1: present in @list_d
+						   # 2: present in @list_nd
+						   # 3: present in both
+				map { $presence{$_} += 1; } @list_d;
+				map { $presence{$_} += 2; } @list_nd;
+
+				delete $nondebug->{$_};
+				# Note: we build from the original lists to
+				# preserve order, it might be important
+				$nondebug->{"debug-".$_} =
+				    join(" ",
+					 grep { $presence{$_} == 1 } @list_d);
+				$nondebug->{"nodebug-".$_} =
+				    join(" ",
+					 grep { $presence{$_} == 2 } @list_nd);
+				$nondebug->{$_} =
+				    join(" ",
+					 grep { $presence{$_} == 3 } @list_d);
+			    }
+
+			    $targets{$nondebugkey} = $nondebug;
+			    delete $targets{$debugkey};
+			}
+		    }
+		}
+	    }
+	}
+
 	%table = (%table, %targets);
+
+	# Local function to resolve inheritance
+	my $resolve_inheritance;
+	$resolve_inheritance =
+	    sub {
+		my $target = shift;
+		my @breadcrumbs = @_;
+
+		if (grep { $_ eq $target } @breadcrumbs) {
+		    die "inherit_from loop!  target backtrace:\n  "
+			,$target,"\n  ",join("\n  ", @breadcrumbs),"\n";
+		}
+
+		# Recurse through all inheritances.  They will be resolved on
+		# the fly, so when this operation is done, they will all just
+		# be a bunch of attributes with string values.
+		# What we get here, though, are keys with references to lists
+		# of the combined values of them all.  We will deal with lists
+		# after this stage is done.
+		my %combined_inheritance = ();
+		if ($table{$target}->{inherit_from}) {
+		    foreach (@{$table{$target}->{inherit_from}}) {
+			my %inherited_config =
+			    $resolve_inheritance->($_, $target, @breadcrumbs);
+
+			# 'template' is a marker that's considered private to
+			# the config that had it.
+			delete $inherited_config{template};
+
+			map {
+			    if (!$combined_inheritance{$_}) {
+				$combined_inheritance{$_} = [];
+			    }
+			    push @{$combined_inheritance{$_}}, $inherited_config{$_};
+			} keys %inherited_config;
+		    }
+		}
+
+		# We won't need inherit_from in this target any more, since
+		# we've resolved all the inheritances that lead to this
+		delete $table{$target}->{inherit_from};
+
+		# Now is the time to deal with those lists.  Here's the place
+		# to decide what shall be done with those lists, all based on
+		# the values of the target we're currently dealing with.
+		# - If a value is a coderef, it will be executed with the list
+		#   of inherited values as arguments.
+		# - If the corresponding key doesn't have a value at all or is
+		#   the emoty string, the inherited value list will be run
+		#   through the default combiner (below), and the result
+		#   becomes this target's value.
+		# - Otherwise, this target's value is assumed to be a string
+		#   that will simply override the inherited list of values.
+		my $default_combiner = sub { join(' ', at _) };
+
+		my %all_keys =
+		    map { $_ => 1 } (keys %combined_inheritance,
+				     keys %{$table{$target}});
+		foreach (sort keys %all_keys) {
+
+		    # Current target doesn't have a value for the current key?
+		    # Assign it the default combiner, the rest of this loop
+		    # body will handle it just like any other coderef.
+		    if (!exists $table{$target}->{$_}) {
+			$table{$target}->{$_} = $default_combiner;
+		    }
+
+		    my $valuetype = ref($table{$target}->{$_});
+		    if ($valuetype eq "CODE") {
+			# CODE reference, execute it with the inherited values
+			# as arguments.
+			$table{$target}->{$_} =
+			    $table{$target}->{$_}->(@{$combined_inheritance{$_}});
+		    } elsif ($valuetype eq "") {
+			# Scalar, just leave it as is.
+		    } else {
+			# Some other type of reference that we don't handle.
+			# Better to abort at this point.
+			die "cannot handle reference type $valuetype,"
+			    ," found in target $target -> $_\n";
+		    }
+		}
+
+		# Finally done, return the result.
+		%{$table{$target}};
+	};
+
+	# Go through all new targets and resolve inheritance and template
+	# references.
+	foreach (keys %targets) {
+	    # We're ignoring the returned values here, they are only valuable
+	    # to the inner recursion of this function.
+	    $resolve_inheritance->($_);
+	}
 }
 
 my ($vol, $dir, $dummy) = File::Spec->splitpath($0);
@@ -196,40 +853,6 @@ my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
 		    netware-clib netware-clib-bsdsock
 		    netware-libc netware-libc-bsdsock);
 
-my $idx = 0;
-my $idx_cc = $idx++;
-my $idx_cflags = $idx++;
-my $idx_unistd = $idx++;
-my $idx_thread_cflag = $idx++;
-my $idx_sys_id = $idx++;
-my $idx_lflags = $idx++;
-my $idx_bn_ops = $idx++;
-my $idx_cpuid_obj = $idx++;
-my $idx_bn_obj = $idx++;
-my $idx_ec_obj = $idx++;
-my $idx_des_obj = $idx++;
-my $idx_aes_obj = $idx++;
-my $idx_bf_obj = $idx++;
-my $idx_md5_obj = $idx++;
-my $idx_sha1_obj = $idx++;
-my $idx_cast_obj = $idx++;
-my $idx_rc4_obj = $idx++;
-my $idx_rmd160_obj = $idx++;
-my $idx_rc5_obj = $idx++;
-my $idx_wp_obj = $idx++;
-my $idx_cmll_obj = $idx++;
-my $idx_modes_obj = $idx++;
-my $idx_engines_obj = $idx++;
-my $idx_perlasm_scheme = $idx++;
-my $idx_dso_scheme = $idx++;
-my $idx_shared_target = $idx++;
-my $idx_shared_cflag = $idx++;
-my $idx_shared_ldflag = $idx++;
-my $idx_shared_extension = $idx++;
-my $idx_ranlib = $idx++;
-my $idx_arflags = $idx++;
-my $idx_multilib = $idx++;
-
 my $prefix="";
 my $libdir="";
 my $openssldir="";
@@ -584,7 +1207,7 @@ if (defined($disabled{"tlsext"}))
 
 if ($target eq "TABLE") {
 	foreach $target (sort keys %table) {
-		print_table_entry($target);
+		print_table_entry($target, "TABLE");
 	}
 	exit 0;
 }
@@ -597,13 +1220,35 @@ if ($target eq "LIST") {
 	exit 0;
 }
 
+if ($target eq "HASH") {
+	print "%table = (\n";
+	foreach (sort keys %table) {
+		print_table_entry($_, "HASH");
+	}
+	exit 0;
+}
+
 if ($target =~ m/^CygWin32(-.*)$/) {
 	$target = "Cygwin".$1;
 }
 
 print "Configuring for $target\n";
 
-&usage if (!defined($table{$target}));
+my ($d, $t) = $target =~ m/^(debug-)?(.*)$/;
+my $debug_prefix = "release_";
+if ($d) {
+    $debug_prefix = "debug_";
+
+    # If we do not find debug-foo in the table, the target is set to foo,
+    # but only if the foo target has a noon-empty debug_cflags or debug_lflags
+    # attribute.
+    if (!$table{$target} && ($table{$t}->{debug_cflags}
+			     || $table{$t}->{debug_lflags})) {
+	$target = $t;
+    }
+}
+
+&usage if (!defined($table{$target}) || $table{$target}->{template});
 
 if ($fips)
 	{
@@ -707,44 +1352,48 @@ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/]
 
 print "IsMK1MF=$IsMK1MF\n";
 
-my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
-my $cc = $fields[$idx_cc];
 # Allow environment CC to override compiler...
-if($ENV{CC}) {
-    $cc = $ENV{CC};
-}
-my $cflags = $fields[$idx_cflags];
-my $unistd = $fields[$idx_unistd];
-my $thread_cflag = $fields[$idx_thread_cflag];
-my $sys_id = $fields[$idx_sys_id];
-my $lflags = $fields[$idx_lflags];
-my $bn_ops = $fields[$idx_bn_ops];
-my $cpuid_obj = $fields[$idx_cpuid_obj];
-my $bn_obj = $fields[$idx_bn_obj];
-my $ec_obj = $fields[$idx_ec_obj];
-my $des_obj = $fields[$idx_des_obj];
-my $aes_obj = $fields[$idx_aes_obj];
-my $bf_obj = $fields[$idx_bf_obj];
-my $md5_obj = $fields[$idx_md5_obj];
-my $sha1_obj = $fields[$idx_sha1_obj];
-my $cast_obj = $fields[$idx_cast_obj];
-my $rc4_obj = $fields[$idx_rc4_obj];
-my $rmd160_obj = $fields[$idx_rmd160_obj];
-my $rc5_obj = $fields[$idx_rc5_obj];
-my $wp_obj = $fields[$idx_wp_obj];
-my $cmll_obj = $fields[$idx_cmll_obj];
-my $modes_obj = $fields[$idx_modes_obj];
-my $engines_obj = $fields[$idx_engines_obj];
-my $perlasm_scheme = $fields[$idx_perlasm_scheme];
-my $dso_scheme = $fields[$idx_dso_scheme];
-my $shared_target = $fields[$idx_shared_target];
-my $shared_cflag = $fields[$idx_shared_cflag];
-my $shared_ldflag = $fields[$idx_shared_ldflag];
-my $shared_extension = $fields[$idx_shared_extension];
-my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
+my $cc = $ENV{CC} || $table{$t}->{cc};
+
+# For cflags and lflags, add the debug_ or release_ attributes
+# Do it in such a way that no spurious space is appended (hence the grep).
+my $cflags = join(" ",
+		  grep { $_ } ($table{$t}->{cflags},
+			       $table{$t}->{$debug_prefix."cflags"}));
+my $lflags = join(" ",
+		  grep { $_ } ($table{$t}->{lflags},
+			       $table{$t}->{$debug_prefix."lflags"}));
+
+my $unistd = $table{$t}->{unistd};
+my $thread_cflag = $table{$t}->{thread_cflag};
+my $sys_id = $table{$t}->{sys_id};
+my $bn_ops = $table{$t}->{bn_ops};
+my $cpuid_obj = $table{$t}->{cpuid_obj};
+my $bn_obj = $table{$t}->{bn_obj};
+my $ec_obj = $table{$t}->{ec_obj};
+my $des_obj = $table{$t}->{des_obj};
+my $aes_obj = $table{$t}->{aes_obj};
+my $bf_obj = $table{$t}->{bf_obj};
+my $md5_obj = $table{$t}->{md5_obj};
+my $sha1_obj = $table{$t}->{sha1_obj};
+my $cast_obj = $table{$t}->{cast_obj};
+my $rc4_obj = $table{$t}->{rc4_obj};
+my $rmd160_obj = $table{$t}->{rmd160_obj};
+my $rc5_obj = $table{$t}->{rc5_obj};
+my $wp_obj = $table{$t}->{wp_obj};
+my $cmll_obj = $table{$t}->{cmll_obj};
+my $modes_obj = $table{$t}->{modes_obj};
+my $engines_obj = $table{$t}->{engines_obj};
+my $perlasm_scheme = $table{$t}->{perlasm_scheme};
+my $dso_scheme = $table{$t}->{dso_scheme};
+my $shared_target = $table{$t}->{shared_target};
+my $shared_cflag = $table{$t}->{shared_cflag};
+my $shared_ldflag = $table{$t}->{shared_ldflag};
+my $shared_extension = $table{$t}->{shared_extension};
+my $ranlib = $ENV{'RANLIB'} || $table{$t}->{ranlib};
 my $ar = $ENV{'AR'} || "ar";
-my $arflags = $fields[$idx_arflags];
-my $multilib = $fields[$idx_multilib];
+my $arflags = $table{$t}->{arflags};
+my $multilib = $table{$t}->{multilib};
 
 # if $prefix/lib$multilib is not an existing directory, then
 # assume that it's not searched by linker automatically, in
@@ -1585,7 +2234,7 @@ BEGIN
 	    VALUE "ProductVersion", "$version\\0"
 	    // Optional:
 	    //VALUE "Comments", "\\0"
-	    VALUE "LegalCopyright", "Copyright © 1998-2005 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
+	    VALUE "LegalCopyright", "Copyright © 1998-2005 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
 	    //VALUE "LegalTrademarks", "\\0"
 	    //VALUE "PrivateBuild", "\\0"
 	    //VALUE "SpecialBuild", "\\0"
@@ -1693,51 +2342,101 @@ sub dofile
 sub print_table_entry
 	{
 	my $target = shift;
+	my $type = shift;
 
-	my ($cc, $cflags, $unistd, $thread_cflag, $sys_id, $lflags,
-	    $bn_ops, $cpuid_obj, $bn_obj, $ec_obj, $des_obj, $aes_obj, $bf_obj,
-	    $md5_obj, $sha1_obj, $cast_obj, $rc4_obj, $rmd160_obj,
-	    $rc5_obj, $wp_obj, $cmll_obj, $modes_obj, $engines_obj,
-	    $perlasm_scheme, $dso_scheme, $shared_target, $shared_cflag,
-	    $shared_ldflag, $shared_extension, $ranlib, $arflags, $multilib)=
-	split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
+	# Don't print the templates
+	return if $table{$target}->{template};
 
-	print <<EOF
+	if ($type eq "TABLE") {
+	    print <<EOF
 
 *** $target
-\$cc           = $cc
-\$cflags       = $cflags
-\$unistd       = $unistd
-\$thread_cflag = $thread_cflag
-\$sys_id       = $sys_id
-\$lflags       = $lflags
-\$bn_ops       = $bn_ops
-\$cpuid_obj    = $cpuid_obj
-\$bn_obj       = $bn_obj
-\$ec_obj       = $ec_obj
-\$des_obj      = $des_obj
-\$aes_obj      = $aes_obj
-\$bf_obj       = $bf_obj
-\$md5_obj      = $md5_obj
-\$sha1_obj     = $sha1_obj
-\$cast_obj     = $cast_obj
-\$rc4_obj      = $rc4_obj
-\$rmd160_obj   = $rmd160_obj
-\$rc5_obj      = $rc5_obj
-\$wp_obj       = $wp_obj
-\$cmll_obj     = $cmll_obj
-\$modes_obj    = $modes_obj
-\$engines_obj  = $engines_obj
-\$perlasm_scheme = $perlasm_scheme
-\$dso_scheme   = $dso_scheme
-\$shared_target= $shared_target
-\$shared_cflag = $shared_cflag
-\$shared_ldflag = $shared_ldflag
-\$shared_extension = $shared_extension
-\$ranlib       = $ranlib
-\$arflags      = $arflags
-\$multilib     = $multilib
+\$cc           = $table{$target}->{cc}
+\$cflags       = $table{$target}->{cflags}
+\$debug_cflags   = $table{$target}->{debug_cflags}
+\$release_cflags = $table{$target}->{release_cflags}
+\$unistd       = $table{$target}->{unistd}
+\$thread_cflag = $table{$target}->{thread_cflag}
+\$sys_id       = $table{$target}->{sys_id}
+\$lflags       = $table{$target}->{lflags}
+\$debug_lflags   = $table{$target}->{debug_lflags}
+\$release_lflags = $table{$target}->{release_lflags}
+\$bn_ops       = $table{$target}->{bn_ops}
+\$cpuid_obj    = $table{$target}->{cpuid_obj}
+\$bn_obj       = $table{$target}->{bn_obj}
+\$ec_obj       = $table{$target}->{ec_obj}
+\$des_obj      = $table{$target}->{des_obj}
+\$aes_obj      = $table{$target}->{aes_obj}
+\$bf_obj       = $table{$target}->{bf_obj}
+\$md5_obj      = $table{$target}->{md5_obj}
+\$sha1_obj     = $table{$target}->{sha1_obj}
+\$cast_obj     = $table{$target}->{cast_obj}
+\$rc4_obj      = $table{$target}->{rc4_obj}
+\$rmd160_obj   = $table{$target}->{rmd160_obj}
+\$rc5_obj      = $table{$target}->{rc5_obj}
+\$wp_obj       = $table{$target}->{wp_obj}
+\$cmll_obj     = $table{$target}->{cmll_obj}
+\$modes_obj    = $table{$target}->{modes_obj}
+\$engines_obj  = $table{$target}->{engines_obj}
+\$perlasm_scheme = $table{$target}->{perlasm_scheme}
+\$dso_scheme   = $table{$target}->{dso_scheme}
+\$shared_target= $table{$target}->{shared_target}
+\$shared_cflag = $table{$target}->{shared_cflag}
+\$shared_ldflag = $table{$target}->{shared_ldflag}
+\$shared_extension = $table{$target}->{shared_extension}
+\$ranlib       = $table{$target}->{ranlib}
+\$arflags      = $table{$target}->{arflags}
+\$multilib     = $table{$target}->{multilib}
 EOF
+	} elsif ($type eq "HASH") {
+	    my @sequence = (
+		"cc",
+		"cflags",
+		"debug_cflags",
+		"release_cflags",
+		"unistd",
+		"thread_cflag",
+		"sys_id",
+		"lflags",
+		"debug_lflags",
+		"release_lflags",
+		"bn_ops",
+		"cpuid_obj",
+		"bn_obj",
+		"ec_obj",
+		"des_obj",
+		"aes_obj",
+		"bf_obj",
+		"md5_obj",
+		"sha1_obj",
+		"cast_obj",
+		"rc4_obj",
+		"rmd160_obj",
+		"rc5_obj",
+		"wp_obj",
+		"cmll_obj",
+		"modes_obj",
+		"engines_obj",
+		"perlasm_scheme",
+		"dso_scheme",
+		"shared_target",
+		"shared_cflag",
+		"shared_ldflag",
+		"shared_extension",
+		"ranlib",
+		"arflags",
+		"multilib",
+		);
+	    my $largest =
+		length((sort { length($a) <=> length($b) } @sequence)[-1]);
+	    print "    '$target' => {\n";
+	    foreach (@sequence) {
+		if ($table{$target}->{$_}) {
+		    print "      '",$_,"'"," " x ($largest - length($_))," => '",$table{$target}->{$_},"',\n";
+		}
+	    }
+	    print "    },\n";
+	}
 	}
 
 sub test_sanity
@@ -1751,24 +2450,27 @@ sub test_sanity
 
 	foreach $target (sort keys %table)
 		{
-		@fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
+		my $pre_dso_scheme = "perlasm_scheme";
+		my $dso_scheme = "dso_scheme";
+		my $post_dso_scheme = "shared_target";
+
 
-		if ($fields[$idx_dso_scheme-1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
+		if ($table{$target}->{$pre_dso_scheme} =~ /^(beos|dl|dlfcn|win32|vms)$/)
 			{
 			$errorcnt++;
-			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
+			print STDERR "SANITY ERROR: '$target' has the dso_scheme values\n";
 			print STDERR "              in the previous field\n";
 			}
-		elsif ($fields[$idx_dso_scheme+1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
+		elsif ($table{$target}->{$post_dso_scheme} =~ /^(beos|dl|dlfcn|win32|vms)$/)
 			{
 			$errorcnt++;
-			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
+			print STDERR "SANITY ERROR: '$target' has the dso_scheme values\n";
 			print STDERR "              in the following field\n";
 			}
-		elsif ($fields[$idx_dso_scheme] !~ /^(beos|dl|dlfcn|win32|vms|)$/)
+		elsif ($table{$target}->{$dso_scheme} !~ /^(beos|dl|dlfcn|win32|vms|)$/)
 			{
 			$errorcnt++;
-			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
+			print STDERR "SANITY ERROR: '$target' has the dso_scheme field = ",$table{$target}->{$dso_scheme},"\n";
 			print STDERR "              valid values are 'beos', 'dl', 'dlfcn', 'win32' and 'vms'\n";
 			}
 		}
diff --git a/TABLE b/TABLE
index f214b7b..dfd39b8 100644
--- a/TABLE
+++ b/TABLE
@@ -3,10 +3,14 @@ Output of `Configure TABLE':
 *** BC-32
 $cc           = bcc32
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = WIN32
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN
 $cpuid_obj    = 
 $bn_obj       = 
@@ -37,10 +41,14 @@ $multilib     =
 *** BS2000-OSD
 $cc           = c89
 $cflags       = -O -XLLML -XLLMK -XL -DB_ENDIAN -DCHARSET_EBCDIC
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -lsocket -lnsl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -71,10 +79,14 @@ $multilib     =
 *** BSD-generic32
 $cc           = gcc
 $cflags       = -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
 $cpuid_obj    = 
 $bn_obj       = 
@@ -105,10 +117,14 @@ $multilib     =
 *** BSD-generic64
 $cc           = gcc
 $cflags       = -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = 
 $bn_obj       = 
@@ -139,10 +155,14 @@ $multilib     =
 *** BSD-ia64
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -173,10 +193,14 @@ $multilib     =
 *** BSD-sparc64
 $cc           = gcc
 $cflags       = -DB_ENDIAN -O3 -DMD32_REG_T=int -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -207,10 +231,14 @@ $multilib     =
 *** BSD-sparcv8
 $cc           = gcc
 $cflags       = -DB_ENDIAN -O3 -mv8 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL
 $cpuid_obj    = 
 $bn_obj       = sparcv8.o
@@ -241,10 +269,14 @@ $multilib     =
 *** BSD-x86
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -274,11 +306,15 @@ $multilib     =
 
 *** BSD-x86-elf
 $cc           = gcc
-$cflags       = -DL_ENDIAN -O3 -fomit-frame-pointer -Wall
+$cflags       = -DL_ENDIAN -Wall
+$debug_cflags   = -g
+$release_cflags = -O3 -fomit-frame-pointer
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -309,10 +345,14 @@ $multilib     =
 *** BSD-x86_64
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -343,10 +383,14 @@ $multilib     =
 *** Cygwin
 $cc           = gcc
 $cflags       = -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = CYGWIN
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -377,10 +421,14 @@ $multilib     =
 *** Cygwin-x86_64
 $cc           = gcc
 $cflags       = -DTERMIOS -DL_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = CYGWIN
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -411,10 +459,14 @@ $multilib     =
 *** DJGPP
 $cc           = gcc
 $cflags       = -I/dev/env/WATT_ROOT/inc -DTERMIO -DL_ENDIAN -fomit-frame-pointer -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = MSDOS
 $lflags       = -L/dev/env/WATT_ROOT/lib -lwatt
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -445,10 +497,14 @@ $multilib     =
 *** MPE/iX-gcc
 $cc           = gcc
 $cflags       = -D_ENDIAN -DBN_DIV2W -O3 -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = MPE
 $lflags       = -L/SYSLOG/PUB -lsyslog -lsocket -lcurses
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = 
 $bn_obj       = 
@@ -479,10 +535,14 @@ $multilib     =
 *** OS2-EMX
 $cc           = gcc
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -513,10 +573,14 @@ $multilib     =
 *** OS390-Unix
 $cc           = c89.sh
 $cflags       = -O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H  -D_ALL_SOURCE
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -547,10 +611,14 @@ $multilib     =
 *** QNX6
 $cc           = gcc
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -lsocket
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -581,10 +649,14 @@ $multilib     =
 *** QNX6-i386
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -lsocket
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -615,10 +687,14 @@ $multilib     =
 *** UWIN
 $cc           = cc
 $cflags       = -DTERMIOS -DL_ENDIAN -O -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = UWIN
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -649,10 +725,14 @@ $multilib     =
 *** VC-CE
 $cc           = cl
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = WINCE
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -683,10 +763,14 @@ $multilib     =
 *** VC-WIN32
 $cc           = cl
 $cflags       = -W3 -wd4090 -Gs0 -GF -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE
+$debug_cflags   = -Zi
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = WIN32
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -717,10 +801,14 @@ $multilib     =
 *** VC-WIN64A
 $cc           = cl
 $cflags       = -W3 -wd4090 -Gs0 -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
+$debug_cflags   = -Zi
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = WIN64A
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = bn_asm.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -751,10 +839,14 @@ $multilib     =
 *** VC-WIN64I
 $cc           = cl
 $cflags       = -W3 -wd4090 -Gs0 -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = WIN64I
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = ia64.o ia64-mont.o
@@ -785,10 +877,14 @@ $multilib     =
 *** aix-cc
 $cc           = cc
 $cflags       = -q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -qthreaded -D_THREAD_SAFE
 $sys_id       = AIX
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -819,10 +915,14 @@ $multilib     =
 *** aix-gcc
 $cc           = gcc
 $cflags       = -O -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread
 $sys_id       = AIX
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -853,10 +953,14 @@ $multilib     =
 *** aix3-cc
 $cc           = cc
 $cflags       = -O -DB_ENDIAN -qmaxmem=16384
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = AIX
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -887,10 +991,14 @@ $multilib     =
 *** aix64-cc
 $cc           = cc
 $cflags       = -q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -qthreaded -D_THREAD_SAFE
 $sys_id       = AIX
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -921,10 +1029,14 @@ $multilib     =
 *** aix64-gcc
 $cc           = gcc
 $cflags       = -maix64 -O -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread
 $sys_id       = AIX
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -955,10 +1067,14 @@ $multilib     =
 *** android
 $cc           = gcc
 $cflags       = -mandroid -I$(ANDROID_DEV)/include -B$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -989,10 +1105,14 @@ $multilib     =
 *** android-armv7
 $cc           = gcc
 $cflags       = -march=armv7-a -mandroid -I$(ANDROID_DEV)/include -B$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = armcap.o armv4cpuid.o
 $bn_obj       = bn_asm.o armv4-mont.o armv4-gf2m.o
@@ -1023,10 +1143,14 @@ $multilib     =
 *** android-mips
 $cc           = gcc
 $cflags       = -mandroid -I$(ANDROID_DEV)/include -B$(ANDROID_DEV)/lib -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -1057,10 +1181,14 @@ $multilib     =
 *** android-x86
 $cc           = gcc
 $cflags       = -mandroid -I$(ANDROID_DEV)/include -B$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -1091,10 +1219,14 @@ $multilib     =
 *** aux3-gcc
 $cc           = gcc
 $cflags       = -O2 -DTERMIO
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = AUX
 $lflags       = -lbsd
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1125,10 +1257,14 @@ $multilib     =
 *** bsdi-elf-gcc
 $cc           = gcc
 $cflags       = -DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -1159,10 +1295,14 @@ $multilib     =
 *** cc
 $cc           = cc
 $cflags       = -O
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1192,11 +1332,15 @@ $multilib     =
 
 *** darwin-i386-cc
 $cc           = cc
-$cflags       = -arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN
+$cflags       = -arch i386 -DL_ENDIAN
+$debug_cflags   = -g3
+$release_cflags = -O3 -fomit-frame-pointer
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = MACOSX
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -1226,11 +1370,15 @@ $multilib     =
 
 *** darwin-ppc-cc
 $cc           = cc
-$cflags       = -arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL
+$cflags       = -arch ppc -DB_ENDIAN -Wa,-force_cpusubtype_ALL
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall -O
+$release_cflags = -O3
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = MACOSX
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -1261,10 +1409,14 @@ $multilib     =
 *** darwin64-debug-test-64-clang
 $cc           = clang
 $cflags       = -arch x86_64 -DL_ENDIAN -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = MACOSX
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1295,10 +1447,14 @@ $multilib     =
 *** darwin64-ppc-cc
 $cc           = cc
 $cflags       = -arch ppc64 -O3 -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = MACOSX
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -1328,11 +1484,15 @@ $multilib     =
 
 *** darwin64-x86_64-cc
 $cc           = cc
-$cflags       = -arch x86_64 -O3 -DL_ENDIAN -Wall
+$cflags       = -arch x86_64 -DL_ENDIAN -Wall
+$debug_cflags   = -ggdb -g2 -O0
+$release_cflags = -O3
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = MACOSX
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1363,10 +1523,14 @@ $multilib     =
 *** debug
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -lefence
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1394,115 +1558,17 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-BSD-x86-elf
-$cc           = gcc
-$cflags       = -DL_ENDIAN -O3 -Wall -g
-$unistd       = 
-$thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
-$sys_id       = 
-$lflags       = 
-$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
-$cpuid_obj    = x86cpuid.o
-$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
-$des_obj      = des-586.o crypt586.o
-$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
-$bf_obj       = bf-586.o
-$md5_obj      = md5-586.o
-$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
-$cast_obj     = cast-586.o
-$rc4_obj      = rc4-586.o
-$rmd160_obj   = rmd-586.o
-$rc5_obj      = rc5-586.o
-$wp_obj       = wp_block.o wp-mmx.o
-$cmll_obj     = cmll-x86.o
-$modes_obj    = ghash-x86.o
-$engines_obj  = e_padlock-x86.o
-$perlasm_scheme = elf
-$dso_scheme   = dlfcn
-$shared_target= bsd-shared
-$shared_cflag = -fPIC
-$shared_ldflag = 
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-VC-WIN32
-$cc           = cl
-$cflags       = -W3 -wd4090 -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE
-$unistd       = 
-$thread_cflag = 
-$sys_id       = WIN32
-$lflags       = 
-$bn_ops       = BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN RC4_INDEX MD2_INT
-$cpuid_obj    = x86cpuid.o
-$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
-$des_obj      = des-586.o crypt586.o
-$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
-$bf_obj       = bf-586.o
-$md5_obj      = md5-586.o
-$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
-$cast_obj     = cast-586.o
-$rc4_obj      = rc4-586.o
-$rmd160_obj   = rmd-586.o
-$rc5_obj      = rc5-586.o
-$wp_obj       = wp_block.o wp-mmx.o
-$cmll_obj     = cmll-x86.o
-$modes_obj    = ghash-x86.o
-$engines_obj  = e_padlock-x86.o
-$perlasm_scheme = win32n
-$dso_scheme   = win32
-$shared_target= 
-$shared_cflag = 
-$shared_ldflag = 
-$shared_extension = 
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-VC-WIN64A
-$cc           = cl
-$cflags       = -W3 -wd4090 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
-$unistd       = 
-$thread_cflag = 
-$sys_id       = WIN64A
-$lflags       = 
-$bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
-$cpuid_obj    = x86_64cpuid.o
-$bn_obj       = bn_asm.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86_64.o
-$des_obj      = 
-$aes_obj      = aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o aesni-sha256-x86_64.o aesni-mb-x86_64.o
-$bf_obj       = 
-$md5_obj      = md5-x86_64.o
-$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o sha1-mb-x86_64.o sha256-mb-x86_64.o
-$cast_obj     = 
-$rc4_obj      = rc4-x86_64.o rc4-md5-x86_64.o
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = wp-x86_64.o
-$cmll_obj     = cmll-x86_64.o cmll_misc.o
-$modes_obj    = ghash-x86_64.o aesni-gcm-x86_64.o
-$engines_obj  = e_padlock-x86_64.o
-$perlasm_scheme = auto
-$dso_scheme   = win32
-$shared_target= 
-$shared_cflag = 
-$shared_ldflag = 
-$shared_extension = 
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
 *** debug-VC-WIN64I
 $cc           = cl
 $cflags       = -W3 -wd4090 -Gs0 -Gy -Zi -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = WIN64I
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = ia64.o
@@ -1533,10 +1599,14 @@ $multilib     =
 *** debug-ben
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DDEBUG_SAFESTACK -O2 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1567,10 +1637,14 @@ $multilib     =
 *** debug-ben-darwin64
 $cc           = cc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-language-extension-token -Wno-extended-offsetof -arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = MACOSX
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1601,10 +1675,14 @@ $multilib     =
 *** debug-ben-debug
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DOPENSSL_NO_HW_PADLOCK -g3 -O2 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1635,10 +1713,14 @@ $multilib     =
 *** debug-ben-debug-64
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1669,10 +1751,14 @@ $multilib     =
 *** debug-ben-debug-64-clang
 $cc           = clang
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1703,10 +1789,14 @@ $multilib     =
 *** debug-ben-debug-64-noopt
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-error=overlength-strings -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1737,10 +1827,14 @@ $multilib     =
 *** debug-ben-macos
 $cc           = cc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_ASM -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3 -DL_ENDIAN -g3 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1771,10 +1865,14 @@ $multilib     =
 *** debug-ben-no-opt
 $cc           = gcc
 $cflags       = -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -Wall -g3
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1805,10 +1903,14 @@ $multilib     =
 *** debug-ben-openbsd
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1839,10 +1941,14 @@ $multilib     =
 *** debug-ben-openbsd-debug
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1873,10 +1979,14 @@ $multilib     =
 *** debug-ben-strict
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -1907,10 +2017,14 @@ $multilib     =
 *** debug-bodo
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-error=overlength-strings -DBN_DEBUG -DBN_DEBUG_RAND -DCONF_DEBUG -DBIO_PAIR_DEBUG -m64 -DL_ENDIAN -DTERMIO -g -DMD32_REG_T=int
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -1938,115 +2052,17 @@ $ranlib       =
 $arflags      = 
 $multilib     = 64
 
-*** debug-darwin-i386-cc
-$cc           = cc
-$cflags       = -arch i386 -g3 -DL_ENDIAN
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = MACOSX
-$lflags       = -Wl,-search_paths_first%
-$bn_ops       = BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR
-$cpuid_obj    = x86cpuid.o
-$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
-$des_obj      = des-586.o crypt586.o
-$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
-$bf_obj       = bf-586.o
-$md5_obj      = md5-586.o
-$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
-$cast_obj     = cast-586.o
-$rc4_obj      = rc4-586.o
-$rmd160_obj   = rmd-586.o
-$rc5_obj      = rc5-586.o
-$wp_obj       = wp_block.o wp-mmx.o
-$cmll_obj     = cmll-x86.o
-$modes_obj    = ghash-x86.o
-$engines_obj  = e_padlock-x86.o
-$perlasm_scheme = macosx
-$dso_scheme   = dlfcn
-$shared_target= darwin-shared
-$shared_cflag = -fPIC -fno-common
-$shared_ldflag = -arch i386 -dynamiclib
-$shared_extension = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-darwin-ppc-cc
-$cc           = cc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = MACOSX
-$lflags       = 
-$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
-$cpuid_obj    = ppccpuid.o ppccap.o
-$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
-$ec_obj       = 
-$des_obj      = 
-$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = ghashp8-ppc.o
-$engines_obj  = 
-$perlasm_scheme = osx32
-$dso_scheme   = dlfcn
-$shared_target= darwin-shared
-$shared_cflag = -fPIC
-$shared_ldflag = -dynamiclib
-$shared_extension = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-darwin64-x86_64-cc
-$cc           = cc
-$cflags       = -arch x86_64 -ggdb -g2 -O0 -DL_ENDIAN -Wall
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = MACOSX
-$lflags       = -Wl,-search_paths_first%
-$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
-$cpuid_obj    = x86_64cpuid.o
-$bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86_64.o
-$des_obj      = 
-$aes_obj      = aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o aesni-sha256-x86_64.o aesni-mb-x86_64.o
-$bf_obj       = 
-$md5_obj      = md5-x86_64.o
-$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o sha1-mb-x86_64.o sha256-mb-x86_64.o
-$cast_obj     = 
-$rc4_obj      = rc4-x86_64.o rc4-md5-x86_64.o
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = wp-x86_64.o
-$cmll_obj     = cmll-x86_64.o cmll_misc.o
-$modes_obj    = ghash-x86_64.o aesni-gcm-x86_64.o
-$engines_obj  = e_padlock-x86_64.o
-$perlasm_scheme = macosx
-$dso_scheme   = dlfcn
-$shared_target= darwin-shared
-$shared_cflag = -fPIC -fno-common
-$shared_ldflag = -arch x86_64 -dynamiclib
-$shared_extension = .$(SHLIB_MAJOR).$(SHLIB_MINOR).dylib
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
 *** debug-erbridge
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DBN_DEBUG -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -2077,10 +2093,14 @@ $multilib     = 64
 *** debug-geoff32
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG
 $cpuid_obj    = 
 $bn_obj       = 
@@ -2111,198 +2131,32 @@ $multilib     =
 *** debug-geoff64
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
 $ec_obj       = 
-$des_obj      = 
-$aes_obj      = 
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = 
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = 
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= linux-shared
-$shared_cflag = -fPIC
-$shared_ldflag = 
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-levitte-linux-elf
-$cc           = gcc
-$cflags       = -DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -ldl
-$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
-$cpuid_obj    = x86cpuid.o
-$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
-$des_obj      = des-586.o crypt586.o
-$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
-$bf_obj       = bf-586.o
-$md5_obj      = md5-586.o
-$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
-$cast_obj     = cast-586.o
-$rc4_obj      = rc4-586.o
-$rmd160_obj   = rmd-586.o
-$rc5_obj      = rc5-586.o
-$wp_obj       = wp_block.o wp-mmx.o
-$cmll_obj     = cmll-x86.o
-$modes_obj    = ghash-x86.o
-$engines_obj  = e_padlock-x86.o
-$perlasm_scheme = elf
-$dso_scheme   = dlfcn
-$shared_target= linux-shared
-$shared_cflag = -fPIC
-$shared_ldflag = 
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-levitte-linux-elf-extreme
-$cc           = gcc
-$cflags       = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -ldl
-$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
-$cpuid_obj    = x86cpuid.o
-$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
-$des_obj      = des-586.o crypt586.o
-$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
-$bf_obj       = bf-586.o
-$md5_obj      = md5-586.o
-$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
-$cast_obj     = cast-586.o
-$rc4_obj      = rc4-586.o
-$rmd160_obj   = rmd-586.o
-$rc5_obj      = rc5-586.o
-$wp_obj       = wp_block.o wp-mmx.o
-$cmll_obj     = cmll-x86.o
-$modes_obj    = ghash-x86.o
-$engines_obj  = e_padlock-x86.o
-$perlasm_scheme = elf
-$dso_scheme   = dlfcn
-$shared_target= linux-shared
-$shared_cflag = -fPIC
-$shared_ldflag = 
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-levitte-linux-noasm
-$cc           = gcc
-$cflags       = -DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -ldl
-$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
-$cpuid_obj    = 
-$bn_obj       = 
-$ec_obj       = 
-$des_obj      = 
-$aes_obj      = 
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = 
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = 
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= linux-shared
-$shared_cflag = -fPIC
-$shared_ldflag = 
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-levitte-linux-noasm-extreme
-$cc           = gcc
-$cflags       = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -ldl
-$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
-$cpuid_obj    = 
-$bn_obj       = 
-$ec_obj       = 
-$des_obj      = 
-$aes_obj      = 
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = 
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = 
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= linux-shared
-$shared_cflag = -fPIC
-$shared_ldflag = 
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-linux-elf
-$cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -lefence -ldl
-$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
-$cpuid_obj    = x86cpuid.o
-$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
-$des_obj      = des-586.o crypt586.o
-$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
-$bf_obj       = bf-586.o
-$md5_obj      = md5-586.o
-$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
-$cast_obj     = cast-586.o
-$rc4_obj      = rc4-586.o
-$rmd160_obj   = rmd-586.o
-$rc5_obj      = rc5-586.o
-$wp_obj       = wp_block.o wp-mmx.o
-$cmll_obj     = cmll-x86.o
-$modes_obj    = ghash-x86.o
-$engines_obj  = e_padlock-x86.o
-$perlasm_scheme = elf
+$des_obj      = 
+$aes_obj      = 
+$bf_obj       = 
+$md5_obj      = 
+$sha1_obj     = 
+$cast_obj     = 
+$rc4_obj      = 
+$rmd160_obj   = 
+$rc5_obj      = 
+$wp_obj       = 
+$cmll_obj     = 
+$modes_obj    = 
+$engines_obj  = 
+$perlasm_scheme = void
 $dso_scheme   = dlfcn
 $shared_target= linux-shared
 $shared_cflag = -fPIC
@@ -2312,13 +2166,17 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-linux-elf-noefence
+*** debug-levitte-linux-elf-extreme
 $cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall
+$cflags       = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -2346,14 +2204,18 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-linux-generic32
+*** debug-levitte-linux-noasm
 $cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall
+$cflags       = -DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
-$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
+$debug_lflags   = 
+$release_lflags = 
+$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
 $ec_obj       = 
@@ -2380,14 +2242,18 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-linux-generic64
+*** debug-levitte-linux-noasm-extreme
 $cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g -Wall
+$cflags       = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
-$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
+$debug_lflags   = 
+$release_lflags = 
+$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
 $ec_obj       = 
@@ -2414,13 +2280,55 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
+*** debug-linux-elf-noefence
+$cc           = gcc
+$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -march=i486 -Wall
+$debug_cflags   = 
+$release_cflags = 
+$unistd       = 
+$thread_cflag = -D_REENTRANT
+$sys_id       = 
+$lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
+$bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
+$cpuid_obj    = x86cpuid.o
+$bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
+$ec_obj       = ecp_nistz256.o ecp_nistz256-x86.o
+$des_obj      = des-586.o crypt586.o
+$aes_obj      = aes-586.o vpaes-x86.o aesni-x86.o
+$bf_obj       = bf-586.o
+$md5_obj      = md5-586.o
+$sha1_obj     = sha1-586.o sha256-586.o sha512-586.o
+$cast_obj     = cast-586.o
+$rc4_obj      = rc4-586.o
+$rmd160_obj   = rmd-586.o
+$rc5_obj      = rc5-586.o
+$wp_obj       = wp_block.o wp-mmx.o
+$cmll_obj     = cmll-x86.o
+$modes_obj    = ghash-x86.o
+$engines_obj  = e_padlock-x86.o
+$perlasm_scheme = elf
+$dso_scheme   = dlfcn
+$shared_target= linux-shared
+$shared_cflag = -fPIC
+$shared_ldflag = 
+$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
+$ranlib       = 
+$arflags      = 
+$multilib     = 
+
 *** debug-linux-ia32-aes
 $cc           = gcc
 $cflags       = -DAES_EXPERIMENTAL -DL_ENDIAN -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o
@@ -2451,10 +2359,14 @@ $multilib     =
 *** debug-linux-pentium
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentium -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -2485,10 +2397,14 @@ $multilib     =
 *** debug-linux-ppro
 $cc           = gcc
 $cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -g -mcpu=pentiumpro -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -2516,47 +2432,17 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-linux-x86_64
-$cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -g -Wall
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -ldl
-$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
-$cpuid_obj    = x86_64cpuid.o
-$bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
-$ec_obj       = ecp_nistz256.o ecp_nistz256-x86_64.o
-$des_obj      = 
-$aes_obj      = aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o aesni-sha256-x86_64.o aesni-mb-x86_64.o
-$bf_obj       = 
-$md5_obj      = md5-x86_64.o
-$sha1_obj     = sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o sha1-mb-x86_64.o sha256-mb-x86_64.o
-$cast_obj     = 
-$rc4_obj      = rc4-x86_64.o rc4-md5-x86_64.o
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = wp-x86_64.o
-$cmll_obj     = cmll-x86_64.o cmll_misc.o
-$modes_obj    = ghash-x86_64.o aesni-gcm-x86_64.o
-$engines_obj  = e_padlock-x86_64.o
-$perlasm_scheme = elf
-$dso_scheme   = dlfcn
-$shared_target= linux-shared
-$shared_cflag = -fPIC
-$shared_ldflag = -m64
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 64
-
 *** debug-rse
 $cc           = cc
 $cflags       = -DL_ENDIAN -pipe -O -g -ggdb3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -2584,149 +2470,17 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-solaris-sparcv8-cc
-$cc           = cc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -lsocket -lnsl -ldl
-$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
-$cpuid_obj    = 
-$bn_obj       = sparcv8.o
-$ec_obj       = 
-$des_obj      = des_enc-sparc.o fcrypt_b.o
-$aes_obj      = 
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = 
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = 
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= solaris-shared
-$shared_cflag = -KPIC
-$shared_ldflag = -G -dy -z text
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-solaris-sparcv8-gcc
-$cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = 
-$lflags       = -lsocket -lnsl -ldl
-$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
-$cpuid_obj    = 
-$bn_obj       = sparcv8.o
-$ec_obj       = 
-$des_obj      = des_enc-sparc.o fcrypt_b.o
-$aes_obj      = 
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = 
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = 
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= solaris-shared
-$shared_cflag = -fPIC
-$shared_ldflag = -shared
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-solaris-sparcv9-cc
-$cc           = cc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = ULTRASPARC
-$lflags       = -lsocket -lnsl -ldl
-$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
-$cpuid_obj    = sparcv9cap.o sparccpuid.o
-$bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
-$ec_obj       = 
-$des_obj      = des_enc-sparc.o fcrypt_b.o dest4-sparcv9.o
-$aes_obj      = aes_core.o aes_cbc.o aes-sparcv9.o aest4-sparcv9.o
-$bf_obj       = 
-$md5_obj      = md5-sparcv9.o
-$sha1_obj     = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = camellia.o cmll_misc.o cmll_cbc.o cmllt4-sparcv9.o
-$modes_obj    = ghash-sparcv9.o
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= solaris-shared
-$shared_cflag = -KPIC
-$shared_ldflag = -G -dy -z text
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
-*** debug-solaris-sparcv9-gcc
-$cc           = gcc
-$cflags       = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W
-$unistd       = 
-$thread_cflag = -D_REENTRANT
-$sys_id       = ULTRASPARC
-$lflags       = -lsocket -lnsl -ldl
-$bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
-$cpuid_obj    = sparcv9cap.o sparccpuid.o
-$bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
-$ec_obj       = 
-$des_obj      = des_enc-sparc.o fcrypt_b.o dest4-sparcv9.o
-$aes_obj      = aes_core.o aes_cbc.o aes-sparcv9.o aest4-sparcv9.o
-$bf_obj       = 
-$md5_obj      = md5-sparcv9.o
-$sha1_obj     = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = camellia.o cmll_misc.o cmll_cbc.o cmllt4-sparcv9.o
-$modes_obj    = ghash-sparcv9.o
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = dlfcn
-$shared_target= solaris-shared
-$shared_cflag = -fPIC
-$shared_ldflag = -shared
-$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
 *** debug-steve-opt
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -2757,10 +2511,14 @@ $multilib     =
 *** debug-steve32
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -rdynamic -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -2791,10 +2549,14 @@ $multilib     =
 *** debug-steve64
 $cc           = gcc
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -Wno-overlength-strings -g
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -2825,10 +2587,14 @@ $multilib     =
 *** debug-test-64-clang
 $cc           = clang
 $cflags       = -Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread -D_THREAD_SAFE -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -2856,47 +2622,17 @@ $ranlib       =
 $arflags      = 
 $multilib     = 
 
-*** debug-vos-gcc
-$cc           = gcc
-$cflags       = -O0 -g -Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG
-$unistd       = 
-$thread_cflag = (unknown)
-$sys_id       = VOS
-$lflags       = -Wl,-map
-$bn_ops       = BN_LLONG
-$cpuid_obj    = 
-$bn_obj       = 
-$ec_obj       = 
-$des_obj      = 
-$aes_obj      = 
-$bf_obj       = 
-$md5_obj      = 
-$sha1_obj     = 
-$cast_obj     = 
-$rc4_obj      = 
-$rmd160_obj   = 
-$rc5_obj      = 
-$wp_obj       = 
-$cmll_obj     = 
-$modes_obj    = 
-$engines_obj  = 
-$perlasm_scheme = void
-$dso_scheme   = 
-$shared_target= 
-$shared_cflag = 
-$shared_ldflag = 
-$shared_extension = .so
-$ranlib       = 
-$arflags      = 
-$multilib     = 
-
 *** dist
 $cc           = cc
 $cflags       = -O
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -2927,10 +2663,14 @@ $multilib     =
 *** gcc
 $cc           = gcc
 $cflags       = -O3
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG
 $cpuid_obj    = 
 $bn_obj       = 
@@ -2961,10 +2701,14 @@ $multilib     =
 *** hpux-cc
 $cc           = cc
 $cflags       = -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = 
 $bn_obj       = 
@@ -2995,10 +2739,14 @@ $multilib     =
 *** hpux-gcc
 $cc           = gcc
 $cflags       = -DB_ENDIAN -DBN_DIV2W -O3
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = 
 $bn_obj       = 
@@ -3029,10 +2777,14 @@ $multilib     =
 *** hpux-ia64-cc
 $cc           = cc
 $cflags       = -Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -3063,10 +2815,14 @@ $multilib     = /hpux32
 *** hpux-ia64-gcc
 $cc           = gcc
 $cflags       = -O3 -DB_ENDIAN -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -3097,10 +2853,14 @@ $multilib     = /hpux32
 *** hpux-parisc-cc
 $cc           = cc
 $cflags       = +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -3131,10 +2891,14 @@ $multilib     =
 *** hpux-parisc-cc-o4
 $cc           = cc
 $cflags       = -Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = 
 $bn_obj       = 
@@ -3165,10 +2929,14 @@ $multilib     =
 *** hpux-parisc-gcc
 $cc           = gcc
 $cflags       = -O3 -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = 
 $bn_obj       = 
@@ -3199,10 +2967,14 @@ $multilib     =
 *** hpux-parisc1_1-cc
 $cc           = cc
 $cflags       = +DA1.1 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = pariscid.o
 $bn_obj       = bn_asm.o parisc-mont.o
@@ -3233,10 +3005,14 @@ $multilib     = /pa1.1
 *** hpux-parisc1_1-gcc
 $cc           = gcc
 $cflags       = -O3 -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = pariscid.o
 $bn_obj       = bn_asm.o parisc-mont.o
@@ -3267,10 +3043,14 @@ $multilib     = /pa1.1
 *** hpux-parisc2-cc
 $cc           = cc
 $cflags       = +DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = pariscid.o
 $bn_obj       = pa-risc2.o parisc-mont.o
@@ -3301,10 +3081,14 @@ $multilib     = /pa20_32
 *** hpux-parisc2-gcc
 $cc           = gcc
 $cflags       = -march=2.0 -O3 -DB_ENDIAN -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -Wl,+s -ldld
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1
 $cpuid_obj    = pariscid.o
 $bn_obj       = pa-risc2.o parisc-mont.o
@@ -3335,10 +3119,14 @@ $multilib     = /pa20_32
 *** hpux64-ia64-cc
 $cc           = cc
 $cflags       = -Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -3369,10 +3157,14 @@ $multilib     = /hpux64
 *** hpux64-ia64-gcc
 $cc           = gcc
 $cflags       = -mlp64 -O3 -DB_ENDIAN -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -3403,10 +3195,14 @@ $multilib     = /hpux64
 *** hpux64-parisc2-cc
 $cc           = cc
 $cflags       = +DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = pariscid.o
 $bn_obj       = pa-risc2W.o parisc-mont.o
@@ -3437,10 +3233,14 @@ $multilib     = /pa20_64
 *** hpux64-parisc2-gcc
 $cc           = gcc
 $cflags       = -O3 -DB_ENDIAN -D_REENTRANT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT
 $cpuid_obj    = 
 $bn_obj       = pa-risc2W.o
@@ -3471,10 +3271,14 @@ $multilib     = /pa20_64
 *** hurd-x86
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -3505,10 +3309,14 @@ $multilib     =
 *** ios64-cross
 $cc           = cc
 $cflags       = -O3 -arch arm64 -mios-version-min=7.0.0 -isysroot $(CROSS_TOP)/SDKs/$(CROSS_SDK) -fno-common
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = iOS
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = armcap.o arm64cpuid.o mem_clr.o
 $bn_obj       = 
@@ -3539,10 +3347,14 @@ $multilib     =
 *** iphoneos-cross
 $cc           = cc
 $cflags       = -O3 -isysroot $(CROSS_TOP)/SDKs/$(CROSS_SDK) -fomit-frame-pointer -fno-common
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = iOS
 $lflags       = -Wl,-search_paths_first%
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -3573,10 +3385,14 @@ $multilib     =
 *** irix-cc
 $cc           = cc
 $cflags       = -O2 -use_readonly_const -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -3607,10 +3423,14 @@ $multilib     =
 *** irix-gcc
 $cc           = gcc
 $cflags       = -O3 -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -3641,10 +3461,14 @@ $multilib     =
 *** irix-mips3-cc
 $cc           = cc
 $cflags       = -n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_SGI_MP_SOURCE
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -3675,10 +3499,14 @@ $multilib     = 32
 *** irix-mips3-gcc
 $cc           = gcc
 $cflags       = -mabi=n32 -O3 -DB_ENDIAN -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_SGI_MP_SOURCE
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -3709,10 +3537,14 @@ $multilib     = 32
 *** irix64-mips4-cc
 $cc           = cc
 $cflags       = -64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_SGI_MP_SOURCE
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -3743,10 +3575,14 @@ $multilib     = 64
 *** irix64-mips4-gcc
 $cc           = gcc
 $cflags       = -mabi=64 -mips4 -O3 -DB_ENDIAN -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_SGI_MP_SOURCE
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -3777,10 +3613,14 @@ $multilib     = 64
 *** linux-aarch64
 $cc           = gcc
 $cflags       = -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = armcap.o arm64cpuid.o mem_clr.o
 $bn_obj       = 
@@ -3811,10 +3651,14 @@ $multilib     =
 *** linux-alpha+bwx-ccc
 $cc           = ccc
 $cflags       = -fast -readonly_strings -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -3845,10 +3689,14 @@ $multilib     =
 *** linux-alpha+bwx-gcc
 $cc           = gcc
 $cflags       = -O3 -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -3879,10 +3727,14 @@ $multilib     =
 *** linux-alpha-ccc
 $cc           = ccc
 $cflags       = -fast -readonly_strings -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -3913,10 +3765,14 @@ $multilib     =
 *** linux-alpha-gcc
 $cc           = gcc
 $cflags       = -O3 -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -3947,10 +3803,14 @@ $multilib     =
 *** linux-aout
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -3981,10 +3841,14 @@ $multilib     =
 *** linux-armv4
 $cc           = gcc
 $cflags       = -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = armcap.o armv4cpuid.o
 $bn_obj       = bn_asm.o armv4-mont.o armv4-gf2m.o
@@ -4015,10 +3879,14 @@ $multilib     =
 *** linux-c64xplus
 $cc           = cl6x
 $cflags       = --linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden -DOPENSSL_SMALL_FOOTPRINT
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG
 $cpuid_obj    = c64xpluscpuid.o
 $bn_obj       = bn-c64xplus.o c64xplus-gf2m.o
@@ -4048,11 +3916,15 @@ $multilib     =
 
 *** linux-elf
 $cc           = gcc
-$cflags       = -DL_ENDIAN -O3 -fomit-frame-pointer -Wall
+$cflags       = -DL_ENDIAN -Wall
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -g -march=i486
+$release_cflags = -O3 -fomit-frame-pointer
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = -lefence
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -4082,11 +3954,15 @@ $multilib     =
 
 *** linux-generic32
 $cc           = gcc
-$cflags       = -O3 -fomit-frame-pointer -Wall
+$cflags       = -Wall
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g
+$release_cflags = -O3 -fomit-frame-pointer
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -4116,11 +3992,15 @@ $multilib     =
 
 *** linux-generic64
 $cc           = gcc
-$cflags       = -O3 -Wall
+$cflags       = -Wall
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g
+$release_cflags = -O3
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -4151,10 +4031,14 @@ $multilib     =
 *** linux-ia32-icc
 $cc           = icc
 $cflags       = -DL_ENDIAN -O2
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl -no_cpprt
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -4185,10 +4069,14 @@ $multilib     =
 *** linux-ia64
 $cc           = gcc
 $cflags       = -DL_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -4219,10 +4107,14 @@ $multilib     =
 *** linux-ia64-icc
 $cc           = icc
 $cflags       = -DL_ENDIAN -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl -no_cpprt
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT
 $cpuid_obj    = ia64cpuid.o
 $bn_obj       = bn-ia64.o ia64-mont.o
@@ -4253,10 +4145,14 @@ $multilib     =
 *** linux-mips32
 $cc           = gcc
 $cflags       = -mabi=32 -O3 -Wall -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -4287,10 +4183,14 @@ $multilib     =
 *** linux-mips64
 $cc           = gcc
 $cflags       = -mabi=n32 -O3 -Wall -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -4321,10 +4221,14 @@ $multilib     = 32
 *** linux-ppc
 $cc           = gcc
 $cflags       = -DB_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -4355,10 +4259,14 @@ $multilib     =
 *** linux-ppc64
 $cc           = gcc
 $cflags       = -m64 -DB_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -4389,10 +4297,14 @@ $multilib     = 64
 *** linux-ppc64le
 $cc           = gcc
 $cflags       = -m64 -DL_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
 $cpuid_obj    = ppccpuid.o ppccap.o
 $bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
@@ -4423,10 +4335,14 @@ $multilib     =
 *** linux-sparcv8
 $cc           = gcc
 $cflags       = -mv8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = sparcv8.o
@@ -4457,10 +4373,14 @@ $multilib     =
 *** linux-sparcv9
 $cc           = gcc
 $cflags       = -m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = ULTRASPARC
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -4491,10 +4411,14 @@ $multilib     =
 *** linux-x32
 $cc           = gcc
 $cflags       = -mx32 -DL_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -4524,11 +4448,15 @@ $multilib     = x32
 
 *** linux-x86_64
 $cc           = gcc
-$cflags       = -m64 -DL_ENDIAN -O3 -Wall
+$cflags       = -m64 -DL_ENDIAN -Wall
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -g
+$release_cflags = -O3
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -4559,10 +4487,14 @@ $multilib     = 64
 *** linux-x86_64-clang
 $cc           = clang
 $cflags       = -m64 -DL_ENDIAN -O3 -Weverything -Wno-language-extension-token -Wno-extended-offsetof -Wno-padded -Wno-shorten-64-to-32 -Wno-format-nonliteral -Wno-missing-noreturn -Wno-unused-parameter -Wno-sign-conversion -Wno-unreachable-code -Wno-conversion -Wno-documentation -Wno-missing-variable-declarations -Wno-cast-align -Wno-incompatible-pointer-types-discards-qualifiers -Wno-missing-variable-declarations -Wno-missing-field-initializers -Wno-unused-macros -Wno-disabled-macro-expansion -Wno-conditional-uninitialized -Wno-switch-enum -Qunused-arguments
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -4593,10 +4525,14 @@ $multilib     = 64
 *** linux-x86_64-icc
 $cc           = icc
 $cflags       = -DL_ENDIAN -O2
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl -no_cpprt
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -4627,10 +4563,14 @@ $multilib     = 64
 *** linux32-s390x
 $cc           = gcc
 $cflags       = -m31 -Wa,-mzarch -DB_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = s390xcap.o s390xcpuid.o
 $bn_obj       = bn_asm.o s390x-mont.o s390x-gf2m.o
@@ -4661,10 +4601,14 @@ $multilib     = /highgprs
 *** linux64-mips64
 $cc           = gcc
 $cflags       = -mabi=64 -O3 -Wall -DBN_DIV3W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -4695,10 +4639,14 @@ $multilib     = 64
 *** linux64-s390x
 $cc           = gcc
 $cflags       = -m64 -DB_ENDIAN -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = s390xcap.o s390xcpuid.o
 $bn_obj       = bn-s390x.o s390x-mont.o s390x-gf2m.o
@@ -4729,10 +4677,14 @@ $multilib     = 64
 *** linux64-sparcv9
 $cc           = gcc
 $cflags       = -m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = ULTRASPARC
 $lflags       = -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -4763,10 +4715,14 @@ $multilib     = 64
 *** mingw
 $cc           = gcc
 $cflags       = -mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_MT
 $sys_id       = MINGW32
 $lflags       = -lws2_32 -lgdi32 -lcrypt32
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT EXPORT_VAR_AS_FN
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -4797,10 +4753,14 @@ $multilib     =
 *** mingw64
 $cc           = gcc
 $cflags       = -mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_MT
 $sys_id       = MINGW64
 $lflags       = -lws2_32 -lgdi32 -lcrypt32
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -4831,10 +4791,14 @@ $multilib     =
 *** netware-clib
 $cc           = mwccnlm
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -4865,10 +4829,14 @@ $multilib     =
 *** netware-clib-bsdsock
 $cc           = mwccnlm
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -4899,10 +4867,14 @@ $multilib     =
 *** netware-clib-bsdsock-gcc
 $cc           = i586-netware-gcc
 $cflags       = -nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -4933,10 +4905,14 @@ $multilib     =
 *** netware-clib-gcc
 $cc           = i586-netware-gcc
 $cflags       = -nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -4967,10 +4943,14 @@ $multilib     =
 *** netware-libc
 $cc           = mwccnlm
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5001,10 +4981,14 @@ $multilib     =
 *** netware-libc-bsdsock
 $cc           = mwccnlm
 $cflags       = 
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5035,10 +5019,14 @@ $multilib     =
 *** netware-libc-bsdsock-gcc
 $cc           = i586-netware-gcc
 $cflags       = -nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5069,10 +5057,14 @@ $multilib     =
 *** netware-libc-gcc
 $cc           = i586-netware-gcc
 $cflags       = -nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5103,10 +5095,14 @@ $multilib     =
 *** nextstep
 $cc           = cc
 $cflags       = -O -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = <libc.h>
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5137,10 +5133,14 @@ $multilib     =
 *** nextstep3.3
 $cc           = cc
 $cflags       = -O3 -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = <libc.h>
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5171,10 +5171,14 @@ $multilib     =
 *** osf1-alpha-cc
 $cc           = cc
 $cflags       = -std1 -tune host -O4 -readonly_strings
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -5205,10 +5209,14 @@ $multilib     =
 *** osf1-alpha-gcc
 $cc           = gcc
 $cflags       = -O3
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -5239,10 +5247,14 @@ $multilib     =
 *** purify
 $cc           = purify gcc
 $cflags       = -g -DPURIFY -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -lsocket -lnsl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5273,10 +5285,14 @@ $multilib     =
 *** qnx4
 $cc           = cc
 $cflags       = -DL_ENDIAN -DTERMIO
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5307,10 +5323,14 @@ $multilib     =
 *** sco5-cc
 $cc           = cc
 $cflags       = -belf
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -lsocket -lnsl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -5341,10 +5361,14 @@ $multilib     =
 *** sco5-gcc
 $cc           = gcc
 $cflags       = -O3 -fomit-frame-pointer
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = -lsocket -lnsl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -5375,10 +5399,14 @@ $multilib     =
 *** solaris-sparcv7-cc
 $cc           = cc
 $cflags       = -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5409,10 +5437,14 @@ $multilib     =
 *** solaris-sparcv7-gcc
 $cc           = gcc
 $cflags       = -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5442,11 +5474,15 @@ $multilib     =
 
 *** solaris-sparcv8-cc
 $cc           = cc
-$cflags       = -xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W
+$cflags       = -xarch=v8 -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -g -O
+$release_cflags = -xO5 -xdepend
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = sparcv8.o
@@ -5476,11 +5512,15 @@ $multilib     =
 
 *** solaris-sparcv8-gcc
 $cc           = gcc
-$cflags       = -mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W
+$cflags       = -mv8 -Wall -DB_ENDIAN
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g
+$release_cflags = -O3 -fomit-frame-pointer -DBN_DIV2W
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = sparcv8.o
@@ -5510,11 +5550,15 @@ $multilib     =
 
 *** solaris-sparcv9-cc
 $cc           = cc
-$cflags       = -xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W
+$cflags       = -xtarget=ultra -xarch=v8plus -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -g -O
+$release_cflags = -xO5 -xdepend
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = ULTRASPARC
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -5544,11 +5588,15 @@ $multilib     =
 
 *** solaris-sparcv9-gcc
 $cc           = gcc
-$cflags       = -m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W
+$cflags       = -m32 -mcpu=ultrasparc -Wall -DB_ENDIAN -DBN_DIV2W
+$debug_cflags   = -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -pedantic -ansi -Wshadow -Wno-long-long -D__EXTENSIONS__
+$release_cflags = -O3 -fomit-frame-pointer
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = ULTRASPARC
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -5579,10 +5627,14 @@ $multilib     =
 *** solaris-x86-cc
 $cc           = cc
 $cflags       = -fast -xarch=generic -O -Xa
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5613,10 +5665,14 @@ $multilib     =
 *** solaris-x86-gcc
 $cc           = gcc
 $cflags       = -O3 -fomit-frame-pointer -march=pentium -Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -5647,10 +5703,14 @@ $multilib     =
 *** solaris64-sparcv9-cc
 $cc           = cc
 $cflags       = -xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = ULTRASPARC
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -5681,10 +5741,14 @@ $multilib     = /64
 *** solaris64-sparcv9-gcc
 $cc           = gcc
 $cflags       = -m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = ULTRASPARC
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR
 $cpuid_obj    = sparcv9cap.o sparccpuid.o
 $bn_obj       = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o vis3-mont.o sparct4-mont.o sparcv9-gf2m.o
@@ -5715,10 +5779,14 @@ $multilib     = /64
 *** solaris64-x86_64-cc
 $cc           = cc
 $cflags       = -fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -5749,10 +5817,14 @@ $multilib     = /64
 *** solaris64-x86_64-gcc
 $cc           = gcc
 $cflags       = -m64 -O3 -Wall -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl -ldl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL
 $cpuid_obj    = x86_64cpuid.o
 $bn_obj       = x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
@@ -5783,10 +5855,14 @@ $multilib     = /64
 *** tru64-alpha-cc
 $cc           = cc
 $cflags       = -std1 -tune host -fast -readonly_strings
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -pthread
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHUNK
 $cpuid_obj    = alphacpuid.o
 $bn_obj       = bn_asm.o alpha-mont.o
@@ -5817,10 +5893,14 @@ $multilib     =
 *** uClinux-dist
 $cc           = 
 $cflags       = $(CFLAGS)
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = $(LDFLAGS) $(LDLIBS)
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5851,10 +5931,14 @@ $multilib     =
 *** uClinux-dist64
 $cc           = 
 $cflags       = $(CFLAGS)
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = $(LDFLAGS) $(LDLIBS)
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = SIXTY_FOUR_BIT_LONG
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5885,10 +5969,14 @@ $multilib     =
 *** ultrix-cc
 $cc           = cc
 $cflags       = -std1 -O -Olimit 2500 -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5919,10 +6007,14 @@ $multilib     =
 *** ultrix-gcc
 $cc           = gcc
 $cflags       = -O3 -DL_ENDIAN
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = 
 $lflags       = 
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5953,10 +6045,14 @@ $multilib     =
 *** unixware-2.0
 $cc           = cc
 $cflags       = -DFILIO_H -DNO_STRINGS_H
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -Kthread
 $sys_id       = 
 $lflags       = -lsocket -lnsl -lresolv -lx
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -5987,10 +6083,14 @@ $multilib     =
 *** unixware-2.1
 $cc           = cc
 $cflags       = -O -DFILIO_H
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -Kthread
 $sys_id       = 
 $lflags       = -lsocket -lnsl -lresolv -lx
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6021,10 +6121,14 @@ $multilib     =
 *** unixware-7
 $cc           = cc
 $cflags       = -O -DFILIO_H -Kalloca
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -Kthread
 $sys_id       = 
 $lflags       = -lsocket -lnsl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG MD2_CHAR RC4_INDEX DES_PTR DES_RISC1 DES_UNROLL
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -6055,10 +6159,14 @@ $multilib     =
 *** unixware-7-gcc
 $cc           = gcc
 $cflags       = -DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -march=pentium -Wall
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
 $lflags       = -lsocket -lnsl
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG DES_PTR DES_RISC1 DES_UNROLL RC4_INDEX MD2_INT
 $cpuid_obj    = x86cpuid.o
 $bn_obj       = bn-586.o co-586.o x86-mont.o x86-gf2m.o
@@ -6088,11 +6196,15 @@ $multilib     =
 
 *** vos-gcc
 $cc           = gcc
-$cflags       = -O3 -Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN
+$cflags       = -Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN
+$debug_cflags   = -O0 -g -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG
+$release_cflags = -O3
 $unistd       = 
 $thread_cflag = (unknown)
 $sys_id       = VOS
 $lflags       = -Wl,-map
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = BN_LLONG
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6123,10 +6235,14 @@ $multilib     =
 *** vxworks-mips
 $cc           = ccmips
 $cflags       = -mrtp -mips2 -O -G 0 -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE="$(WIND_BASE)/target/lib/h/config/vsbConfig.h" -DCPU=MIPS32 -msoft-float -mno-branch-likely -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I$(WIND_BASE)/target/usr/h -I$(WIND_BASE)/target/h/wrn/coreip
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = VXWORKS
 $lflags       = -Wl,--defsym,__wrs_rtp_base=0xe0000000 -L $(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = bn-mips.o mips-mont.o
@@ -6157,10 +6273,14 @@ $multilib     =
 *** vxworks-ppc405
 $cc           = ccppc
 $cflags       = -g -msoft-float -mlongcall -DCPU=PPC405 -I$(WIND_BASE)/target/h
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -r
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6191,10 +6311,14 @@ $multilib     =
 *** vxworks-ppc60x
 $cc           = ccppc
 $cflags       = -D_REENTRANT -mrtp -mhard-float -mstrict-align -fno-implicit-fp -DPPC32_fp60x -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I$(WIND_BASE)/target/usr/h -I$(WIND_BASE)/target/usr/h/wrn/coreip
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -Wl,--defsym,__wrs_rtp_base=0xe0000000 -L $(WIND_BASE)/target/usr/lib/ppc/PPC32/common
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6225,10 +6349,14 @@ $multilib     =
 *** vxworks-ppc750
 $cc           = ccppc
 $cflags       = -ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I$(WIND_BASE)/target/h $(DEBUG_FLAG)
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -r
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6259,10 +6387,14 @@ $multilib     =
 *** vxworks-ppc750-debug
 $cc           = ccppc
 $cflags       = -ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -r
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6293,10 +6425,14 @@ $multilib     =
 *** vxworks-ppc860
 $cc           = ccppc
 $cflags       = -nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I$(WIND_BASE)/target/h
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -r
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6327,10 +6463,14 @@ $multilib     =
 *** vxworks-ppcgen
 $cc           = ccppc
 $cflags       = -D_REENTRANT -mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I$(WIND_BASE)/target/usr/h -I$(WIND_BASE)/target/usr/h/wrn/coreip
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -Wl,--defsym,__wrs_rtp_base=0xe0000000 -L $(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 
@@ -6361,10 +6501,14 @@ $multilib     =
 *** vxworks-simlinux
 $cc           = ccpentium
 $cflags       = -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE="$(WIND_BASE)/target/lib/h/config/vsbConfig.h" -DL_ENDIAN -DCPU=SIMLINUX -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DOPENSSL_NO_HW_PADLOCK
+$debug_cflags   = 
+$release_cflags = 
 $unistd       = 
 $thread_cflag = 
 $sys_id       = VXWORKS
 $lflags       = -r
+$debug_lflags   = 
+$release_lflags = 
 $bn_ops       = 
 $cpuid_obj    = 
 $bn_obj       = 


More information about the openssl-commits mailing list