Open madcock opened 8 months ago
Is it possible to build with an old version of ffmpeg?
ffmpeg has required threading support since 760ce4bc0bd11f74f0851c0a662dd5cae888df83 (Jul 2022) https://trac.ffmpeg.org/ticket/10900
Hi, I just checked the code you used. It does has the macro to allow not using threads.
if HAVE_PTHREADS
I think you may just need to define HAVE_PTHREADS as 0 using environment variables when building it
Hi, I successfully built ffmpeg core (ffmpeg_libretro_sf2000.a) with a rough script. However the resulting file is 129MB. I am worried that the device could not load it.
Unfortunately, just building the library file doesn't help. I built with your script and the .a file was in place when I attempted to build the bisrv.asd and core. But the problem comes when everything is linked together and combined into the core.elf. That's where the thread errors (and others) appear. I've attached a log for the sf2000 build below. Also, when I built with your script, the ffmpeg_libretro_sf2000.a file was only about 20mb. So size shouldn't have been a problem. Linking, and missing all those expected OS functions (since there's no OS on the sf2000) was the issue.
Your build script also had a few errors, though it probably didn't matter for options. cc: error: unrecognized command-line option ‘-EL’; did you mean ‘-E’? cc: error: unrecognized command-line option ‘-G0’ cc: error: unrecognized command-line option ‘-mno-abicalls’ make: *** [Makefile:307: libretro-common/glsym/glsym_gl.o] Error 1
The log is very long, but all the link errors are at the end...
compiling cores/FFmpeg/libretro
make -j8 -C cores/FFmpeg/libretro platform=sf2000
make[1]: Entering directory '/mnt/c/Users/arcad/Downloads/code/sf2000_multicore/cores/FFmpeg/libretro'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/mnt/c/Users/arcad/Downloads/code/sf2000_multicore/cores/FFmpeg/libretro'
cp cores/FFmpeg/libretro/.a libretro_core.a
compiling libretro-common
make -j8 -C libs/libretro-common
make[1]: Entering directory '/mnt/c/Users/arcad/Downloads/code/sf2000_multicore/libs/libretro-common'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/mnt/c/Users/arcad/Downloads/code/sf2000_multicore/libs/libretro-common'
cp -u libs/libretro-common/libretro-common.a libretro-common.a
/opt/mips32-mti-elf/2019.09-03-2/bin/mips-mti-elf-gcc -EL -march=mips32 -mtune=mips32 -msoft-float -Os -G0 -mno-abicalls -fno-pic -ffunction-sections -fdata-sections -I libs/libretro-common/include -DDEBUG_XLOG=1 -o core_api.o -c core_api.c
core_api.c:58:37: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
static int fw_fps_counter_enable = 0x80c0b5e0;
^~~~~~
core_api.c:59:30: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
static int fw_fps_counter = 0x80c0b5dc;
^~~~~~
core_api.c:60:38: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
static char fw_fps_counter_format = 0x8099bdf0; // "%2d/%2d"
^~~~~~
core_api.c: In function ‘wrap_retro_load_game’:
core_api.c:169:2: warning: implicit declaration of function ‘build_game_config_filepath’; did you mean ‘config_get_config_path’? [-Wimplicit-function-declaration]
build_game_config_filepath(config_game_filepath, sizeof(config_game_filepath), s_game_filepath,sysinfo.library_name);
^~~~~~
config_get_config_path
core_api.c:172:2: warning: implicit declaration of function ‘config_add_file’; did you mean ‘config_append_file’? [-Wimplicit-function-declaration]
config_add_file(config_game_filepath);
^~~~~~~
config_append_file
core_api.c: At top level:
core_api.c:445:6: warning: conflicting types for ‘build_game_config_filepath’
void build_game_config_filepath(char filepath, size_t size, const char game_filepath, char library_name)
^~~~~~
core_api.c:169:2: note: previous implicit declaration of ‘build_game_config_filepath’ was here
build_game_config_filepath(config_game_filepath, sizeof(config_game_filepath), s_game_filepath,sysinfo.library_name);
^~~~~~
core_api.c:462:6: warning: conflicting types for ‘config_add_file’
void config_add_file(const char *filepath)
^~~~~~~
core_api.c:172:2: note: previous implicit declaration of ‘config_add_file’ was here
config_add_file(config_game_filepath);
^~~~~~~
/opt/mips32-mti-elf/2019.09-03-2/bin/mips-mti-elf-gcc -EL -march=mips32 -mtune=mips32 -msoft-float -Os -G0 -mno-abicalls -fno-pic -ffunction-sections -fdata-sections -I libs/libretro-common/include -DDEBUG_XLOG=1 -o lib.o -c lib.c
/opt/mips32-mti-elf/2019.09-03-2/bin/mips-mti-elf-gcc -EL -march=mips32 -mtune=mips32 -msoft-float -Os -G0 -mno-abicalls -fno-pic -ffunction-sections -fdata-sections -I libs/libretro-common/include -DDEBUG_XLOG=1 -o debug.o -c debug.c
/opt/mips32-mti-elf/2019.09-03-2/bin/mips-mti-elf-gcc -EL -march=mips32 -mtune=mips32 -msoft-float -Os -G0 -mno-abicalls -fno-pic -ffunction-sections -fdata-sections -I libs/libretro-common/include -DDEBUG_XLOG=1 -o video_sf2000.o -c video_sf2000.c
compiling core.elf
/opt/mips32-mti-elf/2019.09-03-2/bin/mips-mti-elf-g++ -Wl,-Map=core.elf.map -EL -march=mips32 -mtune=mips32 -msoft-float -Wl,--gc-sections --static -z max-page-size=32 -e __core_entry__ -Tcore.ld bisrv_08_03-core.ld -o core.elf \
-Wl,--start-group core_api.o lib.o debug.o video_sf2000.o libretro_core.a libretro-common.a -lc -Wl,--end-group
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function getenv': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: multiple definition of
getenv'; libretro_core.a(utils.o):/home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function getenv': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: multiple definition of
getenv'; libretro_core.a(utils.o):/home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function getenv': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: multiple definition of
getenv'; libretro_core.a(utils.o):/home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_get_format': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3783: multiple definition of
ff_thread_get_format'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_get_format+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_get_buffer': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3787: multiple definition of
ff_thread_get_buffer'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_get_buffer+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_release_buffer': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3794: multiple definition of
ff_thread_release_buffer'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_release_buffer+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_finish_setup': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3800: multiple definition of
ff_thread_finish_setup'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_finish_setup+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_report_progress': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3804: multiple definition of
ff_thread_report_progress'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_report_progress+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_await_progress': libavcodec/utils.c:(.text.ff_thread_await_progress+0x0): multiple definition of
ff_thread_await_progress'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_await_progress+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_can_start_frame': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3813: multiple definition of
ff_thread_can_start_frame'; libretro_core.a(pthread_frame.o):pthread_frame.c:(.text.ff_thread_can_start_frame+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_alloc_entries': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3818: multiple definition of
ff_alloc_entries'; libretro_core.a(pthread_slice.o):pthread_slice.c:(.text.ff_alloc_entries+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_reset_entries': libavcodec/utils.c:(.text.ff_reset_entries+0x0): multiple definition of
ff_reset_entries'; libretro_core.a(pthread_slice.o):pthread_slice.c:(.text.ff_reset_entries+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_await_progress2': libavcodec/utils.c:(.text.ff_thread_await_progress2+0x0): multiple definition of
ff_thread_await_progress2'; libretro_core.a(pthread_slice.o):pthread_slice.c:(.text.ff_thread_await_progress2+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(utils.o): in function ff_thread_report_progress2': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3830: multiple definition of
ff_thread_report_progress2'; libretro_core.a(pthread_slice.o):pthread_slice.c:(.text.ff_thread_report_progress2+0x0): first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(swresample.o): in function getenv': /home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: multiple definition of
getenv'; libretro_core.a(utils.o):/home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/./config.h:17: first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread.o): in function ff_thread_init': pthread.c:(.text.ff_thread_init+0x0): multiple definition of
ff_thread_init'; libretro_core.a(utils.o):/home/adcockm/downloads/sf2000_multicore/cores/FFmpeg/libavcodec/utils.c:3592: first defined here
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: warning: core.elf uses -msoft-float (set by /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/mips32/el/sof/crti.o), libretro_core.a(utils.o) uses -mhard-float
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: warning: core.elf uses -msoft-float (set by /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/mips32/el/sof/crti.o), libretro_core.a(utils.o) uses -mhard-float
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: warning: core.elf uses -msoft-float (set by /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/mips32/el/sof/crti.o), libretro_core.a(utils.o) uses -mhard-float
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: warning: core.elf uses -msoft-float (set by /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/mips32/el/sof/crti.o), libretro_core.a(utils.o) uses -mhard-float
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: warning: core.elf uses -msoft-float (set by /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/mips32/el/sof/crti.o), libretro_core.a(swresample.o) uses -mhard-float
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(ffmpeg_core.o): in function decode_thread': ffmpeg_core.c:(.text.decode_thread+0xa4c): undefined reference to
fifo_write'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: ffmpeg_core.c:(.text.decode_thread+0xbbc): undefined reference to fifo_write' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: ffmpeg_core.c:(.text.decode_thread+0xbe8): undefined reference to
fifo_write'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(ffmpeg_core.o): in function retro_run': ffmpeg_core.c:(.text.retro_run+0xb8c): undefined reference to
fifo_read'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: ffmpeg_core.c:(.text.retro_run+0xbac): undefined reference to fifo_read' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: ffmpeg_core.c:(.text.retro_run+0xbd4): undefined reference to
fifo_read'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(ffmpeg_core.o): in function retro_load_game': ffmpeg_core.c:(.text.retro_load_game+0x580): undefined reference to
fifo_new'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: ffmpeg_core.c:(.text.retro_load_game+0x6b0): undefined reference to fifo_new' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
sthread_create':
rthreads.c:(.text.sthread_create+0x50): undefined reference to pthread_attr_init' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: rthreads.c:(.text.sthread_create+0x68): undefined reference to
pthread_create'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: rthreads.c:(.text.sthread_create+0x74): undefined reference to pthread_attr_destroy' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
sthread_join':
rthreads.c:(.text.sthread_join+0x1c): undefined reference to pthread_join' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
slock_new':
rthreads.c:(.text.slock_new+0x24): undefined reference to pthread_mutex_init' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
slock_free':
rthreads.c:(.text.slock_free+0x14): undefined reference to pthread_mutex_destroy' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
slock_lock':
rthreads.c:(.text.slock_lock+0x8): undefined reference to pthread_mutex_lock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
slock_unlock':
rthreads.c:(.text.slock_unlock+0x8): undefined reference to pthread_mutex_unlock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
scond_new':
rthreads.c:(.text.scond_new+0x24): undefined reference to pthread_cond_init' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
scond_free':
rthreads.c:(.text.scond_free+0x14): undefined reference to pthread_cond_destroy' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
scond_wait':
rthreads.c:(.text.scond_wait+0x0): undefined reference to pthread_cond_wait' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rthreads.o): in function
scond_signal':
rthreads.c:(.text.scond_signal+0x0): undefined reference to pthread_cond_signal' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(allformats.o): in function
av_register_all':
allformats.c:(.text.av_register_all+0xcc0): undefined reference to ff_rtp_demuxer' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xcc8): undefined reference to
ff_rtp_demuxer'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xccc): undefined reference to ff_rtsp_muxer' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xcd4): undefined reference to
ff_rtsp_muxer'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xcd8): undefined reference to ff_rtsp_demuxer' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xce0): undefined reference to
ff_rtsp_demuxer'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xcf0): undefined reference to ff_sap_muxer' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xcf8): undefined reference to
ff_sap_muxer'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xcfc): undefined reference to ff_sap_demuxer' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xd04): undefined reference to
ff_sap_demuxer'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xd14): undefined reference to ff_sdp_demuxer' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0xd1c): undefined reference to
ff_sdp_demuxer'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1174): undefined reference to ff_gopher_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x117c): undefined reference to
ff_gopher_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x118c): undefined reference to ff_http_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1194): undefined reference to
ff_http_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1198): undefined reference to ff_httpproxy_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x11a0): undefined reference to
ff_httpproxy_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x11b0): undefined reference to ff_mmst_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x11b8): undefined reference to
ff_mmst_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x11ec): undefined reference to ff_rtp_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x11f4): undefined reference to
ff_rtp_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1204): undefined reference to ff_tcp_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x120c): undefined reference to
ff_tcp_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1210): undefined reference to ff_udp_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1218): undefined reference to
ff_udp_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x121c): undefined reference to ff_udplite_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1224): undefined reference to
ff_udplite_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x122c): undefined reference to ff_unix_protocol' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allformats.c:(.text.av_register_all+0x1230): undefined reference to
ff_unix_protocol'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rtmphttp.o): in function rtmp_http_send_cmd.isra.0': rtmphttp.c:(.text.rtmp_http_send_cmd.isra.0+0x84): undefined reference to
ff_http_do_new_request'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rtmphttp.o): in function rtmp_http_close': rtmphttp.c:(.text.rtmp_http_close+0x100): undefined reference to
ff_http_do_new_request'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rtpdec.o): in function ff_register_rtp_dynamic_payload_handlers': rtpdec.c:(.text.ff_register_rtp_dynamic_payload_handlers+0x74): undefined reference to
ff_ms_rtp_asf_pfa_handler'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: rtpdec.c:(.text.ff_register_rtp_dynamic_payload_handlers+0x7c): undefined reference to ff_ms_rtp_asf_pfa_handler' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: rtpdec.c:(.text.ff_register_rtp_dynamic_payload_handlers+0x84): undefined reference to
ff_ms_rtp_asf_pfv_handler'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: rtpdec.c:(.text.ff_register_rtp_dynamic_payload_handlers+0x90): undefined reference to ff_ms_rtp_asf_pfv_handler' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(rtpdec.o): in function
ff_parse_fmtp':
rtpdec.c:(.text.ff_parse_fmtp+0xc8): undefined reference to ff_rtsp_next_attr_and_value' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(allcodecs.o): in function
avcodec_register_all':
allcodecs.c:(.text.avcodec_register_all+0x175c): undefined reference to ff_libfaac_encoder' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x1764): undefined reference to
ff_libfaac_encoder'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x1768): undefined reference to ff_libmp3lame_encoder' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x1770): undefined reference to
ff_libmp3lame_encoder'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x1774): undefined reference to ff_libvorbis_encoder' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x177c): undefined reference to
ff_libvorbis_encoder'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x1780): undefined reference to ff_libvorbis_decoder' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: allcodecs.c:(.text.avcodec_register_all+0x1788): undefined reference to
ff_libvorbis_decoder'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_frame.o): in function ff_thread_report_progress': pthread_frame.c:(.text.ff_thread_report_progress+0x68): undefined reference to
pthread_mutex_lock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_report_progress+0x74): undefined reference to pthread_cond_broadcast' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_report_progress+0x94): undefined reference to
pthread_mutex_unlock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_frame.o): in function ff_thread_await_progress': pthread_frame.c:(.text.ff_thread_await_progress+0x68): undefined reference to
pthread_mutex_lock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_await_progress+0x84): undefined reference to pthread_cond_wait' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_await_progress+0xb4): undefined reference to
pthread_mutex_unlock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_frame.o): in function ff_thread_finish_setup': pthread_frame.c:(.text.ff_thread_finish_setup+0x38): undefined reference to
pthread_mutex_lock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_finish_setup+0x48): undefined reference to pthread_cond_broadcast' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_finish_setup+0x60): undefined reference to
pthread_mutex_unlock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_finish_setup+0x84): undefined reference to pthread_mutex_lock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_finish_setup+0x94): undefined reference to
pthread_cond_broadcast'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_finish_setup+0xac): undefined reference to pthread_mutex_unlock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_frame.o): in function
ff_thread_get_format':
pthread_frame.c:(.text.ff_thread_get_format+0x64): undefined reference to pthread_mutex_lock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_format+0x7c): undefined reference to
pthread_cond_broadcast'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_format+0x94): undefined reference to pthread_cond_wait' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_format+0xac): undefined reference to
pthread_mutex_unlock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_frame.o): in function ff_thread_get_buffer': pthread_frame.c:(.text.ff_thread_get_buffer+0xc8): undefined reference to
pthread_mutex_lock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0xec): undefined reference to pthread_mutex_lock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x10c): undefined reference to
pthread_cond_broadcast'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x12c): undefined reference to pthread_cond_wait' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x144): undefined reference to
pthread_mutex_unlock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x180): undefined reference to pthread_mutex_unlock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x288): undefined reference to
pthread_mutex_lock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x298): undefined reference to pthread_cond_broadcast' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_get_buffer+0x2a0): undefined reference to
pthread_mutex_unlock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_frame.o): in function ff_thread_release_buffer': pthread_frame.c:(.text.ff_thread_release_buffer+0x70): undefined reference to
pthread_mutex_lock'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_frame.c:(.text.ff_thread_release_buffer+0xa8): undefined reference to pthread_mutex_unlock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_slice.o): in function
ff_thread_report_progress2':
pthread_slice.c:(.text.ff_thread_report_progress2+0x38): undefined reference to pthread_mutex_lock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_slice.c:(.text.ff_thread_report_progress2+0x58): undefined reference to
pthread_cond_signal'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_slice.c:(.text.ff_thread_report_progress2+0x80): undefined reference to pthread_mutex_unlock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_slice.o): in function
ff_thread_await_progress2':
pthread_slice.c:(.text.ff_thread_await_progress2+0x58): undefined reference to pthread_mutex_lock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_slice.c:(.text.ff_thread_await_progress2+0x94): undefined reference to
pthread_cond_wait'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_slice.c:(.text.ff_thread_await_progress2+0xd4): undefined reference to pthread_mutex_unlock' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(pthread_slice.o): in function
ff_alloc_entries':
pthread_slice.c:(.text.ff_alloc_entries+0x124): undefined reference to pthread_mutex_init' /opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: pthread_slice.c:(.text.ff_alloc_entries+0x134): undefined reference to
pthread_cond_init'
/opt/mips32-mti-elf/2019.09-03-2/bin/../lib/gcc/mips-mti-elf/7.4.0/../../../../mips-mti-elf/bin/ld: libretro_core.a(resample.o): in function resample_init': resample.c:(.text.resample_init+0x9d8): undefined reference to
swri_resample_dsp_init'
collect2: error: ld returned 1 exit status
make: *** [Makefile:130: core.elf] Error 1
lots of missing thread functions
There is no media player on SF2000, though ironically its hardware was originally designed to be for media! However, little of that functionality appears to be available for multicore using the stock loader. The ffmpeg core could probably be rewritten to avoid the current thread issues, but that would require a lot of work by someone motivated to do so.
See also: https://github.com/madcock/sf2000_multicore_cores/issues/2