diff options
author | Koop Mast <kwm@FreeBSD.org> | 2016-11-21 14:36:51 +0000 |
---|---|---|
committer | Koop Mast <kwm@FreeBSD.org> | 2016-11-21 14:36:51 +0000 |
commit | 1e36af0daabf6162285b0d91694b30855f92ced1 (patch) | |
tree | b423060dc1ce6c1dfe76e3c71f6a5e82c3aab007 /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.in | 25 | ||||
-rw-r--r-- | lang/pocl/files/patch-lib_CL_devices_cpuinfo.c | 90 | ||||
-rw-r--r-- | lang/pocl/files/patch-scripts_Makefile.in | 21 |
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. |