mirror of https://github.com/python/cpython
gh-125269: Use `AC_LINK_IF_ELSE` to detect if `-latomic` is needed (#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.
This commit is contained in:
parent
0b28ea4a35
commit
8d42e2d915
|
@ -0,0 +1,2 @@
|
|||
Fix detection of whether ``-latomic`` is needed when cross-compiling CPython
|
||||
using the configure script.
|
|
@ -28999,10 +28999,6 @@ printf %s "checking whether libatomic is needed by <pyatomic.h>... " >&6; }
|
|||
if test ${ac_cv_libatomic_needed+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
if test "$cross_compiling" = yes
|
||||
then :
|
||||
ac_cv_libatomic_needed=no
|
||||
else $as_nop
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
@ -29044,16 +29040,14 @@ int main()
|
|||
}
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
if ac_fn_c_try_link "$LINENO"
|
||||
then :
|
||||
ac_cv_libatomic_needed=no
|
||||
else $as_nop
|
||||
ac_cv_libatomic_needed=yes
|
||||
fi
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
||||
conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libatomic_needed" >&5
|
||||
printf "%s\n" "$ac_cv_libatomic_needed" >&6; }
|
||||
|
|
|
@ -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
|
||||
|
@ -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],
|
||||
|
|
Loading…
Reference in New Issue