From 8891cd2d9193f9283078cf7cf4b0825ac170eaba Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Mon, 7 Apr 2025 22:07:18 +0800 Subject: [PATCH 01/10] Remove -flto-partition=none for Linux LTO builds --- configure | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 1b75ddfa26dcdd..1d61eff3c9b1fa 100755 --- a/configure +++ b/configure @@ -8896,7 +8896,7 @@ fi LTOCFLAGS="-flto" ;; *) - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" + LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" ;; esac ;; diff --git a/configure.ac b/configure.ac index c449bb5ebb3cd4..410ca15fd43000 100644 --- a/configure.ac +++ b/configure.ac @@ -2031,7 +2031,7 @@ if test "$Py_LTO" = 'true' ; then LTOCFLAGS="-flto" ;; *) - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" + LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" ;; esac ;; From 23568cd673ca006730f38e211d6b3fc09bdf2145 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 09:11:36 +0000 Subject: [PATCH 02/10] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20b?= =?UTF-8?q?lurb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst diff --git a/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst b/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst new file mode 100644 index 00000000000000..a05730d74cc2ac --- /dev/null +++ b/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst @@ -0,0 +1 @@ +Change the default LTO flags on GCC to not pass ``-flto-partition=none``, and allow parallelization of LTO. This has a multiple factor speedup for LTO build times on GCC, with no noticeable loss in performance. From 09205a02a6203cff62ebe2c98ab789e7d62c709c Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:14:37 +0800 Subject: [PATCH 03/10] Support older compilers --- configure | 35 +++++++++++++++++++++++++++++++++++ configure.ac | 18 ++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/configure b/configure index 1d61eff3c9b1fa..8e4b7304fc8044 100755 --- a/configure +++ b/configure @@ -8540,6 +8540,36 @@ then fi fi +# Look for parallel LTO support in GCC to speed up builds. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If GCC version supports parallel LTO" >&5 +printf %s "checking If GCC version supports parallel LTO... " >&6; } +if test ${ac_cv_gcc_parallel_lto+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined(__GNUC__) && (__GNUC__ >= 8) + /* GCC parallel LTO supported! */ + #else + #error "GCC parallel lto unsupported" + #endif + +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + ac_cv_gcc_parallel_lto=yes +else case e in #( + e) ac_cv_gcc_parallel_lto=no ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_parallel_lto" >&5 +printf "%s\n" "$ac_cv_gcc_parallel_lto" >&6; } + # Enable LTO flags { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5 printf %s "checking for --with-lto... " >&6; } @@ -8896,7 +8926,12 @@ fi LTOCFLAGS="-flto" ;; *) + if test $ac_cv_gcc_parallel_lto = yes + then LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" + else + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + fi ;; esac ;; diff --git a/configure.ac b/configure.ac index 410ca15fd43000..655ed21af69e1d 100644 --- a/configure.ac +++ b/configure.ac @@ -1914,6 +1914,19 @@ then fi fi +# Look for parallel LTO support in GCC to speed up builds. +AC_CACHE_CHECK([If GCC version supports parallel LTO], + [ac_cv_gcc_parallel_lto], + [AC_PREPROC_IFELSE([AC_LANG_SOURCE([ + #if defined(__GNUC__) && (__GNUC__ >= 8) + /* GCC parallel LTO supported! */ + #else + #error "GCC parallel lto unsupported" + #endif + ], [])], + [ac_cv_gcc_parallel_lto=yes], + [ac_cv_gcc_parallel_lto=no])]) + # Enable LTO flags AC_MSG_CHECKING([for --with-lto]) AC_ARG_WITH([lto], @@ -2031,7 +2044,12 @@ if test "$Py_LTO" = 'true' ; then LTOCFLAGS="-flto" ;; *) + if test $ac_cv_gcc_parallel_lto = yes + then LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" + else + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + fi ;; esac ;; From eedba329d4b516159ce07e090ee7db934fc18db0 Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Thu, 10 Apr 2025 04:05:02 +0800 Subject: [PATCH 04/10] Address review --- configure | 78 ++++++++++++++++++++++++++++------------------------ configure.ac | 24 ++++------------ 2 files changed, 47 insertions(+), 55 deletions(-) diff --git a/configure b/configure index 8e4b7304fc8044..7a9e581a80e0f5 100755 --- a/configure +++ b/configure @@ -8540,36 +8540,6 @@ then fi fi -# Look for parallel LTO support in GCC to speed up builds. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If GCC version supports parallel LTO" >&5 -printf %s "checking If GCC version supports parallel LTO... " >&6; } -if test ${ac_cv_gcc_parallel_lto+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #if defined(__GNUC__) && (__GNUC__ >= 8) - /* GCC parallel LTO supported! */ - #else - #error "GCC parallel lto unsupported" - #endif - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - ac_cv_gcc_parallel_lto=yes -else case e in #( - e) ac_cv_gcc_parallel_lto=no ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_parallel_lto" >&5 -printf "%s\n" "$ac_cv_gcc_parallel_lto" >&6; } - # Enable LTO flags { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5 printf %s "checking for --with-lto... " >&6; } @@ -8926,12 +8896,48 @@ fi LTOCFLAGS="-flto" ;; *) - if test $ac_cv_gcc_parallel_lto = yes - then - LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" - else - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" - fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=auto" >&5 +printf %s "checking whether C compiler accepts -flto=auto... " >&6; } +if test ${ax_cv_check_cflags___flto_auto+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -flto=auto" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___flto_auto=yes +else case e in #( + e) ax_cv_check_cflags___flto_auto=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_auto" >&5 +printf "%s\n" "$ax_cv_check_cflags___flto_auto" >&6; } +if test "x$ax_cv_check_cflags___flto_auto" = xyes +then : + LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" +else case e in #( + e) LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + ;; +esac +fi + ;; esac ;; diff --git a/configure.ac b/configure.ac index 655ed21af69e1d..f678cac16556ec 100644 --- a/configure.ac +++ b/configure.ac @@ -1914,19 +1914,6 @@ then fi fi -# Look for parallel LTO support in GCC to speed up builds. -AC_CACHE_CHECK([If GCC version supports parallel LTO], - [ac_cv_gcc_parallel_lto], - [AC_PREPROC_IFELSE([AC_LANG_SOURCE([ - #if defined(__GNUC__) && (__GNUC__ >= 8) - /* GCC parallel LTO supported! */ - #else - #error "GCC parallel lto unsupported" - #endif - ], [])], - [ac_cv_gcc_parallel_lto=yes], - [ac_cv_gcc_parallel_lto=no])]) - # Enable LTO flags AC_MSG_CHECKING([for --with-lto]) AC_ARG_WITH([lto], @@ -2044,12 +2031,11 @@ if test "$Py_LTO" = 'true' ; then LTOCFLAGS="-flto" ;; *) - if test $ac_cv_gcc_parallel_lto = yes - then - LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" - else - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" - fi + AX_CHECK_COMPILE_FLAG( + [-flto=auto], + [LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects"], + [LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects"] + ) ;; esac ;; From c7f4cc465ff2957620f11442baaf2fe1e92ee8e3 Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Thu, 10 Apr 2025 19:38:35 +0800 Subject: [PATCH 05/10] Pass jobserver env to all commands --- Makefile.pre.in | 118 +++++++++++++++++++++++----------------------- Modules/makesetup | 14 +++--- configure | 105 +++++++++++++---------------------------- configure.ac | 70 +++++++++++++-------------- 4 files changed, 131 insertions(+), 176 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index e10c78d6403472..56e5b24a0829f9 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -995,23 +995,23 @@ build-details.json: pybuilddir.txt # Build static library $(LIBRARY): $(LIBRARY_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS) libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS) - $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) + +$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) if test $(INSTSONAME) != $@; then \ $(LN) -f $(INSTSONAME) $@; \ fi libpython3.so: libpython$(LDVERSION).so - $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ + +$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ libpython$(LDVERSION).dylib: $(LIBRARY_OBJS) - $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ + +$(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ libpython$(VERSION).sl: $(LIBRARY_OBJS) - $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) + +$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) # List of exported symbols for AIX Modules/python.exp: $(LIBRARY) @@ -1036,7 +1036,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(LIBRARY) \ $(RESSRCDIR)/Info.plist $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) - $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ + +$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ -all_load $(LIBRARY) \ -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ -compatibility_version $(VERSION) \ @@ -1057,7 +1057,7 @@ $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \ $(LIBRARY) \ $(RESSRCDIR)/Info.plist $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR) - $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ + +$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ -all_load $(LIBRARY) \ -install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ -compatibility_version $(VERSION) \ @@ -1394,70 +1394,70 @@ LIBMPDEC_CFLAGS=@LIBMPDEC_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED) # "%.o: %c" is not portable Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c + +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_A): $(LIBMPDEC_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS) ########################################################################## # Build static libexpat.a LIBEXPAT_CFLAGS=@LIBEXPAT_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED) Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c + +$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c + +$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS) - $(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c + +$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_A): $(LIBEXPAT_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS) ########################################################################## # Build HACL* static libraries for hashlib and HACL* HMAC. @@ -1466,67 +1466,67 @@ $(LIBEXPAT_A): $(LIBEXPAT_OBJS) # have the ability to compile vectorized versions Modules/_hacl/Hacl_Hash_MD5.o: $(srcdir)/Modules/_hacl/Hacl_Hash_MD5.c $(LIBHACL_MD5_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_MD5.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_MD5.c $(LIBHACL_MD5_A): $(LIBHACL_MD5_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHACL_MD5_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBHACL_MD5_OBJS) Modules/_hacl/Hacl_Hash_SHA1.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA1.c $(LIBHACL_SHA1_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA1.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA1.c $(LIBHACL_SHA1_A): $(LIBHACL_SHA1_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHACL_SHA1_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA1_OBJS) Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS) Modules/_hacl/Hacl_Hash_SHA3.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA3.c $(LIBHACL_SHA3_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA3.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA3.c $(LIBHACL_SHA3_A): $(LIBHACL_SHA3_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHACL_SHA3_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA3_OBJS) Modules/_hacl/Hacl_Hash_Blake2s.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s.c Modules/_hacl/Hacl_Hash_Blake2b.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b.c Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128.c + +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128.c Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.c + +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.c Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256.c + +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256.c Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.c + +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.c Modules/_hacl/Lib_Memzero0.o: $(srcdir)/Modules/_hacl/Lib_Memzero0.c $(LIBHACL_BLAKE2_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Lib_Memzero0.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Lib_Memzero0.c $(LIBHACL_BLAKE2_A): $(LIBHACL_BLAKE2_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHACL_BLAKE2_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBHACL_BLAKE2_OBJS) Modules/_hacl/Hacl_HMAC.o: $(srcdir)/Modules/_hacl/Hacl_HMAC.c $(LIBHACL_HMAC_HEADERS) - $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_HMAC.c + +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_HMAC.c Modules/_hacl/Hacl_Streaming_HMAC.o: $(srcdir)/Modules/_hacl/Hacl_Streaming_HMAC.c $(LIBHACL_HMAC_HEADERS) - $(CC) -Wno-unused-variable -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Streaming_HMAC.c + +$(CC) -Wno-unused-variable -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Streaming_HMAC.c $(LIBHACL_HMAC_A): $(LIBHACL_HMAC_OBJS) -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHACL_HMAC_OBJS) + +$(AR) $(ARFLAGS) $@ $(LIBHACL_HMAC_OBJS) # create relative links from build/lib.platform/egg.so to Modules/egg.so # pybuilddir.txt is created too late. We cannot use it in Makefile @@ -1854,14 +1854,14 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ $(MODOBJS) \ $(DTRACE_OBJS) \ $(srcdir)/Modules/getbuildinfo.c - $(CC) -c $(PY_CORE_CFLAGS) \ + +$(CC) -c $(PY_CORE_CFLAGS) \ -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \ -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \ -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \ -o $@ $(srcdir)/Modules/getbuildinfo.c Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS) - $(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ + +$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ -DPREFIX='"$(host_prefix)"' \ -DEXEC_PREFIX='"$(host_exec_prefix)"' \ -DVERSION='"$(VERSION)"' \ @@ -1871,10 +1871,10 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h M -o $@ $(srcdir)/Modules/getpath.c Programs/python.o: $(srcdir)/Programs/python.c - $(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c + +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS) - $(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c + +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h @@ -1899,17 +1899,17 @@ Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_commo Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile - $(CC) -c $(PY_CORE_CFLAGS) \ + +$(CC) -c $(PY_CORE_CFLAGS) \ -DSOABI='"$(SOABI)"' \ -o $@ $(srcdir)/Python/dynload_shlib.c Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile - $(CC) -c $(PY_CORE_CFLAGS) \ + +$(CC) -c $(PY_CORE_CFLAGS) \ -DSHLIB_EXT='"$(EXT_SUFFIX)"' \ -o $@ $(srcdir)/Python/dynload_hpux.c Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h - $(CC) -c $(PY_CORE_CFLAGS) \ + +$(CC) -c $(PY_CORE_CFLAGS) \ -DABIFLAGS='"$(ABIFLAGS)"' \ $(MULTIARCH_CPPFLAGS) \ -o $@ $(srcdir)/Python/sysmodule.c @@ -2008,10 +2008,10 @@ regen-sre: Python/compile.o Python/codegen.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h Python/getplatform.o: $(srcdir)/Python/getplatform.c - $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c + +$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c Python/importdl.o: $(srcdir)/Python/importdl.c - $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c + +$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ $(srcdir)/Objects/unicodetype_db.h @@ -3045,7 +3045,7 @@ config.status: $(srcdir)/configure .PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S - $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $< JIT_DEPS = \ @@ -3058,7 +3058,7 @@ jit_stencils.h: $(JIT_DEPS) @REGEN_JIT_COMMAND@ Python/jit.o: $(srcdir)/Python/jit.c @JIT_STENCILS_H@ - $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $< .PHONY: regen-jit regen-jit: @@ -3066,14 +3066,14 @@ regen-jit: # Some make's put the object file in the current directory .c.o: - $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $< # bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0 # with -O2 or higher and strict aliasing miscompiles the ratio() function # causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang. # https://bugs.llvm.org//show_bug.cgi?id=31928 Python/dtoa.o: Python/dtoa.c - $(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $< + +$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $< # Run reindent on the library .PHONY: reindent diff --git a/Modules/makesetup b/Modules/makesetup index 8bb971b152a522..4783a420cae187 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -228,13 +228,13 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | for src in $srcs do case $src in - *.c) obj=`basename $src .c`.o; cc='$(CC)';; - *.cc) obj=`basename $src .cc`.o; cc='$(CXX)';; - *.c++) obj=`basename $src .c++`.o; cc='$(CXX)';; - *.C) obj=`basename $src .C`.o; cc='$(CXX)';; - *.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)';; - *.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)';; - *.m) obj=`basename $src .m`.o; cc='$(CC)';; # Obj-C + *.c) obj=`basename $src .c`.o; cc='+$(CC)';; + *.cc) obj=`basename $src .cc`.o; cc='+$(CXX)';; + *.c++) obj=`basename $src .c++`.o; cc='+$(CXX)';; + *.C) obj=`basename $src .C`.o; cc='+$(CXX)';; + *.cxx) obj=`basename $src .cxx`.o; cc='+$(CXX)';; + *.cpp) obj=`basename $src .cpp`.o; cc='+$(CXX)';; + *.m) obj=`basename $src .m`.o; cc='+$(CC)';; # Obj-C *) continue;; esac case $src in diff --git a/configure b/configure index 7a9e581a80e0f5..0ac38202780e29 100755 --- a/configure +++ b/configure @@ -8896,48 +8896,7 @@ fi LTOCFLAGS="-flto" ;; *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=auto" >&5 -printf %s "checking whether C compiler accepts -flto=auto... " >&6; } -if test ${ax_cv_check_cflags___flto_auto+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -flto=auto" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___flto_auto=yes -else case e in #( - e) ax_cv_check_cflags___flto_auto=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_auto" >&5 -printf "%s\n" "$ax_cv_check_cflags___flto_auto" >&6; } -if test "x$ax_cv_check_cflags___flto_auto" = xyes -then : - LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" -else case e in #( - e) LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" - ;; -esac -fi - + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" ;; esac ;; @@ -13525,27 +13484,27 @@ if test -z "$LDSHARED" then case $ac_sys_system/$ac_sys_release in AIX*) - BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" - LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" + BLDSHARED="Modules/ld_so_aix +\$(CC) -bI:Modules/python.exp" + LDSHARED="\$(LIBPL)/ld_so_aix +\$(CC) -bI:\$(LIBPL)/python.exp" ;; SunOS/5*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='$(CC) -shared' + LDSHARED='+$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='$(CC) -G' + LDSHARED='+$(CC) -G' LDCXXSHARED='$(CXX) -G' fi ;; hp*|HP*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='$(CC) -shared' + LDSHARED='+$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='$(CC) -b' + LDSHARED='+$(CC) -b' LDCXXSHARED='$(CXX) -b' fi ;; Darwin/1.3*) - LDSHARED='$(CC) -bundle' + LDSHARED='+$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -13558,7 +13517,7 @@ then LDCXXSHARED="$LDCXXSHARED -undefined suppress" fi ;; Darwin/1.4*|Darwin/5.*|Darwin/6.*) - LDSHARED='$(CC) -bundle' + LDSHARED='+$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -13586,60 +13545,60 @@ then as_fn_error $? "MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported" "$LINENO" 5 else # building for OS X 10.3 and later - LDSHARED='$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' + LDSHARED='+$(CC) -bundle -undefined dynamic_lookup' + LDCXXSHARED='+$(CXX) -bundle -undefined dynamic_lookup' BLDSHARED="$LDSHARED" fi ;; iOS/*) - LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' - LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDSHARED='+$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDCXXSHARED='+$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" ;; Emscripten*|WASI*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; + LDSHARED='+$(CC) -shared' + LDCXXSHARED='+$(CXX) -shared';; Linux*|GNU*|QNX*|VxWorks*|Haiku*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; + LDSHARED='+$(CC) -shared' + LDCXXSHARED='+$(CXX) -shared';; FreeBSD*) if [ "`$CC -dM -E - &5 diff --git a/configure.ac b/configure.ac index f678cac16556ec..0a1a369fe01ee0 100644 --- a/configure.ac +++ b/configure.ac @@ -1426,7 +1426,7 @@ AC_SUBST([LINKCC]) AC_MSG_CHECKING([LINKCC]) if test -z "$LINKCC" then - LINKCC='$(PURIFY) $(CC)' + LINKCC='$(PURIFY) +$(CC)' case $ac_sys_system in QNX*) # qcc must be used because the other compilers do not @@ -2031,11 +2031,7 @@ if test "$Py_LTO" = 'true' ; then LTOCFLAGS="-flto" ;; *) - AX_CHECK_COMPILE_FLAG( - [-flto=auto], - [LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects"], - [LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects"] - ) + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" ;; esac ;; @@ -3394,27 +3390,27 @@ if test -z "$LDSHARED" then case $ac_sys_system/$ac_sys_release in AIX*) - BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" - LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" + BLDSHARED="Modules/ld_so_aix +\$(CC) -bI:Modules/python.exp" + LDSHARED="\$(LIBPL)/ld_so_aix +\$(CC) -bI:\$(LIBPL)/python.exp" ;; SunOS/5*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='$(CC) -shared' + LDSHARED='+$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='$(CC) -G' + LDSHARED='+$(CC) -G' LDCXXSHARED='$(CXX) -G' fi ;; hp*|HP*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='$(CC) -shared' + LDSHARED='+$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='$(CC) -b' + LDSHARED='+$(CC) -b' LDCXXSHARED='$(CXX) -b' fi ;; Darwin/1.3*) - LDSHARED='$(CC) -bundle' + LDSHARED='+$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -3427,7 +3423,7 @@ then LDCXXSHARED="$LDCXXSHARED -undefined suppress" fi ;; Darwin/1.4*|Darwin/5.*|Darwin/6.*) - LDSHARED='$(CC) -bundle' + LDSHARED='+$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -3455,60 +3451,60 @@ then AC_MSG_ERROR([MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported]) else # building for OS X 10.3 and later - LDSHARED='$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' + LDSHARED='+$(CC) -bundle -undefined dynamic_lookup' + LDCXXSHARED='+$(CXX) -bundle -undefined dynamic_lookup' BLDSHARED="$LDSHARED" fi ;; iOS/*) - LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' - LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDSHARED='+$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDCXXSHARED='+$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" ;; Emscripten*|WASI*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; + LDSHARED='+$(CC) -shared' + LDCXXSHARED='+$(CXX) -shared';; Linux*|GNU*|QNX*|VxWorks*|Haiku*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; + LDSHARED='+$(CC) -shared' + LDCXXSHARED='+$(CXX) -shared';; FreeBSD*) if [[ "`$CC -dM -E - Date: Thu, 10 Apr 2025 19:40:44 +0800 Subject: [PATCH 06/10] autoconf regen --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 0ac38202780e29..2ecdd100f8ba63 100755 --- a/configure +++ b/configure @@ -7529,7 +7529,7 @@ LDVERSION="$VERSION" printf %s "checking LINKCC... " >&6; } if test -z "$LINKCC" then - LINKCC='$(PURIFY) $(CC)' + LINKCC='$(PURIFY) +$(CC)' case $ac_sys_system in QNX*) # qcc must be used because the other compilers do not From 6257b0e9720e9909c0015b7265df17358ec62b7b Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Thu, 10 Apr 2025 20:25:21 +0800 Subject: [PATCH 07/10] Revert "Pass jobserver env to all commands" This reverts commit c7f4cc465ff2957620f11442baaf2fe1e92ee8e3. --- Makefile.pre.in | 118 +++++++++++++++++++++++----------------------- Modules/makesetup | 14 +++--- configure | 105 ++++++++++++++++++++++++++++------------- configure.ac | 70 ++++++++++++++------------- 4 files changed, 176 insertions(+), 131 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 56e5b24a0829f9..e10c78d6403472 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -995,23 +995,23 @@ build-details.json: pybuilddir.txt # Build static library $(LIBRARY): $(LIBRARY_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS) libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS) - +$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) + $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) if test $(INSTSONAME) != $@; then \ $(LN) -f $(INSTSONAME) $@; \ fi libpython3.so: libpython$(LDVERSION).so - +$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ + $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ libpython$(LDVERSION).dylib: $(LIBRARY_OBJS) - +$(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ + $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ libpython$(VERSION).sl: $(LIBRARY_OBJS) - +$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) + $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) # List of exported symbols for AIX Modules/python.exp: $(LIBRARY) @@ -1036,7 +1036,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(LIBRARY) \ $(RESSRCDIR)/Info.plist $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) - +$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ + $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ -all_load $(LIBRARY) \ -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ -compatibility_version $(VERSION) \ @@ -1057,7 +1057,7 @@ $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \ $(LIBRARY) \ $(RESSRCDIR)/Info.plist $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR) - +$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ + $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ -all_load $(LIBRARY) \ -install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \ -compatibility_version $(VERSION) \ @@ -1394,70 +1394,70 @@ LIBMPDEC_CFLAGS=@LIBMPDEC_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED) # "%.o: %c" is not portable Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c + $(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_A): $(LIBMPDEC_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS) ########################################################################## # Build static libexpat.a LIBEXPAT_CFLAGS=@LIBEXPAT_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED) Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c + $(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c + $(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS) - +$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c + $(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_A): $(LIBEXPAT_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS) ########################################################################## # Build HACL* static libraries for hashlib and HACL* HMAC. @@ -1466,67 +1466,67 @@ $(LIBEXPAT_A): $(LIBEXPAT_OBJS) # have the ability to compile vectorized versions Modules/_hacl/Hacl_Hash_MD5.o: $(srcdir)/Modules/_hacl/Hacl_Hash_MD5.c $(LIBHACL_MD5_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_MD5.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_MD5.c $(LIBHACL_MD5_A): $(LIBHACL_MD5_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBHACL_MD5_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBHACL_MD5_OBJS) Modules/_hacl/Hacl_Hash_SHA1.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA1.c $(LIBHACL_SHA1_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA1.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA1.c $(LIBHACL_SHA1_A): $(LIBHACL_SHA1_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA1_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBHACL_SHA1_OBJS) Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS) Modules/_hacl/Hacl_Hash_SHA3.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA3.c $(LIBHACL_SHA3_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA3.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA3.c $(LIBHACL_SHA3_A): $(LIBHACL_SHA3_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA3_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBHACL_SHA3_OBJS) Modules/_hacl/Hacl_Hash_Blake2s.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s.c Modules/_hacl/Hacl_Hash_Blake2b.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b.c Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128.c + $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128.c Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.c + $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD128_FLAGS) -DHACL_CAN_COMPILE_VEC128 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.c Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256.c + $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256.c Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.c + $(CC) -c $(LIBHACL_CFLAGS) $(LIBHACL_SIMD256_FLAGS) -DHACL_CAN_COMPILE_VEC256 -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.c Modules/_hacl/Lib_Memzero0.o: $(srcdir)/Modules/_hacl/Lib_Memzero0.c $(LIBHACL_BLAKE2_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Lib_Memzero0.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Lib_Memzero0.c $(LIBHACL_BLAKE2_A): $(LIBHACL_BLAKE2_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBHACL_BLAKE2_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBHACL_BLAKE2_OBJS) Modules/_hacl/Hacl_HMAC.o: $(srcdir)/Modules/_hacl/Hacl_HMAC.c $(LIBHACL_HMAC_HEADERS) - +$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_HMAC.c + $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_HMAC.c Modules/_hacl/Hacl_Streaming_HMAC.o: $(srcdir)/Modules/_hacl/Hacl_Streaming_HMAC.c $(LIBHACL_HMAC_HEADERS) - +$(CC) -Wno-unused-variable -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Streaming_HMAC.c + $(CC) -Wno-unused-variable -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Streaming_HMAC.c $(LIBHACL_HMAC_A): $(LIBHACL_HMAC_OBJS) -rm -f $@ - +$(AR) $(ARFLAGS) $@ $(LIBHACL_HMAC_OBJS) + $(AR) $(ARFLAGS) $@ $(LIBHACL_HMAC_OBJS) # create relative links from build/lib.platform/egg.so to Modules/egg.so # pybuilddir.txt is created too late. We cannot use it in Makefile @@ -1854,14 +1854,14 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ $(MODOBJS) \ $(DTRACE_OBJS) \ $(srcdir)/Modules/getbuildinfo.c - +$(CC) -c $(PY_CORE_CFLAGS) \ + $(CC) -c $(PY_CORE_CFLAGS) \ -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \ -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \ -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \ -o $@ $(srcdir)/Modules/getbuildinfo.c Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS) - +$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ + $(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ -DPREFIX='"$(host_prefix)"' \ -DEXEC_PREFIX='"$(host_exec_prefix)"' \ -DVERSION='"$(VERSION)"' \ @@ -1871,10 +1871,10 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h M -o $@ $(srcdir)/Modules/getpath.c Programs/python.o: $(srcdir)/Programs/python.c - +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c + $(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS) - +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c + $(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h @@ -1899,17 +1899,17 @@ Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_commo Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile - +$(CC) -c $(PY_CORE_CFLAGS) \ + $(CC) -c $(PY_CORE_CFLAGS) \ -DSOABI='"$(SOABI)"' \ -o $@ $(srcdir)/Python/dynload_shlib.c Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile - +$(CC) -c $(PY_CORE_CFLAGS) \ + $(CC) -c $(PY_CORE_CFLAGS) \ -DSHLIB_EXT='"$(EXT_SUFFIX)"' \ -o $@ $(srcdir)/Python/dynload_hpux.c Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h - +$(CC) -c $(PY_CORE_CFLAGS) \ + $(CC) -c $(PY_CORE_CFLAGS) \ -DABIFLAGS='"$(ABIFLAGS)"' \ $(MULTIARCH_CPPFLAGS) \ -o $@ $(srcdir)/Python/sysmodule.c @@ -2008,10 +2008,10 @@ regen-sre: Python/compile.o Python/codegen.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h Python/getplatform.o: $(srcdir)/Python/getplatform.c - +$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c + $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c Python/importdl.o: $(srcdir)/Python/importdl.c - +$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c + $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ $(srcdir)/Objects/unicodetype_db.h @@ -3045,7 +3045,7 @@ config.status: $(srcdir)/configure .PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S - +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< JIT_DEPS = \ @@ -3058,7 +3058,7 @@ jit_stencils.h: $(JIT_DEPS) @REGEN_JIT_COMMAND@ Python/jit.o: $(srcdir)/Python/jit.c @JIT_STENCILS_H@ - +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< .PHONY: regen-jit regen-jit: @@ -3066,14 +3066,14 @@ regen-jit: # Some make's put the object file in the current directory .c.o: - +$(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< # bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0 # with -O2 or higher and strict aliasing miscompiles the ratio() function # causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang. # https://bugs.llvm.org//show_bug.cgi?id=31928 Python/dtoa.o: Python/dtoa.c - +$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $< + $(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $< # Run reindent on the library .PHONY: reindent diff --git a/Modules/makesetup b/Modules/makesetup index 4783a420cae187..8bb971b152a522 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -228,13 +228,13 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | for src in $srcs do case $src in - *.c) obj=`basename $src .c`.o; cc='+$(CC)';; - *.cc) obj=`basename $src .cc`.o; cc='+$(CXX)';; - *.c++) obj=`basename $src .c++`.o; cc='+$(CXX)';; - *.C) obj=`basename $src .C`.o; cc='+$(CXX)';; - *.cxx) obj=`basename $src .cxx`.o; cc='+$(CXX)';; - *.cpp) obj=`basename $src .cpp`.o; cc='+$(CXX)';; - *.m) obj=`basename $src .m`.o; cc='+$(CC)';; # Obj-C + *.c) obj=`basename $src .c`.o; cc='$(CC)';; + *.cc) obj=`basename $src .cc`.o; cc='$(CXX)';; + *.c++) obj=`basename $src .c++`.o; cc='$(CXX)';; + *.C) obj=`basename $src .C`.o; cc='$(CXX)';; + *.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)';; + *.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)';; + *.m) obj=`basename $src .m`.o; cc='$(CC)';; # Obj-C *) continue;; esac case $src in diff --git a/configure b/configure index 2ecdd100f8ba63..af7c47f827a2c6 100755 --- a/configure +++ b/configure @@ -8896,7 +8896,48 @@ fi LTOCFLAGS="-flto" ;; *) - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=auto" >&5 +printf %s "checking whether C compiler accepts -flto=auto... " >&6; } +if test ${ax_cv_check_cflags___flto_auto+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -flto=auto" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___flto_auto=yes +else case e in #( + e) ax_cv_check_cflags___flto_auto=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_auto" >&5 +printf "%s\n" "$ax_cv_check_cflags___flto_auto" >&6; } +if test "x$ax_cv_check_cflags___flto_auto" = xyes +then : + LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" +else case e in #( + e) LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + ;; +esac +fi + ;; esac ;; @@ -13484,27 +13525,27 @@ if test -z "$LDSHARED" then case $ac_sys_system/$ac_sys_release in AIX*) - BLDSHARED="Modules/ld_so_aix +\$(CC) -bI:Modules/python.exp" - LDSHARED="\$(LIBPL)/ld_so_aix +\$(CC) -bI:\$(LIBPL)/python.exp" + BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" + LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" ;; SunOS/5*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='+$(CC) -shared' + LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='+$(CC) -G' + LDSHARED='$(CC) -G' LDCXXSHARED='$(CXX) -G' fi ;; hp*|HP*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='+$(CC) -shared' + LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='+$(CC) -b' + LDSHARED='$(CC) -b' LDCXXSHARED='$(CXX) -b' fi ;; Darwin/1.3*) - LDSHARED='+$(CC) -bundle' + LDSHARED='$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -13517,7 +13558,7 @@ then LDCXXSHARED="$LDCXXSHARED -undefined suppress" fi ;; Darwin/1.4*|Darwin/5.*|Darwin/6.*) - LDSHARED='+$(CC) -bundle' + LDSHARED='$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -13545,60 +13586,60 @@ then as_fn_error $? "MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported" "$LINENO" 5 else # building for OS X 10.3 and later - LDSHARED='+$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='+$(CXX) -bundle -undefined dynamic_lookup' + LDSHARED='$(CC) -bundle -undefined dynamic_lookup' + LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' BLDSHARED="$LDSHARED" fi ;; iOS/*) - LDSHARED='+$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' - LDCXXSHARED='+$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" ;; Emscripten*|WASI*) - LDSHARED='+$(CC) -shared' - LDCXXSHARED='+$(CXX) -shared';; + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; Linux*|GNU*|QNX*|VxWorks*|Haiku*) - LDSHARED='+$(CC) -shared' - LDCXXSHARED='+$(CXX) -shared';; + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; FreeBSD*) if [ "`$CC -dM -E - &5 diff --git a/configure.ac b/configure.ac index 0a1a369fe01ee0..f678cac16556ec 100644 --- a/configure.ac +++ b/configure.ac @@ -1426,7 +1426,7 @@ AC_SUBST([LINKCC]) AC_MSG_CHECKING([LINKCC]) if test -z "$LINKCC" then - LINKCC='$(PURIFY) +$(CC)' + LINKCC='$(PURIFY) $(CC)' case $ac_sys_system in QNX*) # qcc must be used because the other compilers do not @@ -2031,7 +2031,11 @@ if test "$Py_LTO" = 'true' ; then LTOCFLAGS="-flto" ;; *) - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + AX_CHECK_COMPILE_FLAG( + [-flto=auto], + [LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects"], + [LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects"] + ) ;; esac ;; @@ -3390,27 +3394,27 @@ if test -z "$LDSHARED" then case $ac_sys_system/$ac_sys_release in AIX*) - BLDSHARED="Modules/ld_so_aix +\$(CC) -bI:Modules/python.exp" - LDSHARED="\$(LIBPL)/ld_so_aix +\$(CC) -bI:\$(LIBPL)/python.exp" + BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" + LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" ;; SunOS/5*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='+$(CC) -shared' + LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='+$(CC) -G' + LDSHARED='$(CC) -G' LDCXXSHARED='$(CXX) -G' fi ;; hp*|HP*) if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='+$(CC) -shared' + LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared' else - LDSHARED='+$(CC) -b' + LDSHARED='$(CC) -b' LDCXXSHARED='$(CXX) -b' fi ;; Darwin/1.3*) - LDSHARED='+$(CC) -bundle' + LDSHARED='$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -3423,7 +3427,7 @@ then LDCXXSHARED="$LDCXXSHARED -undefined suppress" fi ;; Darwin/1.4*|Darwin/5.*|Darwin/6.*) - LDSHARED='+$(CC) -bundle' + LDSHARED='$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. @@ -3451,60 +3455,60 @@ then AC_MSG_ERROR([MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported]) else # building for OS X 10.3 and later - LDSHARED='+$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='+$(CXX) -bundle -undefined dynamic_lookup' + LDSHARED='$(CC) -bundle -undefined dynamic_lookup' + LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' BLDSHARED="$LDSHARED" fi ;; iOS/*) - LDSHARED='+$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' - LDCXXSHARED='+$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" ;; Emscripten*|WASI*) - LDSHARED='+$(CC) -shared' - LDCXXSHARED='+$(CXX) -shared';; + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; Linux*|GNU*|QNX*|VxWorks*|Haiku*) - LDSHARED='+$(CC) -shared' - LDCXXSHARED='+$(CXX) -shared';; + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; FreeBSD*) if [[ "`$CC -dM -E - Date: Thu, 10 Apr 2025 20:49:53 +0800 Subject: [PATCH 08/10] Revert most of the + to the bare minimum --- Makefile.pre.in | 6 +++--- configure | 45 ++------------------------------------------- configure.ac | 6 +----- 3 files changed, 6 insertions(+), 51 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index e10c78d6403472..fc21d5f8d61f2c 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -968,7 +968,7 @@ clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c # Build the interpreter $(BUILDPYTHON): Programs/python.o $(LINK_PYTHON_DEPS) - $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) + +$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform @@ -1608,7 +1608,7 @@ regen-re: $(BUILDPYTHON) $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS) - $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) + +$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) ############################################################################ # "Bootstrap Python" used to run Programs/_freeze_module.py @@ -1707,7 +1707,7 @@ Programs/_freeze_module.o: Programs/_freeze_module.c Makefile Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) - $(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) + +$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) # We manually freeze getpath.py rather than through freeze_modules Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS) diff --git a/configure b/configure index af7c47f827a2c6..ead65916b7034b 100755 --- a/configure +++ b/configure @@ -7529,7 +7529,7 @@ LDVERSION="$VERSION" printf %s "checking LINKCC... " >&6; } if test -z "$LINKCC" then - LINKCC='$(PURIFY) +$(CC)' + LINKCC='$(PURIFY) $(CC)' case $ac_sys_system in QNX*) # qcc must be used because the other compilers do not @@ -8896,48 +8896,7 @@ fi LTOCFLAGS="-flto" ;; *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=auto" >&5 -printf %s "checking whether C compiler accepts -flto=auto... " >&6; } -if test ${ax_cv_check_cflags___flto_auto+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -flto=auto" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___flto_auto=yes -else case e in #( - e) ax_cv_check_cflags___flto_auto=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_auto" >&5 -printf "%s\n" "$ax_cv_check_cflags___flto_auto" >&6; } -if test "x$ax_cv_check_cflags___flto_auto" = xyes -then : - LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects" -else case e in #( - e) LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" - ;; -esac -fi - + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" ;; esac ;; diff --git a/configure.ac b/configure.ac index f678cac16556ec..30b4f512ba611c 100644 --- a/configure.ac +++ b/configure.ac @@ -2031,11 +2031,7 @@ if test "$Py_LTO" = 'true' ; then LTOCFLAGS="-flto" ;; *) - AX_CHECK_COMPILE_FLAG( - [-flto=auto], - [LTOFLAGS="-flto=auto -fuse-linker-plugin -ffat-lto-objects"], - [LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects"] - ) + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" ;; esac ;; From 61c8e339a833f211e82ce229168c5e2d8fa8a83c Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Thu, 10 Apr 2025 23:23:36 +0800 Subject: [PATCH 09/10] Remove the + --- Makefile.pre.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index fc21d5f8d61f2c..e10c78d6403472 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -968,7 +968,7 @@ clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c # Build the interpreter $(BUILDPYTHON): Programs/python.o $(LINK_PYTHON_DEPS) - +$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) + $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform @@ -1608,7 +1608,7 @@ regen-re: $(BUILDPYTHON) $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS) - +$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) + $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) ############################################################################ # "Bootstrap Python" used to run Programs/_freeze_module.py @@ -1707,7 +1707,7 @@ Programs/_freeze_module.o: Programs/_freeze_module.c Makefile Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) - +$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) + $(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) # We manually freeze getpath.py rather than through freeze_modules Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS) From 36283883a05793bf3752bbca2fa1e8625691870c Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Fri, 11 Apr 2025 00:33:24 +0800 Subject: [PATCH 10/10] Update 2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst --- .../next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst b/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst index a05730d74cc2ac..5bf20d2f1d0d22 100644 --- a/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst +++ b/Misc/NEWS.d/next/Build/2025-04-08-09-11-32.gh-issue-132257.oZWBV-.rst @@ -1 +1 @@ -Change the default LTO flags on GCC to not pass ``-flto-partition=none``, and allow parallelization of LTO. This has a multiple factor speedup for LTO build times on GCC, with no noticeable loss in performance. +Change the default LTO flags on GCC to not pass ``-flto-partition=none``, and allow parallelization of LTO. For newer GNU makes and GCC, this has a multiple factor speedup for LTO build times, with no noticeable loss in performance.