summaryrefslogtreecommitdiff
path: root/lang/pocl/files
diff options
context:
space:
mode:
authorKoop Mast <kwm@FreeBSD.org>2016-11-21 14:36:51 +0000
committerKoop Mast <kwm@FreeBSD.org>2016-11-21 14:36:51 +0000
commit1e36af0daabf6162285b0d91694b30855f92ced1 (patch)
treeb423060dc1ce6c1dfe76e3c71f6a5e82c3aab007 /lang/pocl/files
parent- Update to 3.6 (diff)
Add pocl.
Portable OpenCL aims to be an efficient open source (MIT-licensed) implementation of the OpenCL 1.2 standard. pocl uses Clang as an OpenCL C frontend and LLVM for the kernel compiler implementation, and as a portability layer. Thus, if your desired target has an LLVM backend, it should be able to get OpenCL support easily by using pocl. PR: 171914 Submitted by: O.Hartmann <ohartmann@walstatt.org> (based on)
Diffstat (limited to 'lang/pocl/files')
-rw-r--r--lang/pocl/files/patch-Makefile.in25
-rw-r--r--lang/pocl/files/patch-lib_CL_devices_cpuinfo.c90
-rw-r--r--lang/pocl/files/patch-scripts_Makefile.in21
3 files changed, 136 insertions, 0 deletions
diff --git a/lang/pocl/files/patch-Makefile.in b/lang/pocl/files/patch-Makefile.in
new file mode 100644
index 000000000000..49fa57e1e446
--- /dev/null
+++ b/lang/pocl/files/patch-Makefile.in
@@ -0,0 +1,25 @@
+First part: this is false, this was due to a libtool bug, which is fixed now
+Second part: cmp --quiet is long for the -s option, use that since FreeBSD
+cmp doesn't have the long option.
+
+--- Makefile.in.orig 2016-09-13 22:57:13.327123000 +0200
++++ Makefile.in 2016-09-13 23:01:18.738696000 +0200
+@@ -116,8 +116,7 @@
+ @POCL_ANDROID_FALSE@am__append_1 = scripts examples tests
+
+ #TODO: this naming scheme is used on other platforms (primarly BSDs?) too
+-@BUILD_ICD_TRUE@@FREEBSD_HOST_OS_TRUE@am__append_2 = -e 's,so.VER,so.$(LIB_CURRENT_VERSION),g'
+-@BUILD_ICD_TRUE@@FREEBSD_HOST_OS_FALSE@am__append_3 = -e 's,so.VER,so.$(LIB_FIRST_VERSION).$(LIB_AGE_VERSION).$(LIB_REVISION_VERSION),g'
++@BUILD_ICD_TRUE@am__append_3 = -e 's,so.VER,so.$(LIB_FIRST_VERSION).$(LIB_AGE_VERSION).$(LIB_REVISION_VERSION),g'
+ @BUILD_ICD_TRUE@am__append_4 = pocl.icd
+ @BUILD_ICD_TRUE@am__append_5 = pocl.icd
+ subdir = .
+@@ -1076,7 +1075,7 @@
+ echo "#define PKGDATADIR \"${pkgdatadir}\"" > $@.new
+ echo "#define PKGLIBEXECDIR \"${pkglibexecdir}\"" >> $@.new
+ echo "#define PKGINCLUDEDIR \"${pkgincludedir}\"" >> $@.new
+- @if cmp --quiet $@.new $@ ; then \
++ @if cmp -s $@.new $@ ; then \
+ : "Paths not changed" ;\
+ $(RM) $@.new ;\
+ else \
diff --git a/lang/pocl/files/patch-lib_CL_devices_cpuinfo.c b/lang/pocl/files/patch-lib_CL_devices_cpuinfo.c
new file mode 100644
index 000000000000..1b7ce29b8034
--- /dev/null
+++ b/lang/pocl/files/patch-lib_CL_devices_cpuinfo.c
@@ -0,0 +1,90 @@
+--- lib/CL/devices/cpuinfo.c.orig 2016-11-20 11:31:19.521203000 +0100
++++ lib/CL/devices/cpuinfo.c 2016-11-20 11:29:24.502817000 +0100
+@@ -31,9 +31,13 @@
+ # include "vccompat.hpp"
+ #endif
+
++#include <sys/types.h>
++#include <sys/sysctl.h>
++
+ #include "config.h"
+ #include "cpuinfo.h"
+
++#if 0
+ const char* cpuinfo = "/proc/cpuinfo";
+ #define MAX_CPUINFO_SIZE 64*1024
+ //#define DEBUG_POCL_CPUINFO
+@@ -152,8 +156,29 @@ pocl_cpuinfo_detect_max_clock_frequency(
+ }
+ return -1;
+ }
++#endif
++
++/**
++ * Detects the number of parallel hardware threads supported by
++ * the CPU.
++ *
++ * @return The number of hardware threads.
++ */
++ int
++pocl_cpuinfo_detect_compute_unit_count()
++{
++ int mib[2], nocpus;
++ size_t len;
+
++ mib[0] = CTL_HW;
++ mib[1] = HW_NCPU;
++ len = sizeof(nocpus);
++ sysctl(mib, 2, &nocpus, &len, NULL, 0);
+
++ return nocpus;
++}
++
++#if 0
+ /**
+ * Detects the number of parallel hardware threads supported by
+ * the CPU by parsing the cpuinfo.
+@@ -231,6 +256,27 @@ pocl_cpuinfo_detect_compute_unit_count()
+ }
+ return -1;
+ }
++#endif
++
++/**
++ * Detects the maximum clock frequency of the CPU.
++ *
++ * Assumes all cores have the same max clock freq.
++ *
++ * @return The clock frequency in MHz.
++ */
++int
++pocl_cpuinfo_detect_max_clock_frequency()
++{
++ //XXX PLEASE NOTE, THIS IS NOT TOO PORTABLE (AND/OR ACCURATE)!
++ const char mib[] = "hw.clockrate";
++ size_t size = sizeof(int);
++ int clockrate;
++
++ sysctlbyname(mib, (void *)&clockrate, &size, NULL, 0);
++
++ return clockrate;
++ }
+
+ #ifdef POCL_ANDROID
+
+@@ -269,6 +315,7 @@ pocl_cpuinfo_get_cpu_name_and_vendor(cl_
+ * short_name is in the .data anyways.*/
+ device->long_name = device->short_name;
+
++#if 0
+ /* default vendor and vendor_id, in case it cannot be found by other means */
+ device->vendor = cpuvendor_default;
+ if (device->vendor_id == 0)
+@@ -317,6 +364,7 @@ pocl_cpuinfo_get_cpu_name_and_vendor(cl_
+ char *new_name = (char*)malloc (len);
+ snprintf (new_name, len, "%s-%s", device->short_name, start);
+ device->long_name = new_name;
++#endif
+
+ }
+
diff --git a/lang/pocl/files/patch-scripts_Makefile.in b/lang/pocl/files/patch-scripts_Makefile.in
new file mode 100644
index 000000000000..49cc3878bd53
--- /dev/null
+++ b/lang/pocl/files/patch-scripts_Makefile.in
@@ -0,0 +1,21 @@
+dirty hack, pocl-standalone will be installed into stage with
+r-xr-xr-x permissions. So writing to it is problemetic. give the file write
+permission and take it away after.
+
+Upstream (pre 0.14) will be using cmake so this hack is only temporary.
+
+--- scripts/Makefile.in.orig 2016-09-13 22:10:48.091956000 +0200
++++ scripts/Makefile.in 2016-09-13 22:13:33.388168000 +0200
+@@ -651,10 +651,11 @@
+
+ install-exec-hook: $(bin_SCRIPTS)
+ for f in $(bin_SCRIPTS) ; do \
++ chmod +w "$(DESTDIR)$(bindir)/$$f" ; \
+ sed -e '/^# BEGIN REMOVE ONCE INSTALLED$$/,/^# END REMOVE ONCE INSTALLED$$/d' \
+ > "$(DESTDIR)$(bindir)/$$f" \
+ < "$$f" && \
+- chmod +x "$(DESTDIR)$(bindir)/$$f" ; \
++ chmod +x-w "$(DESTDIR)$(bindir)/$$f" ; \
+ done
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.