|
@@ -0,0 +1,78 @@
|
|
|
|
+From 6a780f10c2b600cfc38f8b8f20cb7e40b979f541 Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Michal Domonkos <mdomonko@redhat.com>
|
|
|
|
+Date: Tue, 4 Aug 2020 16:50:21 +0200
|
|
|
|
+Subject: [PATCH] Check for OpenMP version at configure time
|
|
|
|
+
|
|
|
|
+Only accept OpenMP >= 4.5, due to the "priority" clause that we use
|
|
|
|
+since commit 6f6f5e7, and also document that in the INSTALL file.
|
|
|
|
+
|
|
|
|
+If explicitly required with --enable-openmp, fail configuration if the
|
|
|
|
+version is not available.
|
|
|
|
+
|
|
|
|
+https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf
|
|
|
|
+
|
|
|
|
+Resolves: #1315
|
|
|
|
+[Retrieved from:
|
|
|
|
+https://github.com/rpm-software-management/rpm/commit/6a780f10c2b600cfc38f8b8f20cb7e40b979f541]
|
|
|
|
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
|
+---
|
|
|
|
+ INSTALL | 6 ++++++
|
|
|
|
+ configure.ac | 25 +++++++++++++++++++++++--
|
|
|
|
+ 2 files changed, 29 insertions(+), 2 deletions(-)
|
|
|
|
+
|
|
|
|
+diff --git a/INSTALL b/INSTALL
|
|
|
|
+index cfbe54a3e..7622b2efe 100644
|
|
|
|
+--- a/INSTALL
|
|
|
|
++++ b/INSTALL
|
|
|
|
+@@ -142,6 +142,12 @@ If you plan on using cryptographic signatures you will need a version
|
|
|
|
+ of GPG, available from
|
|
|
|
+ http://www.gnupg.org/
|
|
|
|
+
|
|
|
|
++OpenMP multithreading support is automatically enabled if your C compiler has
|
|
|
|
++support for OpenMP version 4.5 or higher (to disable, pass the --disable-openmp
|
|
|
|
++option to configure). For GCC, OpenMP 4.5 is fully supported since GCC 6.1,
|
|
|
|
++which is available from
|
|
|
|
++ http://www.gnu.org/
|
|
|
|
++
|
|
|
|
+ To compile RPM:
|
|
|
|
+ --------------
|
|
|
|
+
|
|
|
|
+diff --git a/configure.ac b/configure.ac
|
|
|
|
+index 1346ee704..35003619d 100644
|
|
|
|
+--- a/configure.ac
|
|
|
|
++++ b/configure.ac
|
|
|
|
+@@ -167,11 +167,32 @@ AC_SUBST(WITH_LZMA_LIB)
|
|
|
|
+
|
|
|
|
+ # AC_OPENMP supports --enable/disable-openmp out of the box, but it doesn't
|
|
|
|
+ # actually give us a way to conditionalize the build based on that. Argh.
|
|
|
|
++# Version 4.5 (201511) introduced "priority" clause for tasks.
|
|
|
|
+ OPENMP_CFLAGS=
|
|
|
|
+ AC_OPENMP
|
|
|
|
+ AS_IF([test "x$ac_cv_prog_c_openmp" != x &&
|
|
|
|
+- test "x$ac_cv_prog_c_openmp" != unsupported],[
|
|
|
|
+- AC_DEFINE(ENABLE_OPENMP, 1, [Enable multithreading support?])
|
|
|
|
++ test "x$ac_cv_prog_c_openmp" != xunsupported],[
|
|
|
|
++ old_CFLAGS=$CFLAGS
|
|
|
|
++ CFLAGS="$CFLAGS $OPENMP_CFLAGS"
|
|
|
|
++ AC_MSG_CHECKING([OpenMP is at least version 4.5])
|
|
|
|
++ AC_RUN_IFELSE(
|
|
|
|
++ [AC_LANG_PROGRAM(
|
|
|
|
++ [#include <omp.h>],
|
|
|
|
++ [#if _OPENMP < 201511
|
|
|
|
++ exit(1);
|
|
|
|
++ #endif
|
|
|
|
++ ]
|
|
|
|
++ )],
|
|
|
|
++ [AC_MSG_RESULT([yes])
|
|
|
|
++ AC_DEFINE(ENABLE_OPENMP, 1, [Enable multithreading support?])
|
|
|
|
++ ],
|
|
|
|
++ [AC_MSG_RESULT([no])
|
|
|
|
++ if test "$enable_openmp" = "yes"; then
|
|
|
|
++ AC_MSG_ERROR([OpenMP too old])
|
|
|
|
++ fi
|
|
|
|
++ ]
|
|
|
|
++ )
|
|
|
|
++ CFLAGS=$old_CFLAGS
|
|
|
|
+ ])
|
|
|
|
+ AC_SUBST(OPENMP_CFLAGS)
|
|
|
|
+
|