From 862d50a8dea63c8c83763a26cf910abfa0ce735f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:35:37 +0200 Subject: [PATCH 1/8] does it work like this? --- Modules/_hashlib/hashlib_buffer.h | 4 ++-- PCbuild/_hashlib.vcxproj | 1 + PCbuild/_hashlib.vcxproj.filters | 3 +++ PCbuild/pythoncore.vcxproj | 1 - PCbuild/pythoncore.vcxproj.filters | 3 --- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Modules/_hashlib/hashlib_buffer.h b/Modules/_hashlib/hashlib_buffer.h index 809f19884f41b7..d6457eaa60960f 100644 --- a/Modules/_hashlib/hashlib_buffer.h +++ b/Modules/_hashlib/hashlib_buffer.h @@ -14,7 +14,7 @@ * * The symbol is exported for '_hashlib' and HACL*-based extension modules. */ -PyAPI_FUNC(int) +extern int _Py_hashlib_data_argument(PyObject **res, PyObject *data, PyObject *string); /* @@ -25,7 +25,7 @@ _Py_hashlib_data_argument(PyObject **res, PyObject *data, PyObject *string); * * The symbol is exported for '_hashlib' and HACL*-based extension modules. */ -PyAPI_FUNC(int) +extern int _Py_hashlib_get_buffer_view(PyObject *obj, Py_buffer *view); /* diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj index cfb43cee935b86..06aba8fbc566db 100644 --- a/PCbuild/_hashlib.vcxproj +++ b/PCbuild/_hashlib.vcxproj @@ -99,6 +99,7 @@ + diff --git a/PCbuild/_hashlib.vcxproj.filters b/PCbuild/_hashlib.vcxproj.filters index d465d92a956eda..97188a87f34b77 100644 --- a/PCbuild/_hashlib.vcxproj.filters +++ b/PCbuild/_hashlib.vcxproj.filters @@ -12,6 +12,9 @@ Source Files + + Source Files + diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index c59b380d814ed9..187e2d68365076 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -447,7 +447,6 @@ HACL_CAN_COMPILE_VEC128;%(PreprocessorDefinitions) /arch:AVX %(AdditionalOptions) - diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 1410cbbef6c849..eba3b1c04376c4 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -980,9 +980,6 @@ Modules - - Modules\_hashlib - Modules From 45523533f789a319eca5cfdd4becc631a26e5566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:39:15 +0200 Subject: [PATCH 2/8] maybe like this? --- PCbuild/pythoncore.vcxproj | 1 + PCbuild/pythoncore.vcxproj.filters | 3 +++ 2 files changed, 4 insertions(+) diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index 187e2d68365076..c59b380d814ed9 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -447,6 +447,7 @@ HACL_CAN_COMPILE_VEC128;%(PreprocessorDefinitions) /arch:AVX %(AdditionalOptions) + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index eba3b1c04376c4..1410cbbef6c849 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -980,6 +980,9 @@ Modules + + Modules\_hashlib + Modules From 033ba239744547a86282eeff9af6425fcf805c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:46:16 +0200 Subject: [PATCH 3/8] typo? --- PCbuild/_hashlib.vcxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj index 06aba8fbc566db..70f39d35932a77 100644 --- a/PCbuild/_hashlib.vcxproj +++ b/PCbuild/_hashlib.vcxproj @@ -99,7 +99,7 @@ - + From ba5b0f3ed02c780cf9545ddd5e717a797847c1cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:44:34 +0200 Subject: [PATCH 4/8] directly link to the interpreter --- configure.ac | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 1e590e1d0fd727..b6acbda9e51b12 100644 --- a/configure.ac +++ b/configure.ac @@ -7961,8 +7961,18 @@ PY_STDLIB_MOD_SIMPLE([unicodedata]) ############################################################################### # Cryptographic primitives LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" -LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" +if test "$ac_sys_system" = "Emscripten"; then + LIBHASHLIB_INTERNAL_LDFLAGS="-lm" + LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS)" + # Directly link the library to the interpreter instead to prevent duplicated + # symbols. This is a temporary fix until we manage to find a way to elegantly + # configure the various cryptographic modules. + LDFLAGS="$LDFLAGS \$(LIBHASHLIB_INTERNAL_A)" + LIBS="$LIBS \$(LIBHASHLIB_INTERNAL_A)" +else + LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" + LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" +fi AC_SUBST([LIBHASHLIB_INTERNAL_CFLAGS]) AC_SUBST([LIBHASHLIB_INTERNAL]) From 561f4a967ee54dad60472e2e8abf66f722c66926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:46:29 +0200 Subject: [PATCH 5/8] regen --- configure | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 0e7aefed5ee62d..04aa97d04c0197 100755 --- a/configure +++ b/configure @@ -32531,8 +32531,18 @@ fi ############################################################################### # Cryptographic primitives LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" -LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" +if test "$ac_sys_system" = "Emscripten"; then + LIBHASHLIB_INTERNAL_LDFLAGS="-lm" + LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS)" + # Directly link the library to the interpreter instead to prevent duplicated + # symbols. This is a temporary fix until we manage to find a way to elegantly + # configure the various cryptographic modules. + LDFLAGS="$LDFLAGS \$(LIBHASHLIB_INTERNAL_A)" + LIBS="$LIBS \$(LIBHASHLIB_INTERNAL_A)" +else + LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" + LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" +fi From 1e74acb7f4ef71e506c1432471b1ddd8609469db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:03:44 +0200 Subject: [PATCH 6/8] Revert "regen" This reverts commit 561f4a967ee54dad60472e2e8abf66f722c66926. --- configure | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/configure b/configure index 04aa97d04c0197..0e7aefed5ee62d 100755 --- a/configure +++ b/configure @@ -32531,18 +32531,8 @@ fi ############################################################################### # Cryptographic primitives LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -if test "$ac_sys_system" = "Emscripten"; then - LIBHASHLIB_INTERNAL_LDFLAGS="-lm" - LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS)" - # Directly link the library to the interpreter instead to prevent duplicated - # symbols. This is a temporary fix until we manage to find a way to elegantly - # configure the various cryptographic modules. - LDFLAGS="$LDFLAGS \$(LIBHASHLIB_INTERNAL_A)" - LIBS="$LIBS \$(LIBHASHLIB_INTERNAL_A)" -else - LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" - LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" -fi +LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" +LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" From 6bc7d43956106a76e7db581222691b137676fe65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:04:21 +0200 Subject: [PATCH 7/8] Revert "directly link to the interpreter" This reverts commit ba5b0f3ed02c780cf9545ddd5e717a797847c1cf. --- configure.ac | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index b6acbda9e51b12..1e590e1d0fd727 100644 --- a/configure.ac +++ b/configure.ac @@ -7961,18 +7961,8 @@ PY_STDLIB_MOD_SIMPLE([unicodedata]) ############################################################################### # Cryptographic primitives LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -if test "$ac_sys_system" = "Emscripten"; then - LIBHASHLIB_INTERNAL_LDFLAGS="-lm" - LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS)" - # Directly link the library to the interpreter instead to prevent duplicated - # symbols. This is a temporary fix until we manage to find a way to elegantly - # configure the various cryptographic modules. - LDFLAGS="$LDFLAGS \$(LIBHASHLIB_INTERNAL_A)" - LIBS="$LIBS \$(LIBHASHLIB_INTERNAL_A)" -else - LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" - LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" -fi +LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" +LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" AC_SUBST([LIBHASHLIB_INTERNAL_CFLAGS]) AC_SUBST([LIBHASHLIB_INTERNAL]) From 1ded2a307bb7ab585cf72fc321042290860f170a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:00:39 +0200 Subject: [PATCH 8/8] explicitly define the injected libs --- Makefile.pre.in | 8 ++++ Modules/makesetup | 6 ++- configure | 107 ++++++++++++++++++++++++++++++++++++++++++---- configure.ac | 16 +++++-- 4 files changed, 124 insertions(+), 13 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index e2253d3e35b3e6..29c2708f58b10d 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -32,6 +32,7 @@ srcdir= @srcdir@ VPATH= @srcdir@ abs_srcdir= @abs_srcdir@ abs_builddir= @abs_builddir@ +UNIQMODLIBS= @UNIQMODLIBS@ CC= @CC@ @@ -3381,21 +3382,28 @@ MODULE__CTYPES_MALLOC_CLOSURE=@MODULE__CTYPES_MALLOC_CLOSURE@ MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h @LIBMPDEC_INTERNAL@ MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c @LIBEXPAT_INTERNAL@ MODULE__HASHLIB_DEPS=@LIBHASHLIB_INTERNAL@ +MODULE__HASHLIB_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h # HACL*-based cryptographic primitives MODULE__MD5_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_MD5_HEADERS) $(LIBHACL_MD5_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__MD5_LDEPS=$(LIBHACL_MD5_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__MD5_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__SHA1_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_SHA1_HEADERS) $(LIBHACL_SHA1_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SHA1_LDEPS=$(LIBHACL_SHA1_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__SHA1_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__SHA2_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SHA2_LDEPS=$(LIBHACL_SHA2_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__SHA2_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__SHA3_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_SHA3_HEADERS) $(LIBHACL_SHA3_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SHA3_LDEPS=$(LIBHACL_SHA3_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__SHA3_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__BLAKE2_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_BLAKE2_HEADERS) $(LIBHACL_BLAKE2_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__BLAKE2_LDEPS=$(LIBHACL_BLAKE2_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__BLAKE2_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__HMAC_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_HMAC_HEADERS) $(LIBHACL_HMAC_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__HMAC_LDEPS=$(LIBHACL_HMAC_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__HMAC_RULE_LDFLAGS=@LIBHASHLIB_INTERNAL_RULE_LDFLAGS@ MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c MODULE__SSL_DEPS=$(srcdir)/Modules/_ssl.h $(srcdir)/Modules/_ssl/cert.c $(srcdir)/Modules/_ssl/debughelpers.c $(srcdir)/Modules/_ssl/misc.c $(srcdir)/Modules/_ssl_data_111.h $(srcdir)/Modules/_ssl_data_300.h $(srcdir)/Modules/socketmodule.h diff --git a/Modules/makesetup b/Modules/makesetup index f6cf695b457cbf..ece8466eaba548 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -111,6 +111,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | SHAREDMODS= OBJS= LIBS= + UNIQMODLIBS= LOCALLIBS= BASELIBS= while read line @@ -276,7 +277,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | ;; esac rule="$file: $objs \$(MODULE_${mods_upper}_LDEPS)" - rule="$rule; \$(BLDSHARED) $objs $libs \$(LIBPYTHON) -o $file" + rule="$rule; \$(BLDSHARED) $objs $libs \$(MODULE_${mods_upper}_RULE_LDFLAGS) \$(LIBPYTHON) -o $file" echo "$rule" >>$rulesf done done @@ -290,7 +291,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | yes) BASELIBS=$LIBS;; *) LOCALLIBS=$LIBS;; esac - LIBS='$(LOCALMODLIBS) $(BASEMODLIBS)' + LIBS='$(LOCALMODLIBS) $(BASEMODLIBS) $(UNIQMODLIBS)' DEFS="BASEMODLIBS=$BASELIBS$NL$DEFS" DEFS="LOCALMODLIBS=$LOCALLIBS$NL$DEFS" @@ -332,6 +333,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | echo "s%_MODDISABLED_NAMES_%$DISABLED%" >>$sedf echo "s%_MODOBJS_%$OBJS%" >>$sedf echo "s%_MODLIBS_%$LIBS%" >>$sedf + echo "s%_UNIQMODLIBS_%$UNIQMODLIBS%" >>$sedf echo "/Definitions added by makesetup/r $sedr" >>$sedf sed -f $sedf $makepre >Makefile cat $rulesf >>Makefile diff --git a/configure b/configure index 0e7aefed5ee62d..047888d45801a8 100755 --- a/configure +++ b/configure @@ -726,6 +726,7 @@ LIBHACL_SIMD128_FLAGS LIBHACL_LDFLAGS LIBHACL_CFLAGS LIBHASHLIB_INTERNAL +LIBHASHLIB_INTERNAL_RULE_LDFLAGS LIBHASHLIB_INTERNAL_CFLAGS MODULE_UNICODEDATA_FALSE MODULE_UNICODEDATA_TRUE @@ -1038,6 +1039,7 @@ GITBRANCH GITTAG GITVERSION BASECPPFLAGS +UNIQMODLIBS target_alias host_alias build_alias @@ -3561,6 +3563,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu +UNIQMODLIBS="" + + @@ -14153,6 +14158,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" @@ -14285,6 +14291,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -14297,6 +14304,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" @@ -14429,6 +14437,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -14531,6 +14540,7 @@ printf %s "checking if uuid_generate_time_safe() node value is stable... " >&6; save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS # Be sure to add the extra include path if we used pkg-config @@ -14591,12 +14601,14 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS # Be sure to add the extra include path if we used pkg-config @@ -14657,6 +14669,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS if test -n "$py_cv_uuid_node1" -a "$py_cv_uuid_node1" = "$py_cv_uuid_node2" @@ -15195,6 +15208,7 @@ then : save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS" @@ -15262,6 +15276,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -15333,6 +15348,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" @@ -15404,6 +15420,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -15415,6 +15432,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" @@ -15486,6 +15504,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -15536,6 +15555,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CFLAGS="$CFLAGS $LIBFFI_CFLAGS" @@ -15669,6 +15689,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -15689,6 +15710,7 @@ else case e in #( save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" @@ -15741,6 +15763,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS ;; esac @@ -15862,6 +15885,7 @@ then : save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBMPDEC_CFLAGS" @@ -15898,6 +15922,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS fi @@ -16117,6 +16142,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBSQLITE3_CFLAGS" @@ -16851,6 +16877,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -17107,6 +17134,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $TCLTK_CFLAGS" @@ -17165,6 +17193,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -17174,6 +17203,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $GDBM_CFLAGS" @@ -17251,6 +17281,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -17265,6 +17296,7 @@ then : save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 @@ -17339,6 +17371,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -17436,6 +17469,7 @@ if test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 @@ -17513,6 +17547,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS fi @@ -17537,6 +17572,7 @@ else case e in #( save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS LIBS="$LIBS -ldb" @@ -17572,6 +17608,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS ;; @@ -21757,6 +21794,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" @@ -21893,6 +21931,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -21904,6 +21943,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" @@ -22040,6 +22080,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -22141,6 +22182,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" @@ -22222,6 +22264,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -22233,6 +22276,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" @@ -22314,6 +22358,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -22389,6 +22434,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" @@ -22470,6 +22516,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -22481,6 +22528,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" @@ -22562,6 +22610,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -22637,6 +22686,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS" @@ -22775,6 +22825,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -22786,6 +22837,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS" @@ -22924,6 +22976,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -27024,6 +27077,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBREADLINE_CFLAGS" @@ -27102,6 +27156,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -27113,6 +27168,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBREADLINE_CFLAGS" @@ -27191,6 +27247,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -27275,6 +27332,7 @@ fi save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBEDIT_CFLAGS" @@ -27355,6 +27413,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -27366,6 +27425,7 @@ printf "%s\n" "no" >&6; } save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $LIBEDIT_CFLAGS" @@ -27446,6 +27506,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -27484,6 +27545,7 @@ printf "%s\n" "$with_readline (CFLAGS: $READLINE_CFLAGS, LIBS: $READLINE_LIBS)" save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS CPPFLAGS="$CPPFLAGS $READLINE_CFLAGS" @@ -27883,6 +27945,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS ;; esac @@ -28596,6 +28659,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS # Make sure we've got the header defines. @@ -29631,6 +29695,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 @@ -30323,6 +30388,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5 @@ -30429,6 +30495,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -30761,6 +30828,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS LIBS="$LIBS $OPENSSL_LIBS" @@ -30819,6 +30887,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -30826,6 +30895,7 @@ save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS +save_UNIQMODLIBS=$UNIQMODLIBS LIBS="$LIBS $LIBCRYPTO_LIBS" @@ -30881,6 +30951,7 @@ CFLAGS=$save_CFLAGS CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS +UNIQMODLIBS=$save_UNIQMODLIBS @@ -32531,8 +32602,10 @@ fi ############################################################################### # Cryptographic primitives LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" +LIBHASHLIB_INTERNAL_RULE_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" +UNIQMODLIBS="$UNIQMODLIBS \$(LIBHASHLIB_INTERNAL_A)" + @@ -32760,6 +32833,9 @@ fi LIBHACL_MD5_LDFLAGS=LIBHACL_MD5_LIB_${LIBHACL_LDEPS_LIBTYPE} + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _md5" >&5 printf %s "checking for stdlib extension module _md5... " >&6; } @@ -32786,7 +32862,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__MD5_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__MD5_LDFLAGS=\$($LIBHACL_MD5_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__MD5_LDFLAGS=\$($LIBHACL_MD5_LDFLAGS)$as_nl" fi if test "$py_cv_module__md5" = yes; then @@ -32805,6 +32881,9 @@ printf "%s\n" "$py_cv_module__md5" >&6; } LIBHACL_SHA1_LDFLAGS=LIBHACL_SHA1_LIB_${LIBHACL_LDEPS_LIBTYPE} + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha1" >&5 printf %s "checking for stdlib extension module _sha1... " >&6; } @@ -32831,7 +32910,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__SHA1_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA1_LDFLAGS=\$($LIBHACL_SHA1_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA1_LDFLAGS=\$($LIBHACL_SHA1_LDFLAGS)$as_nl" fi if test "$py_cv_module__sha1" = yes; then @@ -32850,6 +32929,9 @@ printf "%s\n" "$py_cv_module__sha1" >&6; } LIBHACL_SHA2_LDFLAGS=LIBHACL_SHA2_LIB_${LIBHACL_LDEPS_LIBTYPE} + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha2" >&5 printf %s "checking for stdlib extension module _sha2... " >&6; } @@ -32876,7 +32958,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__SHA2_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA2_LDFLAGS=\$($LIBHACL_SHA2_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA2_LDFLAGS=\$($LIBHACL_SHA2_LDFLAGS)$as_nl" fi if test "$py_cv_module__sha2" = yes; then @@ -32895,6 +32977,9 @@ printf "%s\n" "$py_cv_module__sha2" >&6; } LIBHACL_SHA3_LDFLAGS=LIBHACL_SHA3_LIB_${LIBHACL_LDEPS_LIBTYPE} + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha3" >&5 printf %s "checking for stdlib extension module _sha3... " >&6; } @@ -32921,7 +33006,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__SHA3_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA3_LDFLAGS=\$($LIBHACL_SHA3_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA3_LDFLAGS=\$($LIBHACL_SHA3_LDFLAGS)$as_nl" fi if test "$py_cv_module__sha3" = yes; then @@ -32940,6 +33025,9 @@ printf "%s\n" "$py_cv_module__sha3" >&6; } LIBHACL_BLAKE2_LDFLAGS=LIBHACL_BLAKE2_LIB_${LIBHACL_LDEPS_LIBTYPE} + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _blake2" >&5 printf %s "checking for stdlib extension module _blake2... " >&6; } @@ -32966,7 +33054,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__BLAKE2_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__BLAKE2_LDFLAGS=\$($LIBHACL_BLAKE2_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__BLAKE2_LDFLAGS=\$($LIBHACL_BLAKE2_LDFLAGS)$as_nl" fi if test "$py_cv_module__blake2" = yes; then @@ -32986,6 +33074,9 @@ printf "%s\n" "$py_cv_module__blake2" >&6; } LIBHACL_HMAC_LDFLAGS=LIBHACL_HMAC_LIB_${LIBHACL_LDEPS_LIBTYPE} + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _hmac" >&5 printf %s "checking for stdlib extension module _hmac... " >&6; } @@ -33012,7 +33103,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__HMAC_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__HMAC_LDFLAGS=\$($LIBHACL_HMAC_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HMAC_LDFLAGS=\$($LIBHACL_HMAC_LDFLAGS)$as_nl" fi if test "$py_cv_module__hmac" = yes; then @@ -33694,7 +33785,7 @@ fi then : as_fn_append MODULE_BLOCK "MODULE__HASHLIB_CFLAGS=$OPENSSL_INCLUDES $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS$as_nl" fi if test "$py_cv_module__hashlib" = yes; then diff --git a/configure.ac b/configure.ac index 1e590e1d0fd727..7f7d14bbb680aa 100644 --- a/configure.ac +++ b/configure.ac @@ -40,12 +40,14 @@ AC_DEFUN([SAVE_ENV], [_SAVE_VAR([CPPFLAGS])] [_SAVE_VAR([LDFLAGS])] [_SAVE_VAR([LIBS])] +[_SAVE_VAR([UNIQMODLIBS])] )dnl AC_DEFUN([RESTORE_ENV], [_RESTORE_VAR([CFLAGS])] [_RESTORE_VAR([CPPFLAGS])] [_RESTORE_VAR([LDFLAGS])] [_RESTORE_VAR([LIBS])] +[_RESTORE_VAR([UNIQMODLIBS])] )dnl AC_DEFUN([WITH_SAVE_ENV], [SAVE_ENV] @@ -53,6 +55,9 @@ AC_DEFUN([WITH_SAVE_ENV], [RESTORE_ENV] )dnl +UNIQMODLIBS="" +AC_SUBST([UNIQMODLIBS]) + dnl PY_CHECK_FUNC(FUNCTION, [INCLUDES], [AC_DEFINE-VAR]) AC_DEFUN([PY_CHECK_FUNC], [ AS_VAR_PUSHDEF([py_var], [ac_cv_func_$1]) @@ -7961,10 +7966,12 @@ PY_STDLIB_MOD_SIMPLE([unicodedata]) ############################################################################### # Cryptographic primitives LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" +LIBHASHLIB_INTERNAL_RULE_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" +UNIQMODLIBS="$UNIQMODLIBS \$(LIBHASHLIB_INTERNAL_A)" AC_SUBST([LIBHASHLIB_INTERNAL_CFLAGS]) +AC_SUBST([LIBHASHLIB_INTERNAL_RULE_LDFLAGS]) AC_SUBST([LIBHASHLIB_INTERNAL]) ############################################################################### @@ -8103,9 +8110,12 @@ dnl The EXTNAME is the name of the extension module being built. AC_DEFUN([PY_HACL_CREATE_MODULE], [ AS_VAR_PUSHDEF([v], [[LIBHACL_][$1][_LDFLAGS]]) AS_VAR_SET([v], [[LIBHACL_][$1][_LIB_${LIBHACL_LDEPS_LIBTYPE}]]) + # LDFLAGS will not contain the internal library helper as it could + # be duplicated. Instead, it will be linked added only for the rule + # and will be otherwise added to the interpreter directly. PY_STDLIB_MOD([$2], [$3], [], [$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS], - [\$($v) $LIBHASHLIB_INTERNAL_LDFLAGS]) + [\$($v)]) AS_VAR_POPDEF([v]) ]) @@ -8187,7 +8197,7 @@ PY_STDLIB_MOD([_ssl], [], [test "$ac_cv_working_openssl_ssl" = yes], [$OPENSSL_INCLUDES], [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $OPENSSL_LIBS]) PY_STDLIB_MOD([_hashlib], [], [test "$ac_cv_working_openssl_hashlib" = yes], [$OPENSSL_INCLUDES $LIBHASHLIB_INTERNAL_CFLAGS], - [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS $LIBHASHLIB_INTERNAL_LDFLAGS]) + [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS]) dnl test modules PY_STDLIB_MOD([_testcapi],