I'd like to adopt the ocl-icd package. Thanks in advance. -- Takashi Yano <takashi.y...@nifty.ne.jp>
--- 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|
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"
--- 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