Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Comment thread
chris-eibl marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Fix truncated :data:`sys.version` in the case of clang-cl versions 22 or newer
on Windows. Also fixes the Windows on Arm case, where the Microsoft
compiler was reported instead of clang. Patch by Chris Eibl.
18 changes: 15 additions & 3 deletions PC/pyconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,17 +148,24 @@ WIN32 is still required for the locale module.
#define MS_WIN64
#endif

#ifdef __clang__
#define _Py_CLANG_COMPILER(platform) ( \
"[Clang " _Py_STRINGIZE(__clang_major__) "." _Py_STRINGIZE(__clang_minor__) \
"." _Py_STRINGIZE(__clang_patchlevel__) " " platform \
" with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
#endif

/* set the _Py_COMPILER and support tier
*
* win_amd64 MSVC (x86_64-pc-windows-msvc): 1
* win32 MSVC (i686-pc-windows-msvc): 1
* win_arm64 MSVC (aarch64-pc-windows-msvc): 2
* other archs and ICC: 0
* other archs and clang-cl/ICC: 0
*/
#ifdef MS_WIN64
#if defined(_M_X64) || defined(_M_AMD64)
#if defined(__clang__)
#define _Py_COMPILER ("[Clang " __clang_version__ "] 64 bit (AMD64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
#define _Py_COMPILER _Py_CLANG_COMPILER("64 bit (AMD64)")
#define PY_SUPPORT_TIER 0
#elif defined(__INTEL_COMPILER)
#define _Py_COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
Expand All @@ -169,8 +176,13 @@ WIN32 is still required for the locale module.
#endif /* __clang__ */
#define PYD_PLATFORM_TAG "win_amd64"
#elif defined(_M_ARM64)
#if defined(__clang__)
#define _Py_COMPILER _Py_CLANG_COMPILER("64 bit (ARM64)")
#define PY_SUPPORT_TIER 0
#else
#define _Py_COMPILER _Py_PASTE_VERSION("64 bit (ARM64)")
#define PY_SUPPORT_TIER 2
#endif /* __clang__ */
#define PYD_PLATFORM_TAG "win_arm64"
#else
#define _Py_COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
Expand Down Expand Up @@ -220,7 +232,7 @@ typedef _W64 int Py_ssize_t;
#if defined(MS_WIN32) && !defined(MS_WIN64)
#if defined(_M_IX86)
#if defined(__clang__)
#define _Py_COMPILER ("[Clang " __clang_version__ "] 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
#define _Py_COMPILER _Py_CLANG_COMPILER("32 bit (Intel)")
#define PY_SUPPORT_TIER 0
#elif defined(__INTEL_COMPILER)
#define _Py_COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
Expand Down
Loading