static void load_symbols(bool is_dummy) { if (is_dummy) { SYM_DUMMY(retro_init); SYM_DUMMY(retro_deinit); SYM_DUMMY(retro_api_version); SYM_DUMMY(retro_get_system_info); SYM_DUMMY(retro_get_system_av_info); SYM_DUMMY(retro_set_environment); SYM_DUMMY(retro_set_video_refresh); SYM_DUMMY(retro_set_audio_sample); SYM_DUMMY(retro_set_audio_sample_batch); SYM_DUMMY(retro_set_input_poll); SYM_DUMMY(retro_set_input_state); SYM_DUMMY(retro_set_controller_port_device); SYM_DUMMY(retro_reset); SYM_DUMMY(retro_run); SYM_DUMMY(retro_serialize_size); SYM_DUMMY(retro_serialize); SYM_DUMMY(retro_unserialize); SYM_DUMMY(retro_cheat_reset); SYM_DUMMY(retro_cheat_set); SYM_DUMMY(retro_load_game); SYM_DUMMY(retro_load_game_special); SYM_DUMMY(retro_unload_game); SYM_DUMMY(retro_get_region); SYM_DUMMY(retro_get_memory_data); SYM_DUMMY(retro_get_memory_size); } else { #ifdef HAVE_DYNAMIC if (path_is_directory(g_settings.libretro)) { char libretro_core_buffer[PATH_MAX]; if (!find_first_libretro(libretro_core_buffer, sizeof(libretro_core_buffer), g_settings.libretro, g_extern.fullpath)) { RARCH_ERR("libretro_path is a directory, but no valid libretro implementation was found.\n"); rarch_fail(1, "load_dynamic()"); } strlcpy(g_settings.libretro, libretro_core_buffer, sizeof(g_settings.libretro)); } // Need to use absolute path for this setting. It can be saved to ROM history, // and a relative path would break in that scenario. path_resolve_realpath(g_settings.libretro, sizeof(g_settings.libretro)); RARCH_LOG("Loading dynamic libretro from: \"%s\"\n", g_settings.libretro); lib_handle = dylib_load(g_settings.libretro); if (!lib_handle) { RARCH_ERR("Failed to open dynamic library: \"%s\"\n", g_settings.libretro); rarch_fail(1, "load_dynamic()"); } #endif SYM(retro_init); SYM(retro_deinit); SYM(retro_api_version); SYM(retro_get_system_info); SYM(retro_get_system_av_info); SYM(retro_set_environment); SYM(retro_set_video_refresh); SYM(retro_set_audio_sample); SYM(retro_set_audio_sample_batch); SYM(retro_set_input_poll); SYM(retro_set_input_state); SYM(retro_set_controller_port_device); SYM(retro_reset); SYM(retro_run); SYM(retro_serialize_size); SYM(retro_serialize); SYM(retro_unserialize); SYM(retro_cheat_reset); SYM(retro_cheat_set); SYM(retro_load_game); SYM(retro_load_game_special); SYM(retro_unload_game); SYM(retro_get_region); SYM(retro_get_memory_data); SYM(retro_get_memory_size); } }
static void load_symbols(void) { #ifdef HAVE_DYNAMIC const char *libretro_path = g_settings.libretro; char libretro_core_buffer[PATH_MAX]; if (path_is_directory(g_settings.libretro)) { if (!find_first_libretro(libretro_core_buffer, sizeof(libretro_core_buffer), g_settings.libretro, g_extern.fullpath)) { RARCH_ERR("libretro_path is a directory, but no valid libretro implementation was found.\n"); rarch_fail(1, "load_dynamic()"); } libretro_path = libretro_core_buffer; } RARCH_LOG("Loading dynamic libretro from: \"%s\"\n", libretro_path); lib_handle = dylib_load(libretro_path); if (!lib_handle) { RARCH_ERR("Failed to open dynamic library: \"%s\"\n", libretro_path); rarch_fail(1, "load_dynamic()"); } #endif SYM(retro_init); SYM(retro_deinit); SYM(retro_api_version); SYM(retro_get_system_info); SYM(retro_get_system_av_info); SYM(retro_set_environment); SYM(retro_set_video_refresh); SYM(retro_set_audio_sample); SYM(retro_set_audio_sample_batch); SYM(retro_set_input_poll); SYM(retro_set_input_state); SYM(retro_set_controller_port_device); SYM(retro_reset); SYM(retro_run); SYM(retro_serialize_size); SYM(retro_serialize); SYM(retro_unserialize); SYM(retro_cheat_reset); SYM(retro_cheat_set); SYM(retro_load_game); SYM(retro_load_game_special); SYM(retro_unload_game); SYM(retro_get_region); SYM(retro_get_memory_data); SYM(retro_get_memory_size); }