On 2019-06-13 13:58, Stuart Henderson wrote:
On 2019/06/13 10:34, j...@bitminer.ca wrote:
These two patches fix cmake's ability to find OpenMP with
base-clang and ports-gcc as patched earlier.  This patch
is a no-op without those.  Tested on amd64.

John

? patches/patch-Modules_FindOpenMP_cmake
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/cmake/Makefile,v
retrieving revision 1.173
diff -u -p -r1.173 Makefile
--- Makefile    24 Apr 2019 16:26:54 -0000      1.173
+++ Makefile    13 Jun 2019 15:50:38 -0000
@@ -6,7 +6,7 @@ COMMENT =       portable build system

 VER =          3.10.2
 EPOCH =                0
-REVISION =     2
+REVISION =     3
 DISTNAME =     cmake-${VER}
 CATEGORIES =   devel


--- /dev/null   Thu Jun 13 10:22:18 2019
+++ patches/patch-Modules_FindOpenMP_cmake      Thu Jun 13 08:12:07 2019
@@ -0,0 +1,26 @@
+$OpenBSD$
+Add libs and paths.  Ensure the lib is used for the C case.
+
+Index: Modules/FindOpenMP.cmake
+--- Modules/FindOpenMP.cmake.orig
++++ Modules/FindOpenMP.cmake
+@@ -82,8 +82,8 @@ function(_OPENMP_FLAG_CANDIDATES LANG)
+   if(NOT OpenMP_${LANG}_FLAG)
+     unset(OpenMP_FLAG_CANDIDATES)
+
+-    set(OMP_FLAG_GNU "-fopenmp")
+- set(OMP_FLAG_Clang "-fopenmp=libomp" "-fopenmp=libiomp5" "-fopenmp")
++    set(OMP_FLAG_GNU "-fopenmp -lgomp")
++ set(OMP_FLAG_Clang "-fopenmp -I/usr/local/include -Wl,-L/usr/local/lib,-lomp" )

This patch needs to use ${LOCALBASE} rather than hardcoded /usr/local,
and added to the list of files passed through ${SUBST_CMD} in pre-configure.

Ahh, yes, thanks for the LOCALBASE correction.



Doesn't OMP_FLAG_GNU need include/linker paths too?

If using the ports-gcc patch I published earlier [1], OpenMP is all
included.  So egcc finds files outside of /usr/local/*
and instead in /usr/local/lib/gcc/${CONFIG}/${V}/include/.

The purpose of this approach is to keep clang and gcc mutually
compatible without conflicts in the omp.h files and so on.


[1] https://marc.info/?l=openbsd-ports&m=155985368908957&w=2




+     set(OMP_FLAG_HP "+Oopenmp")
+     if(WIN32)
+       set(OMP_FLAG_Intel "-Qopenmp")
+@@ -124,7 +124,7 @@ set(OpenMP_C_CXX_TEST_SOURCE
+ #include <omp.h>
+ int main() {
+ #ifdef _OPENMP
+-  return 0;
++  return 0*omp_get_num_threads();
+ #else
+   breaks_on_purpose
+ #endif


Reply via email to