diff --git a/c_check b/c_check index 9801b8778..a29256d16 100755 --- a/c_check +++ b/c_check @@ -412,6 +412,14 @@ fi [ "$USE_OPENMP" != 1 ] && openmp='' +have_omp_pause_resource_all=0 +if [ "$USE_OPENMP" = 1 ]; then + if $compiler_name $flags $openmp -o ctest3 ctest3.c; then + have_omp_pause_resource_all=1 + fi + rm -f ctest3.o ctest3 ctest3.exe +fi + linker_L="" linker_l="" linker_a="" @@ -501,6 +509,7 @@ done [ "$oldgcc" -eq 1 ] && printf "OLDGCC=1\n" [ "$no_lsx" -eq 1 ] && printf "NO_LSX=1\n" [ "$no_lasx" -eq 1 ] && printf "NO_LASX=1\n" + [ "$have_omp_pause_resource_all" -eq 1 ] && printf "HAVE_OMP_PAUSE_RESOURCE_ALL=1\n" } >> "$makefile" os=`echo "$os" | tr '[[:lower:]]' '[[:upper:]]'/ ` @@ -518,6 +527,7 @@ compiler=`echo "$compiler" | tr '[[:lower:]]' '[[:upper:]]' ` [ "$c11_atomics" -eq 1 ] && printf "#define HAVE_C11\t1\n" [ "$no_lsx" -eq 1 ] && printf "#define NO_LSX\t1\n" [ "$no_lasx" -eq 1 ] && printf "#define NO_LASX\t1\n" + [ "$have_omp_pause_resource_all" -eq 1 ] && printf "#define HAVE_OMP_PAUSE_RESOURCE_ALL\t1\n" } >> "$config" diff --git a/c_check.pl b/c_check.pl index 6b89f06eb..ecae09c60 100644 --- a/c_check.pl +++ b/c_check.pl @@ -394,6 +394,14 @@ $cross = 0 if (($os eq "Android") && ($hostos eq "Linux") && ($ENV{TERMUX_APP_PI $openmp = "" if $ENV{USE_OPENMP} != 1; +$have_omp_pause_resource_all=0; +if ($ENV{USE_OPENMP} == 1) { + if (system("$compiler_name $flags $openmp -o ctest3 ctest3.c") == 0) { + $have_omp_pause_resource_all=1; + } + unlink "ctest3.o", "ctest3", "ctest3.exe"; +} + $linker_L = ""; $linker_l = ""; $linker_a = ""; @@ -472,6 +480,7 @@ print MAKEFILE "NO_AVX2=1\n" if $no_avx2 eq 1; print MAKEFILE "OLDGCC=1\n" if $oldgcc eq 1; print MAKEFILE "NO_LSX=1\n" if $no_lsx eq 1; print MAKEFILE "NO_LASX=1\n" if $no_lasx eq 1; +print MAKEFILE "HAVE_OMP_PAUSE_RESOURCE_ALL=1\n" if $have_omp_pause_resource_all eq 1; $os =~ tr/[a-z]/[A-Z]/; $architecture =~ tr/[a-z]/[A-Z]/; @@ -487,6 +496,7 @@ print CONFFILE "#define HAVE_MSA\t1\n" if $have_msa eq 1; print CONFFILE "#define HAVE_C11\t1\n" if $c11_atomics eq 1; print CONFFILE "#define NO_LSX\t1\n" if $no_lsx eq 1; print CONFFILE "#define NO_LASX\t1\n" if $no_lasx eq 1; +print CONFFILE "#define HAVE_OMP_PAUSE_RESOURCE_ALL\t1\n" if $have_omp_pause_resource_all eq 1; if ($os eq "LINUX") { diff --git a/ctest3.c b/ctest3.c new file mode 100644 index 000000000..3ac3e929c --- /dev/null +++ b/ctest3.c @@ -0,0 +1,2 @@ +#include +int main(void) { return omp_pause_resource_all(omp_pause_hard); }