https://github.com/python/cpython/commit/cbe4977af3ac4c26cf1186c3cdae1cb8021651b9
commit: cbe4977af3ac4c26cf1186c3cdae1cb8021651b9
branch: main
author: hpkfft.com <[email protected]>
committer: zware <[email protected]>
date: 2026-07-21T20:25:47-05:00
summary:
gh-152902: Add Intel `icx` compiler to `configure.ac` (GH-152825)
files:
A Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst
M configure
M configure.ac
diff --git
a/Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst
b/Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst
new file mode 100644
index 000000000000000..c084d32664a186c
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst
@@ -0,0 +1,2 @@
+Added Intel ``icx`` compiler support to ``configure.ac``. Contributed by
+High Performance Kernels LLC.
diff --git a/configure b/configure
index 93bc5545e9de6ed..58f3dfc119ec13b 100755
--- a/configure
+++ b/configure
@@ -6402,6 +6402,8 @@ else case e in #(
cat > conftest.c <<EOF
#if defined(__EMSCRIPTEN__)
emcc
+#elif defined(__INTEL_CLANG_COMPILER) || defined(__INTEL_LLVM_COMPILER)
+ icx
#elif defined(__INTEL_COMPILER) || defined(__ICC)
icc
#elif defined(__ibmxl__) || defined(__xlc__) || defined(__xlC__)
@@ -6871,7 +6873,7 @@ else
CXX="$ac_cv_path_CXX"
fi
;;
- clang) if test -n "$ac_tool_prefix"; then
+ clang) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}clang++", so it can be a
program name with args.
set dummy ${ac_tool_prefix}clang++; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -6981,7 +6983,117 @@ else
CXX="$ac_cv_path_CXX"
fi
;;
- icc) if test -n "$ac_tool_prefix"; then
+ icx) if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}icpx", so it can be a program
name with args.
+set dummy ${ac_tool_prefix}icpx; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) case $CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CXX="$CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found
$as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac ;;
+esac
+fi
+CXX=$ac_cv_path_CXX
+if test -n "$CXX"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_CXX"; then
+ ac_pt_CXX=$CXX
+ # Extract the first word of "icpx", so it can be a program name with args.
+set dummy icpx; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) case $ac_pt_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a
path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found
$as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac ;;
+esac
+fi
+ac_pt_CXX=$ac_cv_path_ac_pt_CXX
+if test -n "$ac_pt_CXX"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
+printf "%s\n" "$ac_pt_CXX" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_CXX" = x; then
+ CXX="notfound"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not
prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host
triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_pt_CXX
+ fi
+else
+ CXX="$ac_cv_path_CXX"
+fi
+ ;;
+ icc) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}icpc", so it can be a program
name with args.
set dummy ${ac_tool_prefix}icpc; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -9129,7 +9241,7 @@ fi
LLVM_PROF_ERR=no
case "$ac_cv_cc_name" in
- clang)
+ clang|icx)
# Any changes made here should be reflected in the GCC+Darwin case below
PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
PGO_PROF_USE_FLAG="-fprofile-instr-use=\"\$(shell pwd)/code.profclangd\""
@@ -11415,6 +11527,10 @@ case "$ac_cv_cc_name" in
mpicc)
CFLAGS_NODIST="$CFLAGS_NODIST"
;;
+icx)
+ # ICX needs fp-model=precise (the default in clang) or floats behave badly
+ CFLAGS_NODIST="$CFLAGS_NODIST -ffp-model=precise"
+ ;;
icc)
# ICC needs -fp-model strict or floats behave badly
CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
@@ -26950,8 +27066,8 @@ esac
# rounding precision of 64 bits. For gcc/x86, we can fix this by
# using inline assembler to get and set the x87 FPU control word.
-# This inline assembler syntax may also work for suncc and icc,
-# so we try it on all platforms.
+# This inline assembler syntax works for icx and may also work for
+# suncc and icc, so we try it on all platforms.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc
inline assembler to get and set x87 control word" >&5
printf %s "checking whether we can use gcc inline assembler to get and set x87
control word... " >&6; }
diff --git a/configure.ac b/configure.ac
index a9c706f3c23cb1c..273a64814f9a1fd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1096,6 +1096,8 @@ AC_CACHE_CHECK([for CC compiler name], [ac_cv_cc_name], [
cat > conftest.c <<EOF
#if defined(__EMSCRIPTEN__)
emcc
+#elif defined(__INTEL_CLANG_COMPILER) || defined(__INTEL_LLVM_COMPILER)
+ icx
#elif defined(__INTEL_COMPILER) || defined(__ICC)
icc
#elif defined(__ibmxl__) || defined(__xlc__) || defined(__xlC__)
@@ -1145,8 +1147,9 @@ then
case "$ac_cv_cc_name" in
gcc) AC_PATH_TOOL([CXX], [g++], [notfound]) ;;
cc) AC_PATH_TOOL([CXX], [c++], [notfound]) ;;
- clang) AC_PATH_TOOL([CXX], [clang++], [notfound]) ;;
- icc) AC_PATH_TOOL([CXX], [icpc], [notfound]) ;;
+ clang) AC_PATH_TOOL([CXX], [clang++], [notfound]) ;;
+ icx) AC_PATH_TOOL([CXX], [icpx], [notfound]) ;;
+ icc) AC_PATH_TOOL([CXX], [icpc], [notfound]) ;;
esac
if test "$CXX" = "notfound"
then
@@ -2091,7 +2094,7 @@ fi
LLVM_PROF_ERR=no
case "$ac_cv_cc_name" in
- clang)
+ clang|icx)
# Any changes made here should be reflected in the GCC+Darwin case below
PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
PGO_PROF_USE_FLAG="-fprofile-instr-use=\"\$(shell pwd)/code.profclangd\""
@@ -2969,6 +2972,10 @@ case "$ac_cv_cc_name" in
mpicc)
CFLAGS_NODIST="$CFLAGS_NODIST"
;;
+icx)
+ # ICX needs fp-model=precise (the default in clang) or floats behave badly
+ CFLAGS_NODIST="$CFLAGS_NODIST -ffp-model=precise"
+ ;;
icc)
# ICC needs -fp-model strict or floats behave badly
CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
@@ -6345,8 +6352,8 @@ AX_C_FLOAT_WORDS_BIGENDIAN(
# rounding precision of 64 bits. For gcc/x86, we can fix this by
# using inline assembler to get and set the x87 FPU control word.
-# This inline assembler syntax may also work for suncc and icc,
-# so we try it on all platforms.
+# This inline assembler syntax works for icx and may also work for
+# suncc and icc, so we try it on all platforms.
AC_CACHE_CHECK([whether we can use gcc inline assembler to get and set x87
control word], [ac_cv_gcc_asm_for_x87], [
AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]