<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/e4083d1ee868617735a54725fa503ad19d595c3c">https://github.com/macports/macports-legacy-support/commit/e4083d1ee868617735a54725fa503ad19d595c3c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e4083d1ee868617735a54725fa503ad19d595c3c
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sat Jun 1 00:47:18 2024 -0700
<span style='display:block; white-space:pre;color:#404040;'> Add new header sdkversion.h
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This provides an internal header to set up conditionals related to the
</span><span style='display:block; white-space:pre;color:#404040;'> SDK version. No version flags are included yet, but these will be
</span><span style='display:block; white-space:pre;color:#404040;'> added as needed.
</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;'> Tested on 10.4-10.5 ppc, 10.5-10.6 ppc (i386 Rosetta), 10.4-10.6 i386,
</span><span style='display:block; white-space:pre;color:#404040;'> 10.4-12.x x86_64, and 11.x-14.x arm64. Tested against all 10.4-14.x
</span><span style='display:block; white-space:pre;color:#404040;'> SDKs, using the headerinfo manual test (from a subsequent commit).
</span><span style='display:block; white-space:pre;color:#404040;'> All target/SDK combinations where the SDK supports the CPU
</span><span style='display:block; white-space:pre;color:#404040;'> architecture work correctly, including all SDKs on Intel
</span><span style='display:block; white-space:pre;color:#404040;'> architectures. Only 10.4-10.6 SDKs support ppc, and only 11.x+ SDKs
</span><span style='display:block; white-space:pre;color:#404040;'> support arm64.
</span>---
include/MacportsLegacySupport.h | 4 +-
include/_macports_extras/sdkversion.h | 110 ++++++++++++++++++++++++++++++++++
2 files changed, 112 insertions(+), 2 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/MacportsLegacySupport.h b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 5867647..e4d6eed 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,4 +1,3 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> /*
* Copyright (c) 2018 Chris Jones <jonesc@macports.org>
* Copyright (c) 2019 Michael Dickens <michaelld@macports.org>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,7 +18,8 @@
</span> #ifndef _MACPORTS_LEGACYSUPPORTDEFS_H_
#define _MACPORTS_LEGACYSUPPORTDEFS_H_
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Not needed -- #include "AvailabilityMacros.h" */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Not needed directly -- #include <AvailabilityMacros.h> */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* But see <_macports_extras/sdkversion.h> */
</span>
/* C++ extern definitions */
#if defined(__cplusplus)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/_macports_extras/sdkversion.h b/include/_macports_extras/sdkversion.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..bdc3467
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/_macports_extras/sdkversion.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,110 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2024 Frederick H. G. Wright II <fw@fwright.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</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 _MACPORTS_SDKVERSION_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_SDKVERSION_H_
</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;'>+ * This header provides definitions related to the OS SDK version, for cases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * where behavior needs to depend on the include tree layout. The basic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * method for obtaining the SDK version is to use MAC_OS_X_VERSION_MAX_ALLOWED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * as defined in AvailabilityMacros.h, which is available in all SDKs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * There is, however, a complication in the rare and questionable case where
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the build is using an SDK version *older* than the build target. In this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * case, AvailabilityMacros.h forces ...MAX_ALLOWED to the target OS version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * (as indicated by MAC_OS_X_VERSION_MIN_REQUIRED), thereby not necessarily
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * correctly reflecting the SDK file contents.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * To get around this we:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 1) Define MAC_OS_X_VERSION_MIN_REQUIRED as the allowable minimum
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 2) #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 3) Set up our own flags based on ...MAX_ALLOWED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 4) Redefine ...MIN_REQUIRED and ...MAX_ALLOWED with the normal values
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Note that the fixup for ...MIN_REQUIRED is based on the compiler-supplied
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__, which may be undefined,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * but only on pre-10.5 systems. Since we don't support anything older than
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 10.4, we just assume 10.4 in that case, rather than the more elaborate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * logic in AvailabilityMacros.h that assumes 10.1 on ppc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * There's an additional complication if ...MAX_ALLOWED is already defined
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * initially. That means that either it was explicitly defined in some
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * fashion, or AvailabilityMacros.h was already included before. In this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * case, the above workaround doesn't work, so the best we can do is to take
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ...MAX_ALLOWED at face value and hope that it works.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THUS: If supporting the "older SDK" case is important, this header should
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * be included before anything that might include AvailabilityMacros.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * In the non-Apple case, we avoid AvailabilityMacros.h, and just define our
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * flags for the "minimally hackish" case.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * It would be maximally flexible if we could simply derive an SDK version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * parameter from the "honest" ...MAX_ALLOWED, but cpp has no way to do that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * and survive the possible redefinition of ...MAX_ALLOWED in step 4. Hence,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * all decisions related to the SDK version need to be made in step 3.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * NOTE: Some "mismatched SDK" configurations may produce compiler warnings.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * These are not the fault of this header, and usually aren't fatal unless
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * treated as errors.
</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;'>+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* First obtain MAC_OS_X_VERSION_MAX_ALLOWED, possibly unforced */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef __MPLS_NEED_MIN_REQUIRED_FIXUP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef MAC_OS_X_VERSION_MAX_ALLOWED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_NEED_MIN_REQUIRED_FIXUP 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Lowest allowable value is for 10.0 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define MAC_OS_X_VERSION_MIN_REQUIRED 1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Set up our flags here for any needed version thresholds */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Then correct our munging, if necessary */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __MPLS_NEED_MIN_REQUIRED_FIXUP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef MAC_OS_X_VERSION_MIN_REQUIRED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define MAC_OS_X_VERSION_MIN_REQUIRED \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define MAC_OS_X_VERSION_MIN_REQUIRED 1040
</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;'>+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_MIN_REQUIRED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef MAC_OS_X_VERSION_MAX_ALLOWED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_MIN_REQUIRED
</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;'>+#endif /* __MPLS_NEED_MIN_REQUIRED_FIXUP */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else /* !__APPLE__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* If non-Apple, just assume an "infinitely late" SDK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* !__APPLE__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_SDKVERSION_H_ */
</span></pre><pre style='margin:0'>
</pre>