configure.ac assumes -std=c11 rather than checking it, which causes make failures on old compilers
Open
Nobody has claimed this yet.
build
type-bug
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Bug report
Bug description:
Repro
Steps:
- Run a container having a
gccthat does not support the C11 standard (e.g., gcc 4.4.7) tar xvJf Python-3.13.2.tar.xz && cd Python-3.13.2./configure && make
Expected: configure reports an error like "your compiler doesn't support C11"
Observed: configure succeeds, only for make to fail.
...
configure: creating Makefile
configure:
If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations
configure: Your compiler or platform does have a working C11 stdatomic.h. A future version of Python may require stdatomic.h.
sh-4.1# make
gcc -std=gnu99 -pthread -c -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -DPy_BUILD_CORE -o Programs/python.o ./Programs/python.c
cc1: error: unrecognized command line option "-std=c11"
make: *** [Programs/python.o] Error 1
Suggestion
I think this can be fixed by changing configure.ac here:
- CFLAGS_NODIST="$CFLAGS_NODIST -std=c11"
+ AX_CHECK_COMPILE_FLAG([-std=c11],[
+ CFLAGS_NODIST="$CFLAGS_NODIST -std=c11"
+ ], [
+ AC_MSG_ERROR([Python requires -std=c11 on gcc])
+ ], [-Werror])
Related issues
#91731
CPython versions tested on:
3.12.9, 3.13.2
Operating systems tested on:
Linux
Linked PRs
- gh-133608
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The affected logic is in configure.ac near the referenced line, where -std=c11 is added. Reproduce with GCC 4.4.7 using ./configure && make, then verify that configure reports the unsupported C11 compiler instead of allowing make to fail.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100