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