22 #define WAYLAND_DYNLOAD_IFACE(symbol) \
23 extern struct wl_interface symbol; \
24 struct wl_interface symbol;
26 #undef WAYLAND_DYNLOAD_IFACE
31 const char *paths[] = {
32 "libwayland-client.so.0",
33 "libwayland-client.so",
35 const int paths_num =
sizeof(paths) /
sizeof(*paths);
44 #define WAYLAND_DYNLOAD_IFACE(symbol) \
46 const void *symbol_val; \
47 if (!(symbol_val = dynamic_library_find_with_error(lib, #symbol, paths[path_found]))) { \
50 memcpy(&symbol, symbol_val, sizeof(symbol)); \
53 #undef WAYLAND_DYNLOAD_IFACE
55 #define WAYLAND_DYNLOAD_FN(symbol) \
56 if (!(wayland_dynload_client.symbol = dynamic_library_find_with_error( \
57 lib, #symbol, paths[path_found]))) { \
61 #undef WAYLAND_DYNLOAD_FN
75 #pragma GCC diagnostic push
76 #pragma GCC diagnostic ignored "-Wredundant-decls"
77 #define WAYLAND_DYNLOAD_VALIDATE
79 #pragma GCC diagnostic pop
void wayland_dynload_client_exit(void)
static DynamicLibrary lib
bool wayland_dynload_client_init(const bool verbose)
struct WaylandDynload_Client wayland_dynload_client
DynamicLibrary dynamic_library_open_array_with_error(const char **paths, const int paths_num, const bool verbose, int *r_path_index)
#define dynamic_library_close(lib)