From bcce8167b45ace466094138baf97831e7f01801c Mon Sep 17 00:00:00 2001
From: Claus-Justus Heine <Claus-Justus.Heine@IANS.Uni-Stuttgart.DE>
Date: Thu, 19 Mar 2009 10:19:07 +0000
Subject: [PATCH] Check for OpenMP

---
 m4/openmp.m4 | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 m4/openmp.m4

diff --git a/m4/openmp.m4 b/m4/openmp.m4
new file mode 100644
index 0000000..28465a4
--- /dev/null
+++ b/m4/openmp.m4
@@ -0,0 +1,40 @@
+AC_DEFUN([ALBERTA_OPENMP],
+[AC_REQUIRE([AC_PROG_CC])
+AC_CHECK_HEADERS([omp.h])
+_alberta_save_cflags="${CFLAGS}"
+CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
+AC_LANG_PUSH([C])
+AC_MSG_CHECKING(
+  [for OpenMP availibility with "${CC} ${CFLAGS}"])
+AC_LINK_IFELSE(
+	[AC_LANG_PROGRAM(
+[#ifdef HAVE_OMP_H
+# include <omp.h>
+#endif
+#include <stdio.h>],
+[int nthreads, tid;
+
+/* Fork a team of threads giving them their own copies of variables */
+#pragma omp parallel private(tid)
+  {
+
+  /* Obtain and print thread id */
+  tid = omp_get_thread_num();
+  printf("Hello World from thread = %d\n", tid);
+
+  /* Only master thread does this */
+  if (tid == 0) 
+    {
+    nthreads = omp_get_num_threads();
+    printf("Number of threads = %d\n", nthreads);
+    }
+
+  }  /* All threads join master thread and terminate */])],
+[AC_MSG_RESULT([OpenMP seems to be available])
+AC_DEFINE([HAVE_OPENMP], 1, [Define to 1 if OpenMP is available])],
+[AC_MSG_RESULT([OpenMP seems not to be available])
+AC_DEFINE([HAVE_OPENMP], 0, [Define to 1 if OpenMP is available])])
+AC_LANG_POP([C])
+CFLAGS="${_alberta_save_cflags}"
+AC_ARG_VAR([OPENMP_CFLAGS], [C/C++ compiler flags to enable OpenMP])
+])
-- 
GitLab