> 
>> 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.

I can’t speak for Darwin maintainers, so I’ll leave it to Iain to comment on 
this suggestion.

Reply via email to