(!pfn_notify && user_data))
throw error(CL_INVALID_VALUE);
- if (any_of([&](const cl_device_id dev) {
- return !prog->ctx.has_device(dev);
- }, devs, devs + count))
- throw error(CL_INVALID_DEVICE);
+ if (devs) {
+ if (any_of([&](const cl_device_id dev) {
+ return !prog->ctx.has_device(dev);
+ }, devs, devs + count))
+ throw error(CL_INVALID_DEVICE);
+
+ prog->build({ devs, devs + count });
+ } else {
+ prog->build(prog->ctx.devs);
+ }
- prog->build({ devs, devs + count });
return CL_SUCCESS;
} catch (error &e) {