> Apple’s naming is definitely confusing in this area!
> 
> In current SDKs, TARGET_OS_MAC means code is being generated for a Mac OS X 
> variant, 
> which covers OSX, IOS, Watch … ; to determine which kind of device, you have 
> to check the 
> specific define for that device - OSX corresponds to macOS, i.e. laptops, 
> desktops.
> 
> In older SDKs (specifically Xcode 3, for macOS Leopard (darwin 9) as 
> mentioned by Iain) 
> TARGET_OS_MAC means code is being generated for "Mac OS", i.e. laptops, 
> desktops as 
> above; TARGET_OS_OSX is undefined (as are TARGET_OS_IOS etc).
> 
> If we are compiling for macOS, using a current macOS SDK, then TARGET_OS_MAC 
> is
> set to 1 and TARGET_OS_OSX is set to 1. 
> 
> If we were compiling for iOS, using a current iOS SDK as supplied with 
> current Xcode, then 
> TARGET_OS_MAC would be set to 1, TARGET_OS_OSX would be set to 0, and 
> TARGET_OS_IOS would be set to 1.

OK so then the following is sufficient for our needs:

 #elif defined (__APPLE__)
       /* By default, macOS volumes are case-insensitive, iOS
          volumes are case-sensitive.  */
 #if TARGET_OS_IOS
        file_names_case_sensitive_cache = 1;
 #else
        file_names_case_sensitive_cache = 0;
 #endif
 #else /* Neither Windows nor Apple.  */
    file_names_case_sensitive_cache = 1;
 #endif

We want the default to be 0, and we only care about setting it to 1 on iOS for 
recent
SDKs, the case of an old SDK and iOS isn't interesting at this stage, so it's 
fine if we set
the var to 0 in this scenario.

Arno

Reply via email to