From 5f6738228d48e5f1c0ec4acca4379c7c7d0648ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20de=20Kok?= Date: Wed, 9 Sep 2020 15:08:24 +0200 Subject: [PATCH] clpeak: fix build The build of clpeak recently started failing because opencl-clhpp was updated. The latest version of opencl-hpp does not ship the deprecated cl.hpp header anymore. --- pkgs/tools/misc/clpeak/clpeak-clhpp2.diff | 72 +++++++++++++++++++++++ pkgs/tools/misc/clpeak/default.nix | 8 +++ 2 files changed, 80 insertions(+) create mode 100644 pkgs/tools/misc/clpeak/clpeak-clhpp2.diff diff --git a/pkgs/tools/misc/clpeak/clpeak-clhpp2.diff b/pkgs/tools/misc/clpeak/clpeak-clhpp2.diff new file mode 100644 index 000000000000..aed9112682b8 --- /dev/null +++ b/pkgs/tools/misc/clpeak/clpeak-clhpp2.diff @@ -0,0 +1,72 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 86fec9e..b9d0341 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -22,7 +22,7 @@ elseif(WIN32 AND ${OpenCL_LIBRARIES} MATCHES "OpenCL.lib") + set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} cfgmgr32.lib) + endif() + +-FIND_PATH(HPP_FOUND CL/cl.hpp PATHS ${OpenCL_INCLUDE_DIRS}) ++FIND_PATH(HPP_FOUND CL/cl2.hpp PATHS ${OpenCL_INCLUDE_DIRS}) + if(NOT HPP_FOUND) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + include(BuildCLHpp) +diff --git a/include/clpeak.h b/include/clpeak.h +index c090d31..0d9d5e2 100644 +--- a/include/clpeak.h ++++ b/include/clpeak.h +@@ -1,14 +1,10 @@ + #ifndef CLPEAK_HPP + #define CLPEAK_HPP + +-#define __CL_ENABLE_EXCEPTIONS +- +-#include +- + #include + #include + #include +-#include ++#include + #include + #include + #include +diff --git a/include/common.h b/include/common.h +index 91318cb..6aaca04 100644 +--- a/include/common.h ++++ b/include/common.h +@@ -1,7 +1,11 @@ + #ifndef COMMON_H + #define COMMON_H + +-#include ++#define CL_HPP_ENABLE_EXCEPTIONS ++#define CL_HPP_MINIMUM_OPENCL_VERSION 120 ++#define CL_HPP_TARGET_OPENCL_VERSION 120 ++#include ++ + #if defined(__APPLE__) || defined(__MACOSX) || defined(__FreeBSD__) + #include + #endif +diff --git a/src/clpeak.cpp b/src/clpeak.cpp +index 8708463..4a47842 100644 +--- a/src/clpeak.cpp ++++ b/src/clpeak.cpp +@@ -3,7 +3,7 @@ + + #define MSTRINGIFY(...) #__VA_ARGS__ + +-static const char *stringifiedKernels = ++static const std::string stringifiedKernels = + #include "global_bandwidth_kernels.cl" + #include "compute_sp_kernels.cl" + #include "compute_hp_kernels.cl" +@@ -65,7 +65,7 @@ int clPeak::runAll() + + cl::Context ctx(CL_DEVICE_TYPE_ALL, cps); + vector devices = ctx.getInfo(); +- cl::Program::Sources source(1, make_pair(stringifiedKernels, (strlen(stringifiedKernels) + 1))); ++ cl::Program::Sources source(1, stringifiedKernels); + cl::Program prog = cl::Program(ctx, source); + + for (size_t d = 0; d < devices.size(); d++) diff --git a/pkgs/tools/misc/clpeak/default.nix b/pkgs/tools/misc/clpeak/default.nix index 46284f9a4da0..b021703b804a 100644 --- a/pkgs/tools/misc/clpeak/default.nix +++ b/pkgs/tools/misc/clpeak/default.nix @@ -12,6 +12,14 @@ stdenv.mkDerivation rec { sha256 = "1wkjpvn4r89c3y06rv7gfpwpqw6ljmqwz0w0mljl9y5hn1r4pkx2"; }; + patches = [ + # The cl.hpp header was removed from opencl-clhpp. This patch + # updates clpeak to use the new cp2.hpp header. The patch comes + # from the following PR and was updated to apply against more + # recent versions: https://github.com/krrishnarraj/clpeak/pull/46 + ./clpeak-clhpp2.diff + ]; + nativeBuildInputs = [ cmake ]; buildInputs = [ ocl-icd opencl-clhpp ];