Skip to content

Commit

Permalink
pythongh-125269: Use AC_LINK_IF_ELSE to detect if -latomic is nee…
Browse files Browse the repository at this point in the history
…ded (python#125416)

We previously used `AC_RUN_IF_ELSE` with a short test program to detect
if `-latomic` is needed, but that requires choosing a specific default
value when cross-compiling because the test program is not run.
Some cross compilation targets like `wasm32-emscripten` do not support
`-latomic`, while other cross compilation targets, like
`arm-linux-gnueabi` require it.
  • Loading branch information
colesbury authored Oct 15, 2024
1 parent 0b28ea4 commit 8d42e2d
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix detection of whether ``-latomic`` is needed when cross-compiling CPython
using the configure script.
12 changes: 3 additions & 9 deletions configure

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 3 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -7497,7 +7497,7 @@ CPPFLAGS="${BASECPPFLAGS} -I. -I${srcdir}/Include ${CPPFLAGS}"

AC_CACHE_CHECK([whether libatomic is needed by <pyatomic.h>],
[ac_cv_libatomic_needed],
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
[AC_LINK_IFELSE([AC_LANG_SOURCE([[
// pyatomic.h needs uint64_t and Py_ssize_t types
#include <stdint.h> // int64_t, intptr_t
#ifdef HAVE_SYS_TYPES_H
Expand Down Expand Up @@ -7534,9 +7534,8 @@ int main()
return 0; // all good
}
]])],
[ac_cv_libatomic_needed=no], dnl build succeeded
[ac_cv_libatomic_needed=yes], dnl build failed
[ac_cv_libatomic_needed=no]) dnl cross compilation
[ac_cv_libatomic_needed=no], dnl build and link succeeded
[ac_cv_libatomic_needed=yes]) dnl build and link failed
])

AS_VAR_IF([ac_cv_libatomic_needed], [yes],
Expand Down

0 comments on commit 8d42e2d

Please sign in to comment.