Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix Python.h being included after system headers
My "./dev.sh build" failed with Compiling kitty/screen.c ... gcc -MMD -DNDEBUG -DPRIMARY_VERSION=4000 -DSECONDARY_VERSION=37 -DXT_VERSION="0.37.0" -I/home/johannes/git/kitty/dependencies/linux-amd64/include -Wextra -Wfloat-conversion -Wno-missing-field-initializers -Wall -Wstrict-prototypes -std=c11 -pedantic-errors -Werror -O3 -fwrapv -fstack-protector-strong -pipe -fvisibility=hidden -fno-plt -fPIC -D_FORTIFY_SOURCE=2 -flto -fcf-protection=full -march=native -mtune=native -pthread -I/home/johannes/git/kitty/dependencies/linux-amd64/include/libpng16 -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include/freetype2 -I/home/johannes/git/kitty/dependencies/linux-amd64/include/libpng16 -I/usr/include/uuid -I/home/johannes/git/kitty/dependencies/linux-amd64/include/harfbuzz -I/home/johannes/git/kitty/dependencies/linux-amd64/include/freetype2 -I/home/johannes/git/kitty/dependencies/linux-amd64/include/libpng16 -I/home/johannes/git/kitty/dependencies/linux-amd64/include -I/home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12 -c kitty/screen.c -o build/fast_data_types-kitty-screen.c.o In file included from /home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/Python.h:12, from kitty/data-types.h:11, from kitty/text-cache.h:10, from kitty/line.h:10, from kitty/history.h:10, from kitty/lineops.h:9, from kitty/fonts.h:9, from kitty/screen.c:19: /home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/pyconfig.h:1875:9: error: "_POSIX_C_SOURCE" redefined 1875 | #define _POSIX_C_SOURCE 200809L | ^~~~~~~~~~~~~~~ In file included from /usr/include/bits/libc-header-start.h:33, from /usr/include/stdint.h:26, from /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stdint.h:9, from kitty/charsets.h:9, from kitty/screen.c:17: /usr/include/features.h:329:10: note: this is the location of the previous definition 329 | # define _POSIX_C_SOURCE 199506L | ^~~~~~~~~~~~~~~ The following build command failed: /home/johannes/git/kitty/dependencies/linux-amd64/bin/python setup.py develop exit status 1 [Python docs](https://docs.python.org/3/c-api/intro.html) say: > Since Python may define some pre-processor definitions which affect > the standard headers on some systems, you must include Python.h > before any standard headers are included. Make it so. Since data-types.h is already included first in a lot of *.c and *.h files, let's use that one. Also fix the include in launcher.c. This is similar to commit 8e84b21 (Re-order includes for "_POSIX_C_SOURCE", 2018-06-02). Also add an explicit error for this case, to make the resolution more obvious? Here's the error when I try to include <stdlib.h> in screen.c: In file included from kitty/screen.c:14: kitty/data-types.h:11:2: error: #error "Must include \"data-types.h\" before any system headers" 11 | #error "Must include \"data-types.h\" before any system headers" | ^~~~~ In file included from /home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/Python.h:12, from kitty/data-types.h:14: /home/johannes/git/kitty/dependencies/linux-amd64/include/python3.12/pyconfig.h:1875:9: error: "_POSIX_C_SOURCE" redefined 1875 | #define _POSIX_C_SOURCE 200809L | ^~~~~~~~~~~~~~~ In file included from /usr/include/bits/libc-header-start.h:33, from /usr/include/stdlib.h:26, from kitty/screen.c:13: /usr/include/features.h:329:10: note: this is the location of the previous definition 329 | # define _POSIX_C_SOURCE 199506L | ^~~~~~~~~~~~~~~ The following build command failed: /home/johannes/git/kitty/dependencies/linux-amd64/bin/python setup.py develop exit status 1
- Loading branch information