File: openmp.m4

package info (click to toggle)
gretl 1.9.1-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 31,704 kB
  • ctags: 19,144
  • sloc: ansic: 276,238; sh: 10,907; makefile: 1,995; lisp: 1,205; perl: 364; xml: 320
file content (100 lines) | stat: -rw-r--r-- 3,000 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# AC_C_OPENMP
# -----------
# Check which options need to be passed to the C compiler to support OpenMP.
# Set the OPENMP_CFLAGS variable to these options.
# The options are necessary at compile time (so the #pragmas are understood)
# and at link time (so the appropriate library is linked with).
# This macro takes care to not produce redundant options if $CC $CFLAGS already
# supports OpenMP. It also is careful to not pass options to compilers that
# misinterpret them; for example, most compilers accept "-openmp" and create
# an output file called 'penmp' rather than activating OpenMP support.
AC_DEFUN([AC_C_OPENMP],
[
  AC_MSG_CHECKING([whether to use OpenMP])
  AC_ARG_ENABLE(openmp,
    [AS_HELP_STRING([--enable-openmp], [use OpenMP if available])],
    [enable_openmp=$enableval]
  )
  AC_MSG_RESULT([$enable_openmp])
  ac_openmp_result=no
  OPENMP_CFLAGS=
  if test "$enable_openmp" = yes; then
    AC_MSG_CHECKING([for $CC option to support OpenMP])
    AC_CACHE_VAL([ac_cv_prog_cc_openmp], [
      ac_cv_prog_cc_openmp=unsupported
      AC_LINK_IFELSE([
#ifndef _OPENMP
 choke me
#endif
#include <omp.h>
int main () { return omp_get_num_threads (); }
	], [ac_cv_prog_cc_openmp="none needed"])
      if test "$ac_cv_prog_cc_openmp" = unsupported; then
	dnl Try these flags:
	dnl   GCC >= 4.2	   -fopenmp
	dnl   SunPRO C  	   -xopenmp
	dnl   Intel C		   -openmp
	dnl   SGI C, PGI C	   -mp
	dnl   Tru64 Compaq C	   -omp
	dnl   IBM C (AIX, Linux)   -qsmp=omp
	for brand in GCC SunPRO Intel SGI/PGI Compaq IBM; do
	  case $brand in
	    GCC)
	      ac_conditional='defined __GNUC__'
	      ac_option='-fopenmp' ;;
	    SunPRO)
	      ac_conditional='defined __SUNPRO_C || defined __SUNPRO_CC'
	      ac_option='-xopenmp' ;;
	    Intel)
	      ac_conditional='defined __INTEL_COMPILER'
	      ac_option='-openmp' ;;
	    SGI/PGI)
	      ac_conditional='defined __sgi || defined __PGI || defined __PGIC__'
	      ac_option='-mp' ;;
	    Compaq)
	      ac_conditional='defined __DECC || defined __DECCXX'
	      ac_option='-omp' ;;
	    IBM)
	      ac_conditional='defined __xlc__ || defined __xlC__'
	      ac_option='-qsmp=omp' ;;
	  esac
	  if test $brand = GCC; then
	    if test "$GCC" = yes; then
	      ac_openmp_result=yes
	    else
	      ac_openmp_result=no
	    fi
	  else
	    AC_EGREP_CPP([Brand], [
	      #if $ac_conditional
	       Brand
	      #endif
	      ], [ac_openmp_result=yes], [ac_openmp_result=no])
	  fi
	  if test $ac_openmp_result = yes; then
	    ac_save_CFLAGS=$CFLAGS
	    CFLAGS="$CFLAGS $ac_option"
	    AC_LINK_IFELSE([
#ifndef _OPENMP
 choke me
#endif
#include <omp.h>
int main () { return omp_get_num_threads (); }
	      ], [ac_cv_prog_cc_openmp=$ac_option])
	    CFLAGS=$ac_save_CFLAGS
	    break
	  fi
	done
      fi
      ])
    AC_MSG_RESULT([$ac_cv_prog_cc_openmp])
    case $ac_cv_prog_cc_openmp in
      "none needed" | unsupported)
	OPENMP_CFLAGS= ;;
      *)
	OPENMP_CFLAGS=$ac_cv_prog_cc_openmp ;;
    esac
  fi
  AC_SUBST([OPENMP_CFLAGS])
])