From 146a47d0c3eb5c5698c55439c4e2ba03c0d43ae3 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Fri, 26 Aug 2022 18:40:29 +0200 Subject: [PATCH 1/2] gh-96269: static and shared ext need different deps --- Makefile.pre.in | 4 +++- Modules/makesetup | 11 +++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index af203705d38e63..a72d4bd935b2ba 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -2522,7 +2522,9 @@ Python/thread.o: @THREADHEADERS@ $(srcdir)/Python/condvar.h ########################################################################## # Module dependencies and platform-specific files -MODULE_DEPS=$(PYTHON_HEADERS) Modules/config.c $(EXPORTSYMS) +# force rebuild when header file or module build flavor (static/shared) is changed +MODULE_DEPS_STATIC=$(PYTHON_HEADERS) Modules/config.c +MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS) MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h MODULE_MATH_DEPS=$(srcdir)/Modules/_math.h diff --git a/Modules/makesetup b/Modules/makesetup index 5c275ac9a04945..21003786eb1b42 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -262,12 +262,15 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | esac # custom flags first, PY_STDMODULE_CFLAGS may contain -I with system libmpdec case $doconfig in - no) cc="$cc $cpps \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)";; + no) + cc="$cc $cpps \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)" + rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_SHARED); $cc -c $src -o $obj" + ;; *) - cc="$cc $cpps \$(PY_BUILTIN_MODULE_CFLAGS)";; + cc="$cc $cpps \$(PY_BUILTIN_MODULE_CFLAGS)" + rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_STATIC); $cc -c $src -o $obj" + ;; esac - # force rebuild when header file or module build flavor (static/shared) is changed - rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS); $cc -c $src -o $obj" echo "$rule" >>$rulesf done case $doconfig in From 0795dd07b8e6e4c2842296da3d91e636e36a09cf Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Fri, 26 Aug 2022 19:10:37 +0200 Subject: [PATCH 2/2] Directly depend on PYTHON_HEADERS --- Makefile.pre.in | 2 +- Modules/makesetup | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index a72d4bd935b2ba..6786bf799f5ef6 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -2523,7 +2523,7 @@ Python/thread.o: @THREADHEADERS@ $(srcdir)/Python/condvar.h # Module dependencies and platform-specific files # force rebuild when header file or module build flavor (static/shared) is changed -MODULE_DEPS_STATIC=$(PYTHON_HEADERS) Modules/config.c +MODULE_DEPS_STATIC=Modules/config.c MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS) MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h diff --git a/Modules/makesetup b/Modules/makesetup index 21003786eb1b42..f000c9cd67310e 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -264,11 +264,11 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | case $doconfig in no) cc="$cc $cpps \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)" - rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_SHARED); $cc -c $src -o $obj" + rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_SHARED) \$(PYTHON_HEADERS); $cc -c $src -o $obj" ;; *) cc="$cc $cpps \$(PY_BUILTIN_MODULE_CFLAGS)" - rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_STATIC); $cc -c $src -o $obj" + rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_STATIC) \$(PYTHON_HEADERS); $cc -c $src -o $obj" ;; esac echo "$rule" >>$rulesf