From ca62b9358f034431caec14682bbc9d6e7b3347ef Mon Sep 17 00:00:00 2001 From: greatpanc Date: Wed, 24 Nov 2021 15:28:11 +0800 Subject: [PATCH] remove patch --- 0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch | 26 +++++++++++ ...-missing-const-to-context-properties.patch | 43 ++++++++++++++++++ ...eMapSVM-for-cl-vector-and-cl-pointer.patch | 34 ++++++++++++++ opencl-clhpp.spec | 20 +++++--- v2.0.12.tar.gz | Bin 7427845 -> 7426673 bytes 5 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch create mode 100644 0002-add-missing-const-to-context-properties.patch create mode 100644 0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch diff --git a/0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch b/0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch new file mode 100644 index 0000000..a50aa33 --- /dev/null +++ b/0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch @@ -0,0 +1,26 @@ +From faa9f15b88b99ec5284d2285f0a70715ecfe68d2 Mon Sep 17 00:00:00 2001 +From: greatpanc +Date: Mon, 22 Nov 2021 21:52:59 +0800 +Subject: [PATCH] Add_CL_DEVICE_BOARD_NAME_AMD + +--- + include/CL/cl2.hpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp +index ced4b03..6207f52 100644 +--- OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp ++++ OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp +@@ -1498,6 +1498,9 @@ CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUT + #ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD + CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint) + #endif ++#ifdef CL_DEVICE_BOARD_NAME_AMD ++ CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_BOARD_NAME_AMD, string) ++#endif + + #ifdef CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM + CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM, cl_ulong) +-- +2.25.1 + diff --git a/0002-add-missing-const-to-context-properties.patch b/0002-add-missing-const-to-context-properties.patch new file mode 100644 index 0000000..761ab86 --- /dev/null +++ b/0002-add-missing-const-to-context-properties.patch @@ -0,0 +1,43 @@ +From ef63c6265000ab89d5657e1d2e020e7c7de33d7e Mon Sep 17 00:00:00 2001 +From: greatpanc +Date: Tue, 23 Nov 2021 15:34:59 +0800 +Subject: [PATCH] add missing const to context properties + +--- + include/CL/cl2.hpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp +index ced4b03..24da723 100644 +--- OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp ++++ OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp +@@ -2806,7 +2806,7 @@ public: + */ + Context( + const vector& devices, +- cl_context_properties* properties = NULL, ++ const cl_context_properties* properties = NULL, + void (CL_CALLBACK * notifyFptr)( + const char *, + const void *, +@@ -2837,7 +2837,7 @@ public: + + Context( + const Device& device, +- cl_context_properties* properties = NULL, ++ const cl_context_properties* properties = NULL, + void (CL_CALLBACK * notifyFptr)( + const char *, + const void *, +@@ -2867,7 +2867,7 @@ public: + */ + Context( + cl_device_type type, +- cl_context_properties* properties = NULL, ++ const cl_context_properties* properties = NULL, + void (CL_CALLBACK * notifyFptr)( + const char *, + const void *, +-- +2.25.1 + diff --git a/0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch b/0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch new file mode 100644 index 0000000..04d095c --- /dev/null +++ b/0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch @@ -0,0 +1,34 @@ +From 5b388814ca0f51ccc78c3aef41f824e139f06df4 Mon Sep 17 00:00:00 2001 +From: greatpanc +Date: Tue, 23 Nov 2021 16:01:57 +0800 +Subject: [PATCH] Fix cl::enqueueMapSVM for cl::vector and cl::pointer + +--- + include/CL/cl2.hpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp +index ced4b03..d4bb695 100644 +--- OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp ++++ OpenCL-CLHPP-2.0.12/include/CL/cl2.hpp +@@ -9220,7 +9220,7 @@ inline cl_int enqueueMapSVM( + */ + template + inline cl_int enqueueMapSVM( +- cl::pointer ptr, ++ cl::pointer &ptr, + cl_bool blocking, + cl_map_flags flags, + size_type size, +@@ -9244,7 +9244,7 @@ inline cl_int enqueueMapSVM( + */ + template + inline cl_int enqueueMapSVM( +- cl::vector container, ++ cl::vector &container, + cl_bool blocking, + cl_map_flags flags, + const vector* events = NULL, +-- +2.25.1 + diff --git a/opencl-clhpp.spec b/opencl-clhpp.spec index 046f3c2..f3d4815 100644 --- a/opencl-clhpp.spec +++ b/opencl-clhpp.spec @@ -1,9 +1,9 @@ %global date 2020.12.18 Name: opencl-clhpp Version: 2.0.12 -Release: 8 +Release: 9 Summary: OpenCL (Open Computing Language) bind cpp header files. -License: Apache-2.0 MIT +License: Apache-2.0 and MIT URL: https://github.com/KhronosGroup/OpenCL-CLHPP Source0: https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v%{version}.tar.gz Source1: https://github.com/KhronosGroup/OpenCL-Headers/archive/v%{date}.tar.gz @@ -11,6 +11,10 @@ Source2: https://github.com/ThrowTheSwitch/CMock/archive/refs/tags/v Source3: https://github.com/ThrowTheSwitch/Unity/archive/refs/tags/v2.5.2.tar.gz Source4: https://github.com/ThrowTheSwitch/CException/archive/refs/tags/v1.3.3.tar.gz +Patch1: 0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch +Patch2: 0002-add-missing-const-to-context-properties.patch +Patch3: 0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch + BuildArch: noarch BuildRequires: gcc-c++ cmake >= 3.14.0 ocl-icd rubygems ruby python git @@ -21,7 +25,7 @@ Provides: bundled(grpc) %{summary}. %prep -%autosetup -n OpenCL-CLHPP-%{version} +tar -zxf %SOURCE0 -C %{_builddir}/ tar -zxf %SOURCE1 -C %{_builddir}/OpenCL-CLHPP-%{version} tar -zxf %SOURCE2 -C %{_builddir}/OpenCL-CLHPP-%{version}/external/ tar -zxf %SOURCE3 -C %{_builddir}/OpenCL-CLHPP-%{version}/external/ @@ -31,12 +35,9 @@ tar -zxf %SOURCE4 -C %{_builddir}/OpenCL-CLHPP-%{version}/external/CMock/vendor/ mv %{_builddir}/OpenCL-CLHPP-%{version}/external/CMock/vendor/Unity/* %{_builddir}/OpenCL-CLHPP-%{version}/external/CMock/vendor/unity/ %build +cd %{_builddir}/OpenCL-CLHPP-%{version} ln -s /usr/lib64/libOpenCL.so.1 %{_builddir}/OpenCL-CLHPP-%{version}/libOpenCL.so -git apply 0001-Add_CL_DEVICE_BOARD_NAME_AMD.patch -git apply 0002-add-missing-const-to-context-properties.patch -git apply 0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch - rm -rf build mkdir build cd build @@ -47,10 +48,12 @@ cmake .. -DOPENCL_INCLUDE_DIR=%{_builddir}/OpenCL-CLHPP-%{version}/OpenCL-Header -DBUILD_EXAMPLES=ON %install +cd %{_builddir}/OpenCL-CLHPP-%{version} cd build make install DESTDIR=%{buildroot} %check +cd %{_builddir}/OpenCL-CLHPP-%{version} cd build make test @@ -59,6 +62,9 @@ make test /usr/local/include/CL/cl2.hpp %changelog +* Tue Nov 12 2021 yinchangpan - v2.12.0-9 +- remove patch + * Tue Nov 12 2021 yinchangpan - v2.12.0-8 - patch 0003-Fix-cl-enqueueMapSVM-for-cl-vector-and-cl-pointer.patch diff --git a/v2.0.12.tar.gz b/v2.0.12.tar.gz index 2f26c13def465bd3158e30e6a80b8fafcce2b4f0..b5219b6e54347601ba147baf51363eef9d78603f 100644 GIT binary patch delta 7573 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 delta 8754 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