Configuration: Streamline NonStop entries
authorRichard Levitte <levitte@openssl.org>
Mon, 21 Sep 2020 11:11:28 +0000 (13:11 +0200)
committerRichard Levitte <levitte@openssl.org>
Thu, 24 Sep 2020 06:06:50 +0000 (08:06 +0200)
Because there are many combinations and much repetition, we add a large
number of templates to cover all aspects, and make the actual config
entries inherit from the templates combined.

Fixes #12858

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12933)

Configurations/50-nonstop.conf

index 51034c70aab916dacec0e5f07b6695d7583d81e7..e11bc7708382a12b642940221f0a08a4f65c596f 100644 (file)
 #### Nonstop configurations
-    "nonstop-common" => {
-        inherit_from     => [ "BASE_unix" ],
-        template         => 1,
-        cc               => "c99",
-        cflags           => add_before(picker(debug   => "-g -O0",
-                                              release => "-g -O2") ,"-Wextensions -Wnowarn=203,220,272,734,770,1506 -Wbuild_neutral_library"),
-        perl             => "/usr/bin/perl",
-        lflags           => "-lrld",
-        shared_target    => "self",
-        shared_cflag     => "",
-        shared_ldflag    => "-Wshared",
+    # Common for all
+    'nonstop-common' => {
+        inherit_from     => [ 'BASE_unix' ],
+        template         => 1,
+        cc               => 'c99',
+        cflags           => add_before(picker(debug   => '-g -O0',
+                                              release => '-g -O2'),
+                                       '-Wextensions',
+                                       '-Wnowarn=203,220,272,734,770,1506',
+                                       '-Wbuild_neutral_library',
+                                       '-Wverbose'),
+        defines          => add('OPENSSL_VPROC=$(OPENSSL_VPROC)',
+                                '_XOPEN_SOURCE',
+                                '_XOPEN_SOURCE_EXTENDED=1',
+                                '_TANDEM_SOURCE',
+                                'B_ENDIAN'),
+        perl             => '/usr/bin/perl',
+        shared_target    => 'self',
         shared_extension => ".so",
-        enable           => ["egd"],
-        dso_scheme       => "DLFCN",
-    },
-    "nonstop-nsx" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -I/usr/local/include") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -I/usr/local/include") },
-        lflags           => sub { join(" ",@_,"-lfloss -Wxld='-set floattype neutral_float' -Wsystype=oss") },
-        shared_ldflag    => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set floattype neutral_float -set systype oss' -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"],
-        disable          => ["threads"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nsx_put" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose") },
-        lflags           => sub { join(" ",@_,"-lput") },
-        shared_ldflag    => sub { join(" ",@_,"-Wxld='-export_all -set floattype neutral_float -set systype oss' -lput -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nsx_64" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wlp64 -Wverbose") },
-        shared_cflag     => sub { join(" ",@_,"-Wlp64 -Wverbose") },
-        lflags           => sub { join(" ",@_,"-lfloss -Wlp64") },
-        shared_ldflag    => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set data_model lp64 -set floattype neutral_float -set systype oss' -Wlp64 -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"],
-        disable          => ["threads"],
-        bn_ops           => "SIXTY_FOUR_BIT",
-    },
-    "nonstop-nsx_64_put" => {
-        inherit_from     => [ "nonstop-common" ],
-        shared_cflag     => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/x") },
-        cflags           => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/x") },
-        lflags           => sub { join(" ",@_,"-Wxld='-set floattype neutral_float -set systype oss' -Wlp64 -lput -Wsystype=oss") },
-        shared_ldflag    => sub { join(" ",@_,"-Wxld='-export_all -set data_model lp64'") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_TANDEM_ARCH=3","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS","__TANDEM", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"],
-        bn_ops           => "SIXTY_FOUR_BIT",
-    },
-    "nonstop-nsx_spt" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") },
-        lflags           => sub { join(" ",@_,"-lspt -Wextensions") },
-        shared_ldflag    => sub { join(" ",@_,"-Wxld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nsx_spt_floss" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-I/usr/local/include -Wverbose -Wtarget=tns/x") },
-        shared_cflag     => sub { join(" ",@_,"-I/usr/local/include -Wverbose -Wtarget=tns/x") },
-        lflags           => sub { join(" ",@_,"-lfloss -lspt -Wextensions") },
-        shared_ldflag    => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM","OPENSSL_TANDEM_FLOSS"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nsx_g" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") },
-        lflags           => sub { join(" ",@_,"-Wsystype=guardian -Wxld='-set systype guardian -set floattype neutral_float'") },
-        shared_ldflag    => sub { join(" ",@_,"-Wxld='-export_all -set floattype neutral_float -soname \$\(\@:lib%.so=%\)  -set systype guardian' -Wsystype=guardian") },
-        #shared_extension => " ",
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"],
-        disable          => ["threads"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nsx_g_tandem" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") },
-        lflags           => sub { join(" ",@_,"-Wsystype=guardian -Wxld='-set systype guardian -set floattype tandem_float'") },
-        shared_ldflag    => sub { join(" ",@_,"-Wxld='-export_all -set floattype tandem_float -soname \$\(\@:lib%.so=%\)  -set systype guardian' -Wsystype=guardian") },
-        #shared_extension => " ",
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"],
-        disable          => ["threads"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nsv" => {
-        inherit_from     => [ "nonstop-nsx" ],
-    },
-    "nonstop-nse" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e -I/usr/local/include") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e -I/usr/local/include") },
-        lflags           => sub { join(" ",@_,"-lfloss") },
-        shared_ldflag    => sub { join(" ",@_,"-lfloss -Weld='-export_all -set floattype neutral_float -set systype oss' -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_TANDEM_ARCH=2","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","__TANDEM", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"],
-        disable          => ["threads"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nse_put" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-lput") },
-        shared_ldflag    => sub { join(" ",@_,"-Weld='-export_all -set floattype neutral_float -set systype oss' -lput -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nse_64" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-lfloss -Wlp64") },
-        shared_ldflag    => sub { join(" ",@_,"-lfloss -Weld='-export_all -set data_model lp64  -set floattype neutral_float -set systype oss' -Wlp64 -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"],
-        disable          => ["threads"],
-        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
-    },
-    "nonstop-nse_64_put" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-lput -Wlp64") },
-        shared_ldflag    => sub { join(" ",@_,"-Weld='-export_all -set data_model lp64 -set floattype neutral_float -set systype oss' -Wlp64 -lput -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"],
-        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR",
-    },
-    "nonstop-nse_spt" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-lspt -Wextensions") },
-        shared_ldflag    => sub { join(" ",@_,"-Weld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nse_spt_floss" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-lfloss -lspt -Wextensions") },
-        shared_ldflag    => sub { join(" ",@_,"-lfloss -Weld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") },
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"],
-        bn_ops           => "THIRTY_TWO_BIT",
-    },
-    "nonstop-nse_g" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-Wsystype=guardian -Weld='-set systype guardian'") },
-        shared_ldflag    => sub { join(" ",@_,"-Weld='-set systype guardian -export_all -set floattype neutral_float -soname \$\(\@:lib%.so=%\)' -Wsystype=guardian") },
-        #shared_extension => " ",
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"],
-        disable          => ["threads"],
-        bn_ops           => "THIRTY_TWO_BIT",
+        ex_libs          => add('-lrld'),
+        enable           => ['egd'],
+        dso_scheme       => 'DLFCN',
+        sys_id           => 'TANDEM',
+    },
+
+    ######################################################################
+    # Additional variant settings, to be combined with nonstop-common
+    # Note that these do not inherit anything.  However, the diverse values
+    # are merged with other entries in an 'inherit_from'.
+    #
+    # These combine:
+    # - System architecture (MIPS, Itanium, or x86)
+    # - Execution environment (oss [default] or guardian)
+    #
+    # Unfortunately, they can't be separated into independent templates, because
+    # a number of the above are encoded as different linkers, and by consequence,
+    # different c99 linker flags (-Wld, -Weld, and -Wxld)
+    #
+    # In addition, the are modifiers for:
+    # - Size of long + pointer (ilp32 [default] and lp64)
+    # - Float type (neutral and tandem)
+    #
+    # Unfortunately, because the float types affect the linker settings, those
+    # are divided per system architecture
+    #
+    # MIPS + guardian (unused but present for convenience):
+    'nonstop-archenv-mips-guardian' => {
+        template         => 1,
+        defines          => ['NO_GETPID'],
+        cflags           => '-Wtarget=tns/r -Wsystype=guardian',
+        lflags           => '-Wld="-set systype guardian"',
+        shared_ldflag    => '-Wshared -Wld="-export_all -soname $(@:lib%.so=%)"',
+    },
+
+    # Itanium + guardian:
+    'nonstop-archenv-itanium-guardian' => {
+        template         => 1,
+        defines          => ['NO_GETPID', '_TANDEM_ARCH=2'],
+        cflags           => '-Wtarget=tns/e -Wsystype=guardian',
+        lflags           => '-Weld="-set systype guardian"',
+        shared_ldflag    => '-Wshared -Weld="-export_all -soname $(@:lib%.so=%)"',
+    },
+
+    # x86 + guardian:
+    'nonstop-archenv-x86_64-guardian' => {
+        template         => 1,
+        defines          => ['NO_GETPID', '_TANDEM_ARCH=3'],
+        cflags           => '-Wtarget=tns/x -Wsystype=guardian',
+        lflags           => '-Wxld="-set systype guardian"',
+        shared_ldflag    => '-Wshared -Wxld="-export_all -soname $(@:lib%.so=%)"',
+    },
+
+    # MIPS + oss (unused but present for convenience):
+    'nonstop-archenv-mips-oss' => {
+        template         => 1,
+        cflags           => '-Wtarget=tns/r -Wsystype=oss',
+        lflags           => '-Wld="-set systype oss"',
+        shared_ldflag    => '-Wshared -Wld="-export_all"',
+    },
+    # Itanium + oss:
+    'nonstop-archenv-itanium-oss' => {
+        template         => 1,
+        defines          => ['_TANDEM_ARCH=2'],
+        cflags           => '-Wtarget=tns/e -Wsystype=oss',
+        lflags           => '-Weld="-set systype oss"',
+        shared_ldflag    => '-Wshared -Weld="-export_all"',
+    },
+    # x86_64 + oss:
+    'nonstop-archenv-x86_64-oss' => {
+        template         => 1,
+        defines          => ['_TANDEM_ARCH=3'],
+        cflags           => '-Wtarget=tns/x -Wsystype=oss',
+        lflags           => '-Wxld="-set systype oss"',
+        shared_ldflag    => '-Wshared -Wxld="-export_all"',
+    },
+
+    # Size variants
+    'nonstop-ilp32' => {
+        template         => 1,
+        cflags           => '-Wilp32',
+        bn_ops           => 'THIRTY_TWO_BIT',
+    },
+    'nonstop-lp64-itanium' => {
+        template         => 1,
+        cflags           => '-Wlp64',
+        bn_ops           => 'SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR',
+    },
+    'nonstop-lp64-x86_64' => {
+        template         => 1,
+        cflags           => '-Wlp64',
+        lflags           => '-Wxld="-set data_model lp64"',
+        bn_ops           => 'SIXTY_FOUR_BIT',
+    },
+
+    # Float variants
+    'nonstop-nfloat-mips' => {
+        template         => 1,
+        lflags           => '-Wld="-set floattype neutral_float"',
+    },
+    'nonstop-tfloat-mips' => {
+        template         => 1,
+        lflags           => '-Wld="-set floattype tandem_float"',
+    },
+    'nonstop-nfloat-itanium' => {
+        template         => 1,
+        lflags           => '-Weld="-set floattype neutral_float"',
+    },
+    'nonstop-tfloat-itanium' => {
+        template         => 1,
+        lflags           => '-Weld="-set floattype tandem_float"',
+    },
+    'nonstop-nfloat-x86_64' => {
+        template         => 1,
+        lflags           => '-Wxld="-set floattype neutral_float"',
+    },
+    'nonstop-tfloat-x86_64' => {
+        template         => 1,
+        lflags           => '-Wxld="-set floattype tandem_float"',
+    },
+
+    ######################################################################
+    # Build models
+    'nonstop-model-put' => {
+        template         => 1,
+        defines          => ['_PUT_MODEL_',
+                             '_REENTRANT', '_ENABLE_FLOSS_THREADS'],
+        ex_libs          => '-lput',
+    },
+    'nonstop-model-spt' => {
+        template         => 1,
+        defines          => ['_SPT_MODEL_',
+                             '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'],
+        ex_libs          => '-lspt',
+    },
+
+    # Additional floss model that can be combined with any of the other models.
+    # If used without any of the other models, the entry that does so must
+    # disable threads.
+    'nonstop-model-floss' => {
+        template         => 1,
+        defines          => ['OPENSSL_TANDEM_FLOSS'],
+        includes         => ['/usr/local/include'],
+        ex_libs          => '-lfloss',
+    },
+
+    ######################################################################
+    # Now for the entried themselves, let's combine things!
+    'nonstop-nsx' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-x86_64',
+                              'nonstop-model-floss' ],
+        disable          => ['threads'],
+    },
+    'nonstop-nsx_put' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-x86_64',
+                              'nonstop-model-put' ],
+    },
+    'nonstop-nsx_64' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-oss',
+                              'nonstop-lp64-x86_64', 'nonstop-nfloat-x86_64',
+                              'nonstop-model-floss' ],
+        disable          => ['threads'],
+    },
+    'nonstop-nsx_64_put' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-oss',
+                              'nonstop-lp64-x86_64', 'nonstop-nfloat-x86_64',
+                              'nonstop-model-put' ],
+    },
+    'nonstop-nsx_spt' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-oss', 
+                              'nonstop-ilp32', 'nonstop-nfloat-x86_64',
+                              'nonstop-model-spt' ],
+    },
+    'nonstop-nsx_spt_floss' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-x86_64',
+                              'nonstop-model-floss', 'nonstop-model-spt'],
+    },
+    'nonstop-nsx_g' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-guardian',
+                              'nonstop-ilp32', 'nonstop-nfloat-x86_64' ],
+        disable          => ['threads'],
+    },
+    'nonstop-nsx_g_tandem' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-x86_64-guardian',
+                              'nonstop-ilp32', 'nonstop-tfloat-x86_64' ],
+        disable          => ['threads'],
+    },
+    'nonstop-nsv' => {
+        inherit_from     => [ 'nonstop-nsx' ],
+    },
+    'nonstop-nse' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-itanium',
+                              'nonstop-model-floss' ],
+        disable          => ['threads'],
+    },
+    'nonstop-nse_put' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-itanium',
+                              'nonstop-model-put' ],
+    },
+    'nonstop-nse_64' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-oss',
+                              'nonstop-lp64-itanium', 'nonstop-nfloat-itanium',
+                              'nonstop-model-floss' ],
+        disable          => ['threads'],
+    },
+    'nonstop-nse_64_put' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-oss',
+                              'nonstop-lp64-itanium', 'nonstop-nfloat-itanium',
+                              'nonstop-model-put' ],
+    },
+    'nonstop-nse_spt' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-itanium',
+                              'nonstop-model-spt' ],
+    },
+    'nonstop-nse_spt_floss' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-oss',
+                              'nonstop-ilp32', 'nonstop-nfloat-itanium',
+                              'nonstop-model-floss', 'nonstop-model-spt' ],
+    },
+    'nonstop-nse_g' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-guardian',
+                              'nonstop-ilp32', 'nonstop-nfloat-itanium' ],
+        disable          => ['threads'],
     },
 
-    "nonstop-nse_g_tandem" => {
-        inherit_from     => [ "nonstop-common" ],
-        cflags           => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        shared_cflag     => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") },
-        lflags           => sub { join(" ",@_,"-Wsystype=guardian -Weld='-set systype guardian -set floattype tandem_float'") },
-        shared_ldflag    => sub { join(" ",@_,"-Wsystype=guardian -Weld='-set systype guardian -export_all -set floattype tandem_float -soname \$\(\@:lib%.so=%\)'") },
-        #shared_extension => " ",
-        defines          => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"],
-        disable          => ["threads"],
-        bn_ops           => "THIRTY_TWO_BIT",
+    'nonstop-nse_g_tandem' => {
+        inherit_from     => [ 'nonstop-common',
+                              'nonstop-archenv-itanium-guardian',
+                              'nonstop-ilp32', 'nonstop-tfloat-itanium' ],
+        disable          => ['threads'],
     },