Skip to content

ecl can't be built by gcc-15 with default options, i.e. -std=c23 ('bool' cannot be defined via 'typedef' - and MUCH MORE)

Describe the problem here.

This is a build issue with gcc-15, which is by default using c23 C standard. From here: https://github.com/user-attachments/files/19822100/ecl-24.5.10.log reported on https://github.com/sagemath/sage/pull/39977

[spkg-install] Building libeclmin.a...
[spkg-install] /usr/local/sage15/local/var/tmp/sage/build/ecl-24.5.10/src/src/c/dpp.c:112:13: error: 'bool' cannot be defined via 'typedef'
[spkg-install]   112 | typedef int bool;
[spkg-install]       |             ^~~~
[spkg-install] /usr/local/sage15/local/var/tmp/sage/build/ecl-24.5.10/src/src/c/dpp.c:112:13: note: 'bool' is a keyword with '-std=c23' onwards
[spkg-install] /usr/local/sage15/local/var/tmp/sage/build/ecl-24.5.10/src/src/c/dpp.c:112:1: warning: useless type name in empty declaration
[spkg-install]   112 | typedef int bool;
[spkg-install]       | ^~~~~~~
[spkg-install] make[7]: *** [Makefile:114: dpp] Error 1
[spkg-install] make[6]: *** [Makefile:132: libeclmin.a] Error 2
[spkg-install] make[5]: *** [Makefile:65: all] Error 2
[spkg-install] ********************************************************************************
[spkg-install] Error building ecl-24.5.10

Some additional notes.

A quick fix is to set -std=c17, or course