◐ Shell
clean mode source ↗

platform_triplet.c uses possibly undefined TARGET_OS_* macros

Bug report

Bug description:

The symptom is:

configure:6892: checking for the platform triplet based on compiler characteristics
configure:6900: result: none

which of course leads to all kinds of problems later in the build. The problem is that platform_triplet.c uses TARGET_OS_IOS, TARGET_OS_SIMULATOR and TARGET_OS_OSX without checking if they are defined. While this is valid according to the C standard with undefined macros evaluating to 0, it's a problem for two reasons: Older macOS SDKs don't define these, and the code assumes that TARGET_OS_OSX being false means it's not building for macOS, and secondly some clang versions will error if you use any macro starting with TARGET_OS_ without checking if it is defined.

CPython versions tested on:

3.13

Operating systems tested on:

macOS

Linked PRs