I had a go at building ecl with C compiler using c23 mode (i.e. -std=c23 argument in CFLAGS)
and apart from an easy to fix "typedef bool" issue, there is more, and quite hard to understand:
CFLAGS="-std=c23" ./configure && make
[...]
dpp: /home/dima/software/ecl/src/c/read.d -> read.o.c
[...]
/home/dima/software/ecl/src/c/read.d: In function ‘init_read’:
/home/dima/software/ecl/src/c/read.d:2023:39: error: passing argument 1 of ‘ecl_make_cfun’ from incompatible pointer type [-Wincompatible-pointer-types]
2023 | #define make_cf3(f) ecl_make_cfun((f), ECL_NIL, NULL, 3)
| ^~~
| |
| union cl_lispunion * (*)(union cl_lispunion *, union cl_lispunion *)
/home/dima/software/ecl/src/c/read.d:2047:29: note: in expansion of macro ‘make_cf2’
2047 |
| ^
In file included from /home/dima/software/ecl/build/ecl/ecl.h:82,
from /home/dima/software/ecl/src/c/read.d:16:
/home/dima/software/ecl/build/ecl/external.h:427:58: note: expected ‘cl_objectfn_fixed’ {aka ‘union cl_lispunion * (*)(void)’} but argument is of type ‘union cl_lispunion * (*)(union cl_lispunion *, union cl_lispunion *)’
427 | extern ECL_API cl_object ecl_make_cfun(cl_objectfn_fixed c_function, cl_object name, cl_object block, int narg);
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~
see
Any ideas how to fix this?
Dima