#!/bin/sh # Shell script with one argument (path of an OpenMP executable) that exits # with status 0 if the OpenMP test program should be run and that exits with # status 1 if the OpenMP test program should not be run. test -e "$1" || exit $? ./supported_libpthread || exit $? # Do not accept any statically linked executable. if /usr/bin/file "$1" | grep -q 'statically linked'; then exit 1 fi if [ "$(uname)" = Linux ]; then # Let the dynamic linker/loader print the path of libgomp. See also man ld.so libgomp_path="$(LD_TRACE_LOADED_OBJECTS=1 "$1" \ | while read soname arrow path offset; \ do if [ "${soname#libgomp.so}" != "${soname}" ]; then echo $path; fi; done)" # Inspect the output of nm. If nm does not find any symbol information, # echo 1. If the symbol gomp_barrier_init is found, echo 0. Otherwise echo # nothing. The second case occurs if gcc has been compiled with # --disable-linux-futex, and the last case occurs if gcc has been compiled # with --enable-linux-futex. rc="$(nm "${libgomp_path}" 2>&1 \ | while read line do if [ "${line%: no symbols}" != "${line}" ]; then echo 1 break elif [ "${line% gomp_barrier_init}" != "${line}" ]; then echo 0 break fi done)" exit ${rc:-1} fi