* [ITA] ocl-icd
@ 2023-09-11 11:43 Takashi Yano
2023-09-12 12:46 ` Jon Turney
0 siblings, 1 reply; 2+ messages in thread
From: Takashi Yano @ 2023-09-11 11:43 UTC (permalink / raw)
To: cygwin-apps
[-- Attachment #1: Type: text/plain, Size: 103 bytes --]
I'd like to adopt the ocl-icd package.
Thanks in advance.
--
Takashi Yano <takashi.yano@nifty.ne.jp>
[-- Attachment #2: 2.2.9-cygwin-tests.patch --]
[-- Type: text/plain, Size: 2030 bytes --]
--- origsrc/ocl-icd-2.2.9/Makefile.am 2015-06-08 13:25:46.734101400 -0500
+++ src/ocl-icd-2.2.9/Makefile.am 2016-04-12 16:13:58.523793300 -0500
@@ -64,15 +64,15 @@ check_DATA = vendors/dummycl.icd vendors
CLEANFILES += vendors/dummycl.icd vendors/dummycl2.icd vendors/dummycl-noext.icd
vendors/dummycl.icd:
$(mkdir_p) vendors
- echo "$(CURDIR)/.libs/libdummycl.so" > $@
+ echo "$(CURDIR)/.libs/cygdummycl.dll" > $@
vendors/dummycl2.icd:
$(mkdir_p) vendors
- echo "$(CURDIR)/.libs/libdummycl2.so" > $@
+ echo "$(CURDIR)/.libs/cygdummycl2.dll" > $@
vendors/dummycl-noext.icd:
$(MKDIR_P) vendors
- echo "$(CURDIR)/.libs/libdummycl-noext.so" > $@
+ echo "$(CURDIR)/.libs/cygdummycl-noext.dll" > $@
clean-local: mostlyclean-generic clean-generic
-rmdir vendors
@@ -150,7 +148,7 @@ update-database: icd_generator.rb run_du
.PHONY: install_test_lib uninstall_test_lib
install_test_lib:
- sudo bash -c 'echo "$(CURDIR)/.libs/libdummycl.so" > /etc/OpenCL/vendors/dummycl.icd'
+ sudo bash -c 'echo "$(CURDIR)/.libs/cygdummycl.dll" > /etc/OpenCL/vendors/dummycl.icd'
uninstall_test_lib:
sudo rm -f /etc/OpenCL/vendors/dummycl.icd
--- origsrc/ocl-icd-2.2.9/icd_generator.rb 2015-12-16 08:59:05.162882700 -0600
+++ src/ocl-icd-2.2.9/icd_generator.rb 2016-04-12 15:11:13.461191100 -0500
@@ -290,6 +290,13 @@ EOF
#include <stdio.h>
#include <dlfcn.h>
+#ifdef __CYGWIN__
+static void *RTLD_NEXT = NULL;
+#define INIT(x) if(!RTLD_NEXT) RTLD_NEXT = dlopen("cygOpenCL-1.dll", 0);
+#else
+#define INIT(x)
+#endif
+
EOF
run_dummy_icd_weak += "#pragma GCC diagnostic push\n"
run_dummy_icd_weak += "# pragma GCC diagnostic ignored \"-Wcpp\"\n"
@@ -315,6 +322,7 @@ EOF
first_parameter = first_parameter[0][0..-2]
end
fps = first_parameter.split
+ run_dummy_icd_weak += " INIT()\n"
run_dummy_icd_weak += " void (*p)()=dlsym(RTLD_NEXT, \"#{func_name}\");\n"
ps = parameters.split(",")
ps = ps.collect { |p|
[-- Attachment #3: ocl-icd.cygport --]
[-- Type: text/plain, Size: 1081 bytes --]
NAME="ocl-icd"
VERSION=2.3.2
RELEASE=1
LICENSE="BSD-2-Clause"
CATEGORY="Libs"
SUMMARY="OpenCL ICD loader"
DESCRIPTION="OpenCL implementations are provided as ICD (Installable Client
Driver). An OpenCL program can use several ICD thanks to the use of an ICD
Loader as provided by this project."
HOMEPAGE="https://github.com/OCL-dev/ocl-icd/"
SRC_URI="https://github.com/OCL-dev/ocl-icd/archive/refs/tags/v${VERSION}.tar.gz"
PATCH_URI="
2.2.9-cygwin-tests.patch
"
PKG_NAMES="libOpenCL1 libOpenCL-devel"
libOpenCL1_REQUIRES="libpocl2" # only currently working backend
libOpenCL1_CONTENTS="
usr/bin/cygOpenCL-1.dll
usr/share/doc/
"
libOpenCL_devel_CONTENTS="
usr/bin/cllayerinfo.exe
usr/include/CL/
usr/include/ocl_icd.h
usr/lib/libOpenCL.dll.a
usr/lib/pkgconfig/OpenCL.pc
usr/lib/pkgconfig/ocl-icd.pc
usr/share/man/man7/libOpenCL*
"
CYGCONF_ARGS="--enable-official-khronos-headers"
src_install() {
cd ${B}
cyginstall
includeinto CL
doinclude ${S}/khronos-headers/CL/{cl,cl_[^d]*,opencl}.h
}
BUILD_REQUIRES="asciidoc xmlto"
[-- Attachment #4: ocl-icd-2.3.2-1.src.patch --]
[-- Type: text/plain, Size: 2318 bytes --]
--- origsrc/ocl-icd-2.3.2/Makefile.am 2023-09-10 19:42:53.360404200 +0900
+++ src/ocl-icd-2.3.2/Makefile.am 2023-09-10 19:54:18.819354400 +0900
@@ -48,7 +48,7 @@ libOpenCL_la_CFLAGS= $(NO_DEPRECATED_DEC
libOpenCL_la_SOURCES = ocl_icd_loader.c ocl_icd_loader.h ocl_icd_debug.h
nodist_libOpenCL_la_SOURCES = ocl_icd_loader_gen.c ocl_icd.h
-libOpenCL_la_LDFLAGS = -version-info 1:0:0 $(PTHREAD_CFLAGS)
+libOpenCL_la_LDFLAGS = -no-undefined -version-info 1:0:0 $(PTHREAD_CFLAGS)
libOpenCL_la_LIBADD = $(PTHREAD_LIBS)
if USE_MAP
libOpenCL_la_LDFLAGS += -Wl,--version-script,ocl_icd_loader_gen.map
@@ -103,25 +103,23 @@ stamp-generator-dummy: icd_generator.rb
$(RUBY) $< --mode generate --database $(srcdir)/ocl_interface.yaml
echo "timestamp" > $@
-# noinst_LTLIBRARIES would be the correct thing but then libtool
-# only built non shared version :-( So, declaring the libs as
-# pkglib_LTLIBRARIES and using an install hook to remove them.
-pkglib_LTLIBRARIES = libdummycl.la libdummycl2.la libdummycl-noext.la libdummylayer.la
-install-exec-hook::
- $(RM) -r $(DESTDIR)$(pkglibdir)
+noinst_LTLIBRARIES = libdummycl.la libdummycl2.la libdummycl-noext.la
libdummycl_la_SOURCES = libdummy_icd.c libdummy_icd.h
nodist_libdummycl_la_SOURCES = libdummy_icd_gen.c libdummy_icd_gen.h
libdummycl_la_LDFLAGS = -module
+libdummycl_la_LDFLAGS += -rpath `pwd` -no-undefined -avoid-version
libdummycl_noext_la_SOURCES = $(libdummycl_la_SOURCES)
nodist_libdummycl_noext_la_SOURCES = $(nodist_libdummycl_la_SOURCES)
libdummycl_noext_la_LDFLAGS = -module
+libdummycl_noext_la_LDFLAGS += -rpath `pwd` -no-undefined -avoid-version
libdummycl_noext_la_CPPFLAGS = $(AM_CPPFLAGS) -DICD_WITHOUT_EXTENSION
libdummycl2_la_SOURCES = $(libdummycl_la_SOURCES)
nodist_libdummycl2_la_SOURCES = $(nodist_libdummycl_la_SOURCES)
libdummycl2_la_LDFLAGS = -module
+libdummycl2_la_LDFLAGS += -rpath `pwd` -no-undefined -avoid-version
libdummycl2_la_CPPFLAGS = $(AM_CPPFLAGS) -DICD_SUFFIX=\"2\"
-nodist_libdummylayer_la_SOURCES = dummy_icd_layer_gen.c
-libdummylayer_la_LDFLAGS = -module
+#nodist_libdummylayer_la_SOURCES = dummy_icd_layer_gen.c
+#libdummylayer_la_LDFLAGS = -module
noinst_PROGRAMS=run_dummy_icd_through_our_ICDL
run_dummy_icd_through_our_ICDL_SOURCES = run_dummy_icd.c
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-09-12 12:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-11 11:43 [ITA] ocl-icd Takashi Yano
2023-09-12 12:46 ` Jon Turney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).