У меня есть rpc сервер. Он внутри себя использует libffi для вызова функций. Нужно собрать его под esp32s3(клиент спокойно собирается и работает, но он не дает напрямую вызвать с сервера функцию на клиенте(не могу делать те же самые callback) поэтому чтобы не писать костыли с функцией с очередью запросов на сервере которую бы опрашивал клиент было принято решение запустить сервер вместе с клиентом. Памяти хватит, сервер использует до 6мб (маленькие аргументы и возвраты функций и маленькое кол-во клиентов(1-3))
Да. В коде порта libffi для xtensa никаких сложностей при сборке под esp32s3 быть не должно. Но, я подозреваю, что прийдётся разобраться с тем, как совместить libffi с idf.
А можно допустим libffi просто включить в CMake файл?
Catmengi, я не знаю. Возможно чтение документации IDF и поиск по esp32.com помогут найти ответ на этот вопрос.
Где можно узнать подробнее процесс компиляции?(Где и какие файлы в libffi отвечают за это)
libffi использует классические autotools, её интерфейс сборки -- configure / make / make install. На выходе этого процесса получается статическая библиотека и заголовочные файлы. Можно тупо сконфигурировать для xtensa и посмотреть в лог сборки, у меня из
$ ../libffi/configure --host=xtensa-esp32s3-elf --prefix=`pwd`/root
$ make
/home/catmengi/projects/crpc_remotefs_esp/main/libffi/libffi.a(ffi.o): in function `ffi_prep_args':
ffi.c:(.text+0x122): dangerous relocation: call8: call target out of range: memcpy
/home/catmengi/projects/crpc_remotefs_esp/main/libffi/libffi.a(ffi.o): in function `ffi_call':
ffi.c:(.text+0x1a2): dangerous relocation: call8: call target out of range: memcpy
/home/catmengi/projects/crpc_remotefs_esp/main/libffi/libffi.a(ffi.o): in function `ffi_prep_closure_loc':
ffi.c:(.text+0x1bd): dangerous relocation: call8: call target out of range: memcpy