arrayfire / arrayfire

ArrayFire: a general purpose GPU library.

Home Page:https://arrayfire.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Build] Syntax error in CMake generator expression for OpenCL

StefanBruens opened this issue · comments

$<$<BOOL:${OpenCL_FOUND}>: $<TARGET_PROPERTY:OpenCL::OpenCL,INTERFACE_INCLUDE_DIRECTORIES>>

In case OpenCL is not found, the evaluation is broken, as apparently CMake is unhappy due to the extra space after the colon.

With the extra space CMake fails to do lazy evaluation of the right-hand side, and complains about the non-existing OpenCL::OpenCL target.

Removing the space character fixes the error, i.e.:
$<$<BOOL:${OpenCL_FOUND}>:$<TARGET_PROPERTY:OpenCL::OpenCL,INTERFACE_INCLUDE_DIRECTORIES>>

BTW, the "OpenCL_Found" check here and elsewhere is probably wrong, and should use "AF_BUILD_OPENCL" instead.

Can you paste the syntax error and the version of CMake you are using? I can't reproduce it on my end with my setup.

Same error with CMake 3.28 and CMake 3.20:

[   34s] CMake Error:
[   34s]   Error evaluating generator expression:
[   34s] 
[   34s]     $<TARGET_PROPERTY:OpenCL::OpenCL,INTERFACE_INCLUDE_DIRECTORIES>
[   34s] 
[   34s]   Target "OpenCL::OpenCL" not found.

Do you have OpenCL installed? This will only happen without OpenCL.

I was able to replicate it in a clean Ubuntu 22.04 LTS system with OpenCL not installed and trying to build just the CPU backend. Issued a fix in pull request