This commit is contained in:
twinaphex 2015-09-15 05:22:57 +02:00
parent 747246ece8
commit 5f5efc03a7

214
dynamic.c
View File

@ -17,12 +17,13 @@
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include <boolean.h>
#include <file/file_path.h> #include <file/file_path.h>
#include <retro_log.h> #include <retro_log.h>
#include <compat/strl.h> #include <compat/strl.h>
#include <compat/posix_string.h> #include <compat/posix_string.h>
#include <boolean.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif #endif
@ -39,8 +40,7 @@
#include "input/input_sensor.h" #include "input/input_sensor.h"
#ifdef HAVE_DYNAMIC #ifdef HAVE_DYNAMIC
#undef SYM #define SYMBOL(x) do { \
#define SYM(x) do { \
function_t func = dylib_proc(lib_handle, #x); \ function_t func = dylib_proc(lib_handle, #x); \
memcpy(&p##x, &func, sizeof(func)); \ memcpy(&p##x, &func, sizeof(func)); \
if (p##x == NULL) { RARCH_ERR("Failed to load symbol: \"%s\"\n", #x); rarch_fail(1, "init_libretro_sym()"); } \ if (p##x == NULL) { RARCH_ERR("Failed to load symbol: \"%s\"\n", #x); rarch_fail(1, "init_libretro_sym()"); } \
@ -48,17 +48,17 @@
static dylib_t lib_handle; static dylib_t lib_handle;
#else #else
#define SYM(x) p##x = x #define SYMBOL(x) p##x = x
#endif #endif
#define SYM_DUMMY(x) p##x = libretro_dummy_##x #define SYMBOL_DUMMY(x) p##x = libretro_dummy_##x
#ifdef HAVE_FFMPEG #ifdef HAVE_FFMPEG
#define SYM_FFMPEG(x) p##x = libretro_ffmpeg_##x #define SYMBOL_FFMPEG(x) p##x = libretro_ffmpeg_##x
#endif #endif
#ifdef HAVE_IMAGEVIEWER #ifdef HAVE_IMAGEVIEWER
#define SYM_IMAGEVIEWER(x) p##x = libretro_imageviewer_##x #define SYMBOL_IMAGEVIEWER(x) p##x = libretro_imageviewer_##x
#endif #endif
void (*pretro_init)(void); void (*pretro_init)(void);
@ -333,147 +333,147 @@ static void load_symbols(enum rarch_core_type type)
#endif #endif
} }
SYM(retro_init); SYMBOL(retro_init);
SYM(retro_deinit); SYMBOL(retro_deinit);
SYM(retro_api_version); SYMBOL(retro_api_version);
SYM(retro_get_system_info); SYMBOL(retro_get_system_info);
SYM(retro_get_system_av_info); SYMBOL(retro_get_system_av_info);
SYM(retro_set_environment); SYMBOL(retro_set_environment);
SYM(retro_set_video_refresh); SYMBOL(retro_set_video_refresh);
SYM(retro_set_audio_sample); SYMBOL(retro_set_audio_sample);
SYM(retro_set_audio_sample_batch); SYMBOL(retro_set_audio_sample_batch);
SYM(retro_set_input_poll); SYMBOL(retro_set_input_poll);
SYM(retro_set_input_state); SYMBOL(retro_set_input_state);
SYM(retro_set_controller_port_device); SYMBOL(retro_set_controller_port_device);
SYM(retro_reset); SYMBOL(retro_reset);
SYM(retro_run); SYMBOL(retro_run);
SYM(retro_serialize_size); SYMBOL(retro_serialize_size);
SYM(retro_serialize); SYMBOL(retro_serialize);
SYM(retro_unserialize); SYMBOL(retro_unserialize);
SYM(retro_cheat_reset); SYMBOL(retro_cheat_reset);
SYM(retro_cheat_set); SYMBOL(retro_cheat_set);
SYM(retro_load_game); SYMBOL(retro_load_game);
SYM(retro_load_game_special); SYMBOL(retro_load_game_special);
SYM(retro_unload_game); SYMBOL(retro_unload_game);
SYM(retro_get_region); SYMBOL(retro_get_region);
SYM(retro_get_memory_data); SYMBOL(retro_get_memory_data);
SYM(retro_get_memory_size); SYMBOL(retro_get_memory_size);
break; break;
case CORE_TYPE_DUMMY: case CORE_TYPE_DUMMY:
SYM_DUMMY(retro_init); SYMBOL_DUMMY(retro_init);
SYM_DUMMY(retro_deinit); SYMBOL_DUMMY(retro_deinit);
SYM_DUMMY(retro_api_version); SYMBOL_DUMMY(retro_api_version);
SYM_DUMMY(retro_get_system_info); SYMBOL_DUMMY(retro_get_system_info);
SYM_DUMMY(retro_get_system_av_info); SYMBOL_DUMMY(retro_get_system_av_info);
SYM_DUMMY(retro_set_environment); SYMBOL_DUMMY(retro_set_environment);
SYM_DUMMY(retro_set_video_refresh); SYMBOL_DUMMY(retro_set_video_refresh);
SYM_DUMMY(retro_set_audio_sample); SYMBOL_DUMMY(retro_set_audio_sample);
SYM_DUMMY(retro_set_audio_sample_batch); SYMBOL_DUMMY(retro_set_audio_sample_batch);
SYM_DUMMY(retro_set_input_poll); SYMBOL_DUMMY(retro_set_input_poll);
SYM_DUMMY(retro_set_input_state); SYMBOL_DUMMY(retro_set_input_state);
SYM_DUMMY(retro_set_controller_port_device); SYMBOL_DUMMY(retro_set_controller_port_device);
SYM_DUMMY(retro_reset); SYMBOL_DUMMY(retro_reset);
SYM_DUMMY(retro_run); SYMBOL_DUMMY(retro_run);
SYM_DUMMY(retro_serialize_size); SYMBOL_DUMMY(retro_serialize_size);
SYM_DUMMY(retro_serialize); SYMBOL_DUMMY(retro_serialize);
SYM_DUMMY(retro_unserialize); SYMBOL_DUMMY(retro_unserialize);
SYM_DUMMY(retro_cheat_reset); SYMBOL_DUMMY(retro_cheat_reset);
SYM_DUMMY(retro_cheat_set); SYMBOL_DUMMY(retro_cheat_set);
SYM_DUMMY(retro_load_game); SYMBOL_DUMMY(retro_load_game);
SYM_DUMMY(retro_load_game_special); SYMBOL_DUMMY(retro_load_game_special);
SYM_DUMMY(retro_unload_game); SYMBOL_DUMMY(retro_unload_game);
SYM_DUMMY(retro_get_region); SYMBOL_DUMMY(retro_get_region);
SYM_DUMMY(retro_get_memory_data); SYMBOL_DUMMY(retro_get_memory_data);
SYM_DUMMY(retro_get_memory_size); SYMBOL_DUMMY(retro_get_memory_size);
break; break;
#ifdef HAVE_FFMPEG #ifdef HAVE_FFMPEG
case CORE_TYPE_FFMPEG: case CORE_TYPE_FFMPEG:
SYM_FFMPEG(retro_init); SYMBOL_FFMPEG(retro_init);
SYM_FFMPEG(retro_deinit); SYMBOL_FFMPEG(retro_deinit);
SYM_FFMPEG(retro_api_version); SYMBOL_FFMPEG(retro_api_version);
SYM_FFMPEG(retro_get_system_info); SYMBOL_FFMPEG(retro_get_system_info);
SYM_FFMPEG(retro_get_system_av_info); SYMBOL_FFMPEG(retro_get_system_av_info);
SYM_FFMPEG(retro_set_environment); SYMBOL_FFMPEG(retro_set_environment);
SYM_FFMPEG(retro_set_video_refresh); SYMBOL_FFMPEG(retro_set_video_refresh);
SYM_FFMPEG(retro_set_audio_sample); SYMBOL_FFMPEG(retro_set_audio_sample);
SYM_FFMPEG(retro_set_audio_sample_batch); SYMBOL_FFMPEG(retro_set_audio_sample_batch);
SYM_FFMPEG(retro_set_input_poll); SYMBOL_FFMPEG(retro_set_input_poll);
SYM_FFMPEG(retro_set_input_state); SYMBOL_FFMPEG(retro_set_input_state);
SYM_FFMPEG(retro_set_controller_port_device); SYMBOL_FFMPEG(retro_set_controller_port_device);
SYM_FFMPEG(retro_reset); SYMBOL_FFMPEG(retro_reset);
SYM_FFMPEG(retro_run); SYMBOL_FFMPEG(retro_run);
SYM_FFMPEG(retro_serialize_size); SYMBOL_FFMPEG(retro_serialize_size);
SYM_FFMPEG(retro_serialize); SYMBOL_FFMPEG(retro_serialize);
SYM_FFMPEG(retro_unserialize); SYMBOL_FFMPEG(retro_unserialize);
SYM_FFMPEG(retro_cheat_reset); SYMBOL_FFMPEG(retro_cheat_reset);
SYM_FFMPEG(retro_cheat_set); SYMBOL_FFMPEG(retro_cheat_set);
SYM_FFMPEG(retro_load_game); SYMBOL_FFMPEG(retro_load_game);
SYM_FFMPEG(retro_load_game_special); SYMBOL_FFMPEG(retro_load_game_special);
SYM_FFMPEG(retro_unload_game); SYMBOL_FFMPEG(retro_unload_game);
SYM_FFMPEG(retro_get_region); SYMBOL_FFMPEG(retro_get_region);
SYM_FFMPEG(retro_get_memory_data); SYMBOL_FFMPEG(retro_get_memory_data);
SYM_FFMPEG(retro_get_memory_size); SYMBOL_FFMPEG(retro_get_memory_size);
break; break;
#endif #endif
case CORE_TYPE_IMAGEVIEWER: case CORE_TYPE_IMAGEVIEWER:
#ifdef HAVE_IMAGEVIEWER #ifdef HAVE_IMAGEVIEWER
SYM_IMAGEVIEWER(retro_init); SYMBOL_IMAGEVIEWER(retro_init);
SYM_IMAGEVIEWER(retro_deinit); SYMBOL_IMAGEVIEWER(retro_deinit);
SYM_IMAGEVIEWER(retro_api_version); SYMBOL_IMAGEVIEWER(retro_api_version);
SYM_IMAGEVIEWER(retro_get_system_info); SYMBOL_IMAGEVIEWER(retro_get_system_info);
SYM_IMAGEVIEWER(retro_get_system_av_info); SYMBOL_IMAGEVIEWER(retro_get_system_av_info);
SYM_IMAGEVIEWER(retro_set_environment); SYMBOL_IMAGEVIEWER(retro_set_environment);
SYM_IMAGEVIEWER(retro_set_video_refresh); SYMBOL_IMAGEVIEWER(retro_set_video_refresh);
SYM_IMAGEVIEWER(retro_set_audio_sample); SYMBOL_IMAGEVIEWER(retro_set_audio_sample);
SYM_IMAGEVIEWER(retro_set_audio_sample_batch); SYMBOL_IMAGEVIEWER(retro_set_audio_sample_batch);
SYM_IMAGEVIEWER(retro_set_input_poll); SYMBOL_IMAGEVIEWER(retro_set_input_poll);
SYM_IMAGEVIEWER(retro_set_input_state); SYMBOL_IMAGEVIEWER(retro_set_input_state);
SYM_IMAGEVIEWER(retro_set_controller_port_device); SYMBOL_IMAGEVIEWER(retro_set_controller_port_device);
SYM_IMAGEVIEWER(retro_reset); SYMBOL_IMAGEVIEWER(retro_reset);
SYM_IMAGEVIEWER(retro_run); SYMBOL_IMAGEVIEWER(retro_run);
SYM_IMAGEVIEWER(retro_serialize_size); SYMBOL_IMAGEVIEWER(retro_serialize_size);
SYM_IMAGEVIEWER(retro_serialize); SYMBOL_IMAGEVIEWER(retro_serialize);
SYM_IMAGEVIEWER(retro_unserialize); SYMBOL_IMAGEVIEWER(retro_unserialize);
SYM_IMAGEVIEWER(retro_cheat_reset); SYMBOL_IMAGEVIEWER(retro_cheat_reset);
SYM_IMAGEVIEWER(retro_cheat_set); SYMBOL_IMAGEVIEWER(retro_cheat_set);
SYM_IMAGEVIEWER(retro_load_game); SYMBOL_IMAGEVIEWER(retro_load_game);
SYM_IMAGEVIEWER(retro_load_game_special); SYMBOL_IMAGEVIEWER(retro_load_game_special);
SYM_IMAGEVIEWER(retro_unload_game); SYMBOL_IMAGEVIEWER(retro_unload_game);
SYM_IMAGEVIEWER(retro_get_region); SYMBOL_IMAGEVIEWER(retro_get_region);
SYM_IMAGEVIEWER(retro_get_memory_data); SYMBOL_IMAGEVIEWER(retro_get_memory_data);
SYM_IMAGEVIEWER(retro_get_memory_size); SYMBOL_IMAGEVIEWER(retro_get_memory_size);
#endif #endif
break; break;
} }