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