On 24 October 2017 at 04:45, Programmingkid <programmingkidx@xxxxxxxxx> wrote: > I was operating under the assumption that MAC_OS_X_VERSION_MAX_ALLOWED > would equal the version of the host. It indicates the highest version of OSX whose features the program being compiled is allowed to use. That isn't necessarily the same as the highest version of OSX the SDK we're compiling against supports -- you can be building against a 10.9-aware SDK and tell it "only use features up to and including those on 10.7." > After making this little test program: You don't need to test this kind of thing, it is documented, and in general reading the documentation is more reliable and more informative than testing. > Is using MAC_OS_X_VERSION_MAX_ALLOWED not a reliable macro to > use to test for the version of the Mac OS? The ui/cocoa.m file > seems to use it and have no problems. QEMU's usage differs in two ways: (1) we just use the macros to #ifdef out code that would be trying to use functions that don't exist in the older versions, which is exactly what it's intended for. We don't try to implement our own versions of those functions under the same names (2) we control QEMU's build process and so we can guarantee that we aren't using the "build on a 10.9 SDK but make sure you don't use features that aren't in 10.7" functionality. libfdt is a library that can be included in many other programs, so we can't make that assumption. >> It uses the clang 'attribute availability' syntax: >> https://clang.llvm.org/docs/AttributeReference.html#availability > > This feature appears to be a clang/gcc-only feature. This was a reply to Stefan's question about how the OSX availability headers are implemented. (As it happens the OSX headers do have an "if not clang then just #define away the availability attributes" codepath.) thanks -- PMM -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html