blob: 2cf37001cc86d74311d155b9726ce0fe36688608 [file] [log] [blame]
#include <CL/cl.h>
#include <CL/cl_gl.h>
#include <CL/cl_egl.h>
#include <CL/cl_ext.h>
#include <CL/cl_gl_ext.h>
#include <dlfcn.h>
void* libHandle = nullptr;
#define FUNC_TYPES(rettype, fname, fargs, callArgs) \
typedef rettype (* fname ## _t) fargs;
#define FUNC_SYM(rettype, fname, fargs, callArgs) \
rettype fname fargs { \
if (!libHandle) \
libHandle = dlopen( "libOpenCL.so", RTLD_NOW | RTLD_GLOBAL ); \
\
static fname ## _t func = nullptr; \
if (!func) \
func = reinterpret_cast< fname ## _t >(dlsym(libHandle, #fname)); \
\
return func callArgs; \
\
}
#define CL_MACRO FUNC_TYPES
#include "apis.h"
#undef CL_MACRO
#define CL_MACRO FUNC_SYM
#include "apis.h"
#undef CL_MACRO