PUBLIC cl_int clGetProgramBuildInfo(cl_program prog, cl_device_id dev, cl_program_build_info param, size_t size, void *buf, size_t *size_ret) { if (!prog) return CL_INVALID_PROGRAM; if (!prog->ctx.has_device(dev)) return CL_INVALID_DEVICE; switch (param) { case CL_PROGRAM_BUILD_STATUS: return scalar_property<cl_build_status>(buf, size, size_ret, prog->build_status(dev)); case CL_PROGRAM_BUILD_OPTIONS: return string_property(buf, size, size_ret, prog->build_opts(dev)); case CL_PROGRAM_BUILD_LOG: return string_property(buf, size, size_ret, prog->build_log(dev)); default: return CL_INVALID_VALUE; } }