Hi!
I just gave this matter another think-through. I don't think we ever will be able to build an Emacs on an old system like 10.6.8 that will be able to use all the bells and whistles when executed on a new system. However, the other way around could, at some point in time, be possible.
In other words, one solution would be something like:
#ifdef NS_IMPL_COCOA
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12
if ([win respondsToSelector: @selector(setTabbingMode)])
[win setTabbingMode: NSWindowTabbingModeDisallowed]; #endif
#endif
This should not generate any warning in any context (gcc or clang, macOS or GNUStep). The resulting code will run correctly on the system it was built for, and it will run correctly on older systems. The only thing that doesn't work is when Emacs is built on an old system, features provided by newer OS versions aren't included.
-- Anders