building ecl with gcc-15 / c23 C standard

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 https://gitlab.com/embeddable-common-lisp/ecl/-/issues/775 Any ideas how to fix this? Dima

Hey, On Monday, April 21st, 2025 at 6:10 PM, Dima Pasechnik <dimpase+ecl@gmail.com> wrote:
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 https://gitlab.com/embeddable-common-lisp/ecl/-/issues/775
Any ideas how to fix this?
Dima
While Dima is already aware of it, Marius have fixed the issue and the merge request is under review. See the linked issue for details. (Writing here so it isn't left hanging unanswered). Best regards, Daniel
participants (2)
-
Daniel Kochmański
-
Dima Pasechnik