Skip to content

Commit a548a45

Browse files
authored
[3.11] gh-94404: Use module CFLAGS before PY_STDMODULE_CFLAGS (GH-94413) (GH-94415)
``PY_STDMODULE_CFLAGS`` may contain include directories with system headers. This can break compiling with built-in libmpdec. Co-authored-by: Christian Heimes <[email protected]>
1 parent 9140c41 commit a548a45

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

Makefile.pre.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,7 @@ python.worker.js: $(srcdir)/Tools/wasm/python.worker.js
831831

832832
##########################################################################
833833
# Build static libmpdec.a
834-
LIBMPDEC_CFLAGS=$(PY_STDMODULE_CFLAGS) $(CCSHARED) @LIBMPDEC_CFLAGS@
834+
LIBMPDEC_CFLAGS=@LIBMPDEC_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED)
835835

836836
# for setup.py
837837
DECIMAL_CFLAGS=@LIBMPDEC_CFLAGS@
@@ -889,7 +889,7 @@ $(LIBMPDEC_A): $(LIBMPDEC_OBJS)
889889

890890
##########################################################################
891891
# Build static libexpat.a
892-
LIBEXPAT_CFLAGS=$(PY_STDMODULE_CFLAGS) $(CCSHARED) @LIBEXPAT_CFLAGS@
892+
LIBEXPAT_CFLAGS=@LIBEXPAT_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED)
893893

894894
# for setup.py
895895
EXPAT_CFLAGS=@LIBEXPAT_CFLAGS@
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
``makesetup`` now works around an issue with sed on macOS and uses correct
2-
CFLAGS for object files that end up in a shared extension.
2+
CFLAGS for object files that end up in a shared extension. Module CFLAGS
3+
are used before PY_STDMODULE_CFLAGS to avoid clashes with system headers.

Modules/makesetup

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,13 +260,14 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
260260
\$*) ;;
261261
*) src='$(srcdir)/'"$srcdir/$src";;
262262
esac
263+
# custom flags first, PY_STDMODULE_CFLAGS may contain -I with system libmpdec
263264
case $doconfig in
264-
no) cc="$cc \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)";;
265+
no) cc="$cc $cpps \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)";;
265266
*)
266-
cc="$cc \$(PY_BUILTIN_MODULE_CFLAGS)";;
267+
cc="$cc $cpps \$(PY_BUILTIN_MODULE_CFLAGS)";;
267268
esac
268269
# force rebuild when header file or module build flavor (static/shared) is changed
269-
rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(PYTHON_HEADERS) Modules/config.c; $cc $cpps -c $src -o $obj"
270+
rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(PYTHON_HEADERS) Modules/config.c; $cc -c $src -o $obj"
270271
echo "$rule" >>$rulesf
271272
done
272273
case $doconfig in

0 commit comments

Comments
 (0)