Collection of DPF-based plugins for packaging
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
4.6KB

  1. # ===========================================================================
  2. # https://www.gnu.org/software/autoconf-archive/ax_openmp.html
  3. # ===========================================================================
  4. #
  5. # SYNOPSIS
  6. #
  7. # AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
  8. #
  9. # DESCRIPTION
  10. #
  11. # This macro tries to find out how to compile programs that use OpenMP a
  12. # standard API and set of compiler directives for parallel programming
  13. # (see http://www-unix.mcs/)
  14. #
  15. # On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS
  16. # output variable to the flag (e.g. -omp) used both to compile *and* link
  17. # OpenMP programs in the current language.
  18. #
  19. # NOTE: You are assumed to not only compile your program with these flags,
  20. # but also link it with them as well.
  21. #
  22. # If you want to compile everything with OpenMP, you should set:
  23. #
  24. # CFLAGS="$CFLAGS $OPENMP_CFLAGS"
  25. # #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
  26. # #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS"
  27. #
  28. # (depending on the selected language).
  29. #
  30. # The user can override the default choice by setting the corresponding
  31. # environment variable (e.g. OPENMP_CFLAGS).
  32. #
  33. # ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is
  34. # found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is
  35. # not found. If ACTION-IF-FOUND is not specified, the default action will
  36. # define HAVE_OPENMP.
  37. #
  38. # LICENSE
  39. #
  40. # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
  41. # Copyright (c) 2015 John W. Peterson <jwpeterson@gmail.com>
  42. # Copyright (c) 2016 Nick R. Papior <nickpapior@gmail.com>
  43. #
  44. # This program is free software: you can redistribute it and/or modify it
  45. # under the terms of the GNU General Public License as published by the
  46. # Free Software Foundation, either version 3 of the License, or (at your
  47. # option) any later version.
  48. #
  49. # This program is distributed in the hope that it will be useful, but
  50. # WITHOUT ANY WARRANTY; without even the implied warranty of
  51. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
  52. # Public License for more details.
  53. #
  54. # You should have received a copy of the GNU General Public License along
  55. # with this program. If not, see <https://www.gnu.org/licenses/>.
  56. #
  57. # As a special exception, the respective Autoconf Macro's copyright owner
  58. # gives unlimited permission to copy, distribute and modify the configure
  59. # scripts that are the output of Autoconf when processing the Macro. You
  60. # need not follow the terms of the GNU General Public License when using
  61. # or distributing such scripts, even though portions of the text of the
  62. # Macro appear in them. The GNU General Public License (GPL) does govern
  63. # all other use of the material that constitutes the Autoconf Macro.
  64. #
  65. # This special exception to the GPL applies to versions of the Autoconf
  66. # Macro released by the Autoconf Archive. When you make and distribute a
  67. # modified version of the Autoconf Macro, you may extend this special
  68. # exception to the GPL to apply to your modified version as well.
  69. #serial 13
  70. AC_DEFUN([AX_OPENMP], [
  71. AC_PREREQ([2.69]) dnl for _AC_LANG_PREFIX
  72. AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
  73. ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown
  74. # Flags to try: -fopenmp (gcc), -mp (SGI & PGI),
  75. # -qopenmp (icc>=15), -openmp (icc),
  76. # -xopenmp (Sun), -omp (Tru64),
  77. # -qsmp=omp (AIX),
  78. # none
  79. ax_openmp_flags="-fopenmp -openmp -qopenmp -mp -xopenmp -omp -qsmp=omp none"
  80. if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then
  81. ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags"
  82. fi
  83. for ax_openmp_flag in $ax_openmp_flags; do
  84. case $ax_openmp_flag in
  85. none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;;
  86. *) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;;
  87. esac
  88. AC_LINK_IFELSE([AC_LANG_SOURCE([[
  89. @%:@include <omp.h>
  90. static void
  91. parallel_fill(int * data, int n)
  92. {
  93. int i;
  94. @%:@pragma omp parallel for
  95. for (i = 0; i < n; ++i)
  96. data[i] = i;
  97. }
  98. int
  99. main()
  100. {
  101. int arr[100000];
  102. omp_set_num_threads(2);
  103. parallel_fill(arr, 100000);
  104. return 0;
  105. }
  106. ]])],[ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break],[])
  107. done
  108. []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS
  109. ])
  110. if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then
  111. m4_default([$2],:)
  112. else
  113. if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then
  114. OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp
  115. fi
  116. m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])])
  117. fi
  118. ])dnl AX_OPENMP