Add system guessing for linux64-loongarch64 target
authorXi Ruoyao <xry111@xry111.site>
Thu, 20 Jul 2023 23:59:07 +0000 (07:59 +0800)
committerTomas Mraz <tomas@openssl.org>
Tue, 1 Aug 2023 17:41:46 +0000 (19:41 +0200)
Now the default is linux-generic32, it's not good for loongarch64.

We can also test if the assembler supports vector instructions here and
disable asm if not.

Closes #21340.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21510)

util/perl/OpenSSL/config.pm

index 13d1d60fad5c19a579ab572ae9877ee74329cbb1..fef32c93237f8a5a0197471288780cc8b1ce3316 100755 (executable)
@@ -675,6 +675,18 @@ EOF
                                     defines => [ 'B_ENDIAN' ] } ],
       [ 'sh.*-.*-linux2',         { target => "linux-generic32",
                                     defines => [ 'L_ENDIAN' ] } ],
+      [ 'loongarch64-.*-linux2',
+        sub {
+            my $disable = [ 'asm' ];
+            if ( okrun('echo xvadd.w \$xr0,\$xr0,\$xr0',
+                       "$CC -c -x assembler - -o /dev/null 2>/dev/null") ) {
+                $disable = [];
+            }
+            return { target => "linux64-loongarch64",
+                     defines => [ 'L_ENDIAN' ],
+                     disable => $disable, };
+        }
+      ],
       [ 'm68k.*-.*-linux2',       { target => "linux-generic32",
                                     defines => [ 'B_ENDIAN' ] } ],
       [ 's390-.*-linux2',         { target => "linux-generic32",