Hi,
"cast-function-type" has been introduced in GCC 8 and it affects lots of existing Pd code. Usually, it is just a warning and can be ignored, but the makefile for espeak sets "-Werror", which means that every warning is treated as an error. The quickest fix is to either remove "-Werror" or add "-Wno-cast-function-type".
Christof
On 13.03.2021 10:06, Peter P. wrote:
Hi list,
trying to compile and load the espeak external from https://github.com/kronihias/espeak on Debian/GNU Linux. Have the apt packages espeak libespeak-dev installed and the makefile modifiet to point to PDROOT=/usr/include/pd
Running 'make' yields an error: cc -export-dynamic -shared -lc -lm -lespeak -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC -Wall -W -Wshadow -Wstrict-prototypes -Werror -Wno-unused -Wno-parentheses -Wno-switch -I/usr/include/pd/src -o espeak.pd_linux espeak.c espeak.c: In function ‘espeak_setup’: espeak.c:406:6: error: cast between incompatible function types from ‘void * (*)(t_symbol *)’ {aka ‘void * (*)(struct _symbol *)’} to ‘void * (*)(void)’ [-Werror=cast-function-type] 406 | (t_newmethod)espeak_new, // newmethod | ^ cc1: all warnings being treated as errors make[1]: *** [Makefile:79: espeak.pd_linux] Error 1 make[1]: Leaving directory '/tmp/espeak-master' make: *** [Makefile:46: auto] Error 2
which I can circumnavigate disabling the -Werror flag in the makefile. Compilation somewhat succeeds then, posting: espeak.c: In function ‘espeak_setup’: espeak.c:406:6: warning: cast between incompatible function types from ‘void * (*)(t_symbol *)’ {aka ‘void * (*)(struct _symbol *)’} to ‘void * (*)(void)’ [-Wcast-function-type] 406 | (t_newmethod)espeak_new, // newmethod | ^
Loading the external in Pd then throws: ./espeak.pd_linux: ./espeak.pd_linux: undefined symbol: espeak_SetParameter espeak: can't load library
Can anyone point me into a good direction what to try next here? Anyone having had success on OS X with this external so far?
appreciated, as always, yours, P
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list