<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.

</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/d71139d5f2bd05fc42ea1045e45b06bdbc9bb2a5">https://github.com/macports/macports-legacy-support/commit/d71139d5f2bd05fc42ea1045e45b06bdbc9bb2a5</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d71139d5f2bd05fc42ea1045e45b06bdbc9bb2a5
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sat Apr 5 18:40:19 2025 -0700

<span style='display:block; white-space:pre;color:#404040;'>    TargetConditionals.h: Fix bugs with SDK 15 and GCC 4.2.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See the comment.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'>    All tests pass on all platforms.
</span>---
 include/TargetConditionals.h | 38 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/TargetConditionals.h b/include/TargetConditionals.h
</span><span style='display:block; white-space:pre;color:#808080;'>index afd5b9d..13608f9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/TargetConditionals.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/TargetConditionals.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,11 +14,45 @@
</span>  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#include_next <TargetConditionals.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> #ifndef __MPLS_TARGETCONDITIONALS__
 #define __MPLS_TARGETCONDITIONALS__
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * There are instances in the Apple header of the forms:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *   #if !defined(__has_extension) || !__has_extension(define_target_os_macros)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *   #if defined(__has_builtin) && __has_builtin(__is_target_arch)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This doesn't work when the first macro is undefined, since the second
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * macro is only correctly parseable when the first macro is defined.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This causes failures when building with GCC 4.2.  We get around it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * by temporarily defining the first macro as a dummy during the include_next
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * in this situation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Since TargetConditionals.h doesn't include any other headers, this hack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * only applies to its own processing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef __has_extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_HAS_EXTENSION_UNDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __has_extension(x) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef __has_builtin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_HAS_BUILTIN_UNDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __has_builtin(x) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <TargetConditionals.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __MPLS_HAS_EXTENSION_UNDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef __MPLS_HAS_EXTENSION_UNDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef __has_extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __MPLS_HAS_BUILTIN_UNDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef __MPLS_HAS_BUILTIN_UNDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef __has_builtin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /*
  * Provide defaults for target macros not defined in earlier SDKs.
  * Defaulting to zero is OK in almost all cases, since anything which needs
</pre><pre style='margin:0'>

</pre>