Я скомпилировал под Android. Оказалось просто, а все дополнительные инструменты (
https://docs.libretro.com/development/retroarch/compilation/android/) для компиляции всех ядер их средствами.
КомпиляцияСкопировать Android NDK (
https://developer.android.com/ndk/downloads) в любое место. Добавить путь до android-ndk-r23b\build в переменные среды. Открыть терминал в папке jni с кодом (например, libretro-fceumm-mod-master\jni), для этого можно в Проводнике в адресной строке ввести cmd и нажать Enter. Набрать команду ndk-build и нажать Enter. Будет генерироваться код совместимый с Android 4.1+ (по умолчанию
https://developer.android.com/ndk/guides/application_mk#app_platform) для всех платформ (APP_ABI), но у меня успел собрать для arm64-v8a и x86-64, а на armeabi-v7a произошла какая-то ошибка. Готовый файл переименовал по шаблону в fceumm_mod_libretro_android.so (т. е. имя_ядра + "_libretro_android.so").
Я исправил две строчки кода: for (i = 0; i < 256; i++), переменная i была типа uint8_t и поэтому бесконечный цикл. Это в retro_set_custom_palette(), видимо если устанавливать свою палитру. Там была ещё пара предупреждений, их не трогал.
Установка"Загрузить ядро > Установить или восстановить ядро" и выбрать .so файл. При этом .info не копируется автоматически и я не знаю как правильно, но если нет рута: в "Настройки > Каталоги > Информация о ядрах" выбрать в телефоне папку, например RetroArch/info. С рутом можно скопировать в /data/data/com.retroarch/info без изменения каталога. Если файл .info не подхватывается, то не будет отображаться "Лицензия: GPLv2", тогда нужно удалить кэш - файл core_info.cache в папке с инфо-файлами, у меня почему-то так было в начале.
В архиве .info файлы без изменений из исходного кода, вставляю чтобы не искать.
Проверил только запуском обычного Battle City.