1*6467f958SSadaf Ebrahimi #include <CL/cl.h> 2*6467f958SSadaf Ebrahimi #include <CL/cl_gl.h> 3*6467f958SSadaf Ebrahimi #include <CL/cl_egl.h> 4*6467f958SSadaf Ebrahimi #include <CL/cl_ext.h> 5*6467f958SSadaf Ebrahimi #include <dlfcn.h> 6*6467f958SSadaf Ebrahimi 7*6467f958SSadaf Ebrahimi 8*6467f958SSadaf Ebrahimi void* libHandle = nullptr; 9*6467f958SSadaf Ebrahimi 10*6467f958SSadaf Ebrahimi #define FUNC_TYPES(rettype, fname, fargs, callArgs) \ 11*6467f958SSadaf Ebrahimi typedef rettype (* fname ## _t) fargs; 12*6467f958SSadaf Ebrahimi 13*6467f958SSadaf Ebrahimi #define FUNC_SYM(rettype, fname, fargs, callArgs) \ 14*6467f958SSadaf Ebrahimi rettype fname fargs { \ 15*6467f958SSadaf Ebrahimi if (!libHandle) \ 16*6467f958SSadaf Ebrahimi libHandle = dlopen( "libOpenCL.so", RTLD_NOW | RTLD_GLOBAL ); \ 17*6467f958SSadaf Ebrahimi \ 18*6467f958SSadaf Ebrahimi static fname ## _t func = nullptr; \ 19*6467f958SSadaf Ebrahimi if (!func) \ 20*6467f958SSadaf Ebrahimi func = reinterpret_cast< fname ## _t >(dlsym(libHandle, #fname)); \ 21*6467f958SSadaf Ebrahimi \ 22*6467f958SSadaf Ebrahimi return func callArgs; \ 23*6467f958SSadaf Ebrahimi \ 24*6467f958SSadaf Ebrahimi } 25*6467f958SSadaf Ebrahimi 26*6467f958SSadaf Ebrahimi #define CL_MACRO FUNC_TYPES 27*6467f958SSadaf Ebrahimi #include "apis.h" 28*6467f958SSadaf Ebrahimi #undef CL_MACRO 29*6467f958SSadaf Ebrahimi 30*6467f958SSadaf Ebrahimi #define CL_MACRO FUNC_SYM 31*6467f958SSadaf Ebrahimi #include "apis.h" 32*6467f958SSadaf Ebrahimi #undef CL_MACRO 33