On 2012-09-05 16:45, O. Hartmann wrote:
...
Well, I tried LLVM/CLANG, but Cmake of the sources fairly fails many
checks especuially for OpenMP.

Yes, it is currently not supported.  I am not sure if there are serious
attempts to add it.


Using clang++ requisites the usage of the
new libc++ (CXXFLAGS+= -stdlib=libc++). But this fails with this error:
...
/usr/ports/devel/freeocl/work/FreeOCL-0.3.6-Source/src/parser/parser.h:118:15:
error: no viable conversion from 'std::__1::basic_istream<char>' to
'const bool'
                         const bool ok = in.get(c);
                                    ^    ~~~~~~~~~

This is a bug in FreeOCL.  The istream::get() function returns an
istream reference, which can't be cast directly to bool.  However, there
is a negation operator defined for istream, so the line can be changed
to:

                         const bool ok = !!in.get(c);

I have attached a patch for the port as I have built it here with clang.
I didn't add the dependency on atomic_ops yet, but it should be fairly
trivial.

Note I also needed a fix for Mk/bsd.cmake.mk, otherwise the required
${CPPFLAGS} would not be passed along to CMake, and then the build would
still fail to find the atomic_ops headers in /usr/local/include.
Index: Mk/bsd.cmake.mk
===================================================================
--- Mk/bsd.cmake.mk	(revision 303593)
+++ Mk/bsd.cmake.mk	(working copy)
@@ -50,12 +50,12 @@ BUILD_DEPENDS+=	${CMAKE_BIN}:${CMAKE_PORT}
 CMAKE_ENV?=		${CONFIGURE_ENV}
 CMAKE_ARGS+=	-DCMAKE_C_COMPILER:STRING="${CC}" \
 				-DCMAKE_CXX_COMPILER:STRING="${CXX}" \
-				-DCMAKE_C_FLAGS:STRING="${CFLAGS}" \
-				-DCMAKE_C_FLAGS_DEBUG:STRING="${CFLAGS}" \
-				-DCMAKE_C_FLAGS_RELEASE:STRING="${CFLAGS}" \
-				-DCMAKE_CXX_FLAGS:STRING="${CXXFLAGS}" \
-				-DCMAKE_CXX_FLAGS_DEBUG:STRING="${CXXFLAGS}" \
-				-DCMAKE_CXX_FLAGS_RELEASE:STRING="${CXXFLAGS}" \
+				-DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}" \
+				-DCMAKE_C_FLAGS_DEBUG:STRING="${CPPFLAGS} ${CFLAGS}" \
+				-DCMAKE_C_FLAGS_RELEASE:STRING="${CPPFLAGS} ${CFLAGS}" \
+				-DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
+				-DCMAKE_CXX_FLAGS_DEBUG:STRING="${CPPFLAGS} ${CXXFLAGS}" \
+				-DCMAKE_CXX_FLAGS_RELEASE:STRING="${CPPFLAGS} ${CXXFLAGS}" \
 				-DCMAKE_EXE_LINKER_FLAGS:STRING="${LDFLAGS}" \
 				-DCMAKE_MODULE_LINKER_FLAGS:STRING="${LDFLAGS}" \
 				-DCMAKE_SHARED_LINKER_FLAGS:STRING="${LDFLAGS}" \
Index: devel/freeocl/Makefile
===================================================================
--- devel/freeocl/Makefile	(revision 0)
+++ devel/freeocl/Makefile	(working copy)
@@ -0,0 +1,22 @@
+PORTNAME=		freeocl
+PORTVERSION=		0.3.6
+CATEGORIES=		devel
+
+MAINTAINER=		po...@freebsd.org
+COMMENT=		FreeOCL - a free OpenCL implementation for CPU
+
+#MASTER_SITES=		http://freeocl.googlecode.com/files/FreeOCL-0.3.6-src.tar.gz
+MASTER_SITES=		http://freeocl.googlecode.com/files/
+DISTNAME=		FreeOCL-${PORTVERSION}-src
+
+WRKSRC=			${WRKDIR}/FreeOCL-${PORTVERSION}-Source
+
+USE_CMAKE=		YES
+CMAKE_BUILD_TYPE=	Release
+
+#USE_GCC=		4.7+
+
+CPPFLAGS+=		-I${LOCALBASE}/include
+CXXFLAGS+=		-stdlib=libc++
+
+.include <bsd.port.mk>
Index: devel/freeocl/files/patch-src__parser__parser.h
===================================================================
--- devel/freeocl/files/patch-src__parser__parser.h	(revision 0)
+++ devel/freeocl/files/patch-src__parser__parser.h	(working copy)
@@ -0,0 +1,11 @@
+--- src/parser/parser.h.orig	2012-09-02 19:00:41.000000000 +0200
++++ src/parser/parser.h	2012-09-06 14:14:01.000000000 +0200
+@@ -115,7 +115,7 @@ namespace FreeOCL
+ 		inline std::istream &get(char &c)
+ 		{
+ 			c = 0;
+-			const bool ok = in.get(c);
++			const bool ok = !!in.get(c);
+ 			if (c == '\n')
+ 				++line;
+ 			if (!current_line.empty() && *current_line.rbegin() == '\n')
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscr...@freebsd.org"

Reply via email to