Fix Clang version detection.
We prepend "FreeBSD" to Clang version string. This broke compiler test for AVX instruction support. Reported by: jhb
This commit is contained in:
parent
ec45a4d383
commit
63c1bb5162
@ -70,7 +70,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ $avx=1 if (!$avx && $win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
|
|||||||
$avx=1 if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
$avx=1 if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
||||||
`ml64 2>&1` =~ /Version ([0-9]+)\./ &&
|
`ml64 2>&1` =~ /Version ([0-9]+)\./ &&
|
||||||
$1>=10);
|
$1>=10);
|
||||||
$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/ && $2>=3.0);
|
$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/ && $2>=3.0);
|
||||||
|
|
||||||
$shaext=1; ### set to zero if compiling for 1.0.1
|
$shaext=1; ### set to zero if compiling for 1.0.1
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=12);
|
$avx = ($1>=10) + ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=11);
|
$addx = ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$avx = ($ver>=3.0) + ($ver>=3.01);
|
$avx = ($ver>=3.0) + ($ver>=3.01);
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
|
@ -81,7 +81,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=12);
|
$addx = ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=12);
|
$addx = ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=12);
|
$addx = ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ $ymm=1 if ($xmm && !$ymm && $ARGV[0] eq "win32" &&
|
|||||||
$1>=10); # first version supporting AVX
|
$1>=10); # first version supporting AVX
|
||||||
|
|
||||||
$ymm=1 if ($xmm && !$ymm &&
|
$ymm=1 if ($xmm && !$ymm &&
|
||||||
`$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ &&
|
`$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ &&
|
||||||
$2>=3.0); # first version supporting AVX
|
$2>=3.0); # first version supporting AVX
|
||||||
|
|
||||||
$a="eax";
|
$a="eax";
|
||||||
|
@ -85,7 +85,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=12);
|
$addx = ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$avx = ($ver>=3.0) + ($ver>=3.01);
|
$avx = ($ver>=3.0) + ($ver>=3.01);
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
|
@ -72,7 +72,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=12);
|
$addx = ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$avx = ($ver>=3.0) + ($ver>=3.01);
|
$avx = ($ver>=3.0) + ($ver>=3.01);
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
|
@ -90,7 +90,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$addx = ($1>=12);
|
$addx = ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) {
|
||||||
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10
|
||||||
$addx = ($ver>=3.03);
|
$addx = ($ver>=3.03);
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ if ($sse2) {
|
|||||||
$avx = ($1>=2.09) + ($1>=2.10);
|
$avx = ($1>=2.09) + ($1>=2.10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=12);
|
$avx = ($1>=10) + ($1>=12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ $ymm=1 if ($xmm && !$ymm && $ARGV[0] eq "win32" &&
|
|||||||
`ml 2>&1` =~ /Version ([0-9]+)\./ &&
|
`ml 2>&1` =~ /Version ([0-9]+)\./ &&
|
||||||
$1>=10); # first version supporting AVX
|
$1>=10); # first version supporting AVX
|
||||||
|
|
||||||
$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ &&
|
$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ &&
|
||||||
$2>=3.0); # first version supporting AVX
|
$2>=3.0); # first version supporting AVX
|
||||||
|
|
||||||
$shaext=$xmm; ### set to zero if compiling for 1.0.1
|
$shaext=$xmm; ### set to zero if compiling for 1.0.1
|
||||||
|
@ -66,7 +66,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ if ($xmm && !$avx && $ARGV[0] eq "win32" &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($xmm && !$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if ($xmm && !$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
|
|||||||
$avx = ($1>=10) + ($1>=11);
|
$avx = ($1>=10) + ($1>=11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) {
|
||||||
$avx = ($2>=3.0) + ($2>3.0);
|
$avx = ($2>=3.0) + ($2>3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user